From 92dce7967239856628a5b85262e52b3fbfeacac7 Mon Sep 17 00:00:00 2001 From: Thorge Petersen <petersen@rz.uni-kiel.de> Date: Thu, 4 Jan 2024 13:45:36 +0100 Subject: [PATCH] Improved handling of unknown licenses --- .../opendata/csw2dcat/MDMetadata2Dataset.java | 41 +++++++++++-------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java b/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java index 73150f5..5684e53 100644 --- a/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java +++ b/src/main/java/de/landsh/opendata/csw2dcat/MDMetadata2Dataset.java @@ -543,34 +543,41 @@ public class MDMetadata2Dataset { private void addLicenseInformation(Resource resource, List<Node> otherLegalConstraints) { final JSONObject licenseInformation = findLicenseInformation(otherLegalConstraints); - + if (licenseInformation != null) { resource.addLiteral(DCATAPde.licenseAttributionByText, licenseInformation.getString("quelle")); + if (licenseInformation.has("url")) { - // Some publishers specify the licence as the URL and not the id. String licenseURL = licenseInformation.getString("url"); + if (licenseURL.startsWith("http://dcat-ap.de/def/licenses/")) { - resource.addProperty(DCTerms.license, model.createResource(licenseInformation.getString("url"))); + resource.addProperty(DCTerms.license, model.createResource(licenseURL)); } else { - final JSONObject license = url2license.get(licenseURL); - if (license != null && license.has("uri")) { - resource.addProperty(DCTerms.license, model.createResource(license.getString("uri"))); - } else { - log.info("Unknown license: {}", licenseURL); - } + final JSONObject license = url2license.get(licenseURL); + + if (license != null && license.has("uri")) { + resource.addProperty(DCTerms.license, model.createResource(license.getString("uri"))); + } else { + log.info("Unknown license: {}", licenseURL); + handleUnknownLicense(resource, licenseInformation.getString("id")); + } } } else { - String licenseId = licenseInformation.getString("id"); - try { - licenseId = URLEncoder.encode(licenseId, "UTF-8"); - } catch (UnsupportedEncodingException e) { - log.info("Unable to encode licenseId: {}", e); - } - resource.addProperty(DCTerms.license, model.createResource("http://dcat-ap.de/def/licenses/" + licenseId)); + handleUnknownLicense(resource, licenseInformation.getString("id")); } } } - + + private void handleUnknownLicense(Resource resource, String licenseId) { + try { + licenseId = URLEncoder.encode(licenseId, "UTF-8"); + resource.addProperty(DCTerms.license, model.createResource("http://dcat-ap.de/def/licenses/" + licenseId)); + log.info("Falling back to: {}", licenseId); + } catch (UnsupportedEncodingException e) { + log.info("Unable to encode licenseId: {}", e); + } + } + private Resource guessFormat(String url) { final String lowerCaseURL = url.toLowerCase(); if (lowerCaseURL.contains("service=wms")) { -- GitLab