From 25fc022373664f9276615d22ec98b137eb98d438 Mon Sep 17 00:00:00 2001 From: Richard van Heest Date: Wed, 12 Feb 2020 14:02:42 +0100 Subject: [PATCH] EASY-2607: convert relations with xsi-type (#46) --- .../language/ddm/api/Ddm2EmdHandlerMap.java | 45 +++++++++++++++++++ .../handlertypes/BasicIdentifierHandler.java | 17 ++++++- .../relationhandlers/DcRelationHandler.java | 21 ++++++++- .../TermsConformsToHandler.java | 9 ++++ .../TermsHasFormatHandler.java | 9 ++++ .../relationhandlers/TermsHasPartHandler.java | 9 ++++ .../TermsHasVersionHandler.java | 9 ++++ .../TermsIsFormatOfHandler.java | 9 ++++ .../TermsIsPartOfHandler.java | 9 ++++ .../TermsIsReferencedByHandler.java | 9 ++++ .../TermsIsReplacedByHandler.java | 9 ++++ .../TermsIsRequiredByHandler.java | 9 ++++ .../TermsIsVersionOfHandler.java | 9 ++++ .../TermsReferencesHandler.java | 9 ++++ .../TermsReplacesHandler.java | 9 ++++ .../TermsRequiresHandler.java | 9 ++++ .../ddm/api/Ddm2EmdCrosswalkTest.java | 1 + .../ddm2emdCrosswalk/relations.input.xml | 25 +++++++++++ .../ddm2emdCrosswalk/relations.output.xml | 43 ++++++++++++++++++ 19 files changed, 267 insertions(+), 2 deletions(-) create mode 100644 src/test/resources/ddm2emdCrosswalk/relations.input.xml create mode 100644 src/test/resources/ddm2emdCrosswalk/relations.output.xml diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdHandlerMap.java b/src/main/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdHandlerMap.java index 7b6efcc9..be3d0061 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdHandlerMap.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdHandlerMap.java @@ -240,6 +240,51 @@ private void putRelationHandlers() { map.put("/dcterms:isFormatOf", new TermsIsFormatOfHandler()); map.put("/dcterms:hasFormat", new TermsHasFormatHandler()); + map.put("ISBN/dcterms:relation", new DcRelationHandler("ISBN")); + map.put("ISBN/dcterms:conformsTo", new TermsConformsToHandler("ISBN")); + map.put("ISBN/dcterms:isVersionOf", new TermsIsVersionOfHandler("ISBN")); + map.put("ISBN/dcterms:hasVersion", new TermsHasVersionHandler("ISBN")); + map.put("ISBN/dcterms:isReplacedBy", new TermsIsReplacedByHandler("ISBN")); + map.put("ISBN/dcterms:replaces", new TermsReplacesHandler("ISBN")); + map.put("ISBN/dcterms:isRequiredBy", new TermsIsRequiredByHandler("ISBN")); + map.put("ISBN/dcterms:requires", new TermsRequiresHandler("ISBN")); + map.put("ISBN/dcterms:isPartOf", new TermsIsPartOfHandler("ISBN")); + map.put("ISBN/dcterms:hasPart", new TermsHasPartHandler("ISBN")); + map.put("ISBN/dcterms:isReferencedBy", new TermsIsReferencedByHandler("ISBN")); + map.put("ISBN/dcterms:references", new TermsReferencesHandler("ISBN")); + map.put("ISBN/dcterms:isFormatOf", new TermsIsFormatOfHandler("ISBN")); + map.put("ISBN/dcterms:hasFormat", new TermsHasFormatHandler("ISBN")); + + map.put("ISSN/dcterms:relation", new DcRelationHandler("ISSN")); + map.put("ISSN/dcterms:conformsTo", new TermsConformsToHandler("ISSN")); + map.put("ISSN/dcterms:isVersionOf", new TermsIsVersionOfHandler("ISSN")); + map.put("ISSN/dcterms:hasVersion", new TermsHasVersionHandler("ISSN")); + map.put("ISSN/dcterms:isReplacedBy", new TermsIsReplacedByHandler("ISSN")); + map.put("ISSN/dcterms:replaces", new TermsReplacesHandler("ISSN")); + map.put("ISSN/dcterms:isRequiredBy", new TermsIsRequiredByHandler("ISSN")); + map.put("ISSN/dcterms:requires", new TermsRequiresHandler("ISSN")); + map.put("ISSN/dcterms:isPartOf", new TermsIsPartOfHandler("ISSN")); + map.put("ISSN/dcterms:hasPart", new TermsHasPartHandler("ISSN")); + map.put("ISSN/dcterms:isReferencedBy", new TermsIsReferencedByHandler("ISSN")); + map.put("ISSN/dcterms:references", new TermsReferencesHandler("ISSN")); + map.put("ISSN/dcterms:isFormatOf", new TermsIsFormatOfHandler("ISSN")); + map.put("ISSN/dcterms:hasFormat", new TermsHasFormatHandler("ISSN")); + + map.put("NWO-PROJECTNR/dcterms:relation", new DcRelationHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:conformsTo", new TermsConformsToHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:isVersionOf", new TermsIsVersionOfHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:hasVersion", new TermsHasVersionHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:isReplacedBy", new TermsIsReplacedByHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:replaces", new TermsReplacesHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:isRequiredBy", new TermsIsRequiredByHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:requires", new TermsRequiresHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:isPartOf", new TermsIsPartOfHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:hasPart", new TermsHasPartHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:isReferencedBy", new TermsIsReferencedByHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:references", new TermsReferencesHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:isFormatOf", new TermsIsFormatOfHandler("NWO-PROJECTNR")); + map.put("NWO-PROJECTNR/dcterms:hasFormat", new TermsHasFormatHandler("NWO-PROJECTNR")); + map.put("/ddm:relation", new DdmRelationHandler()); map.put("/ddm:conformsTo", new DdmConformsToHandler()); map.put("/ddm:isVersionOf", new DdmIsVersionOfHandler()); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/handlertypes/BasicIdentifierHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/handlertypes/BasicIdentifierHandler.java index 167810c7..7e0516dc 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/handlertypes/BasicIdentifierHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/handlertypes/BasicIdentifierHandler.java @@ -23,11 +23,26 @@ import org.xml.sax.SAXException; public abstract class BasicIdentifierHandler extends CrosswalkHandler { + + private final String scheme; + + public BasicIdentifierHandler() { + this(null); + } + + public BasicIdentifierHandler(String scheme) { + super(); + this.scheme = scheme; + } + protected BasicIdentifier createIdentifier(final String uri, final String localName) throws SAXException { final String value = getCharsSinceStart().trim(); if (value.length() != 0) { try { - return new BasicIdentifier(value.trim()); + BasicIdentifier identifier = new BasicIdentifier(value.trim()); + if (scheme != null) + identifier.setScheme(scheme); + return identifier; } catch (final InvalidLanguageTokenException e) { error(e.getMessage()); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/DcRelationHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/DcRelationHandler.java index 457e12a2..3c5ec629 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/DcRelationHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/DcRelationHandler.java @@ -16,14 +16,33 @@ package nl.knaw.dans.pf.language.ddm.relationhandlers; import nl.knaw.dans.pf.language.ddm.handlertypes.BasicStringHandler; +import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; import nl.knaw.dans.pf.language.emd.types.BasicString; import org.xml.sax.SAXException; public class DcRelationHandler extends BasicStringHandler { + + private final String scheme; + + public DcRelationHandler() { + this(null); + } + + public DcRelationHandler(String scheme) { + this.scheme = scheme; + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicString relation = createBasicString(uri, localName); - if (relation != null) + if (relation != null) { + this.setScheme(relation); getTarget().getEmdRelation().getDcRelation().add(relation); + } + } + + protected void setScheme(BasicString relation) { + if (scheme != null) + relation.setScheme(scheme); } } diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsConformsToHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsConformsToHandler.java index b6596daa..d05edc52 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsConformsToHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsConformsToHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsConformsToHandler extends BasicIdentifierHandler { + + public TermsConformsToHandler() { + this(null); + } + + public TermsConformsToHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasFormatHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasFormatHandler.java index 25f7cdee..36843a72 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasFormatHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasFormatHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsHasFormatHandler extends BasicIdentifierHandler { + + public TermsHasFormatHandler() { + this(null); + } + + public TermsHasFormatHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasPartHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasPartHandler.java index aabb2b94..7f434ade 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasPartHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasPartHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsHasPartHandler extends BasicIdentifierHandler { + + public TermsHasPartHandler() { + this(null); + } + + public TermsHasPartHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasVersionHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasVersionHandler.java index f868cc6a..2e2c741d 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasVersionHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsHasVersionHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsHasVersionHandler extends BasicIdentifierHandler { + + public TermsHasVersionHandler() { + this(null); + } + + public TermsHasVersionHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsFormatOfHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsFormatOfHandler.java index e965666d..4faa7413 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsFormatOfHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsFormatOfHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsIsFormatOfHandler extends BasicIdentifierHandler { + + public TermsIsFormatOfHandler() { + this(null); + } + + public TermsIsFormatOfHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsPartOfHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsPartOfHandler.java index 9d4dde70..e1010485 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsPartOfHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsPartOfHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsIsPartOfHandler extends BasicIdentifierHandler { + + public TermsIsPartOfHandler() { + this(null); + } + + public TermsIsPartOfHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReferencedByHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReferencedByHandler.java index a424f952..29ea9b4d 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReferencedByHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReferencedByHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsIsReferencedByHandler extends BasicIdentifierHandler { + + public TermsIsReferencedByHandler() { + this(null); + } + + public TermsIsReferencedByHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReplacedByHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReplacedByHandler.java index 0f699b98..3dfc31c3 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReplacedByHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsReplacedByHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsIsReplacedByHandler extends BasicIdentifierHandler { + + public TermsIsReplacedByHandler() { + this(null); + } + + public TermsIsReplacedByHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsRequiredByHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsRequiredByHandler.java index 635566cf..523079df 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsRequiredByHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsRequiredByHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsIsRequiredByHandler extends BasicIdentifierHandler { + + public TermsIsRequiredByHandler() { + this(null); + } + + public TermsIsRequiredByHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsVersionOfHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsVersionOfHandler.java index ebc67b36..cda7f88e 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsVersionOfHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsIsVersionOfHandler.java @@ -21,6 +21,15 @@ import org.xml.sax.SAXException; public class TermsIsVersionOfHandler extends BasicIdentifierHandler { + + public TermsIsVersionOfHandler() { + this(null); + } + + public TermsIsVersionOfHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReferencesHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReferencesHandler.java index 7def186e..a3c268a0 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReferencesHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReferencesHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsReferencesHandler extends BasicIdentifierHandler { + + public TermsReferencesHandler() { + this(null); + } + + public TermsReferencesHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReplacesHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReplacesHandler.java index 3d1c1130..bab0071b 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReplacesHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsReplacesHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsReplacesHandler extends BasicIdentifierHandler { + + public TermsReplacesHandler() { + this(null); + } + + public TermsReplacesHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsRequiresHandler.java b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsRequiresHandler.java index 5924a525..04e65799 100644 --- a/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsRequiresHandler.java +++ b/src/main/java/nl/knaw/dans/pf/language/ddm/relationhandlers/TermsRequiresHandler.java @@ -21,6 +21,15 @@ import nl.knaw.dans.pf.language.emd.types.BasicIdentifier; public class TermsRequiresHandler extends BasicIdentifierHandler { + + public TermsRequiresHandler() { + this(null); + } + + public TermsRequiresHandler(String scheme) { + super(scheme); + } + @Override public void finishElement(final String uri, final String localName) throws SAXException { final BasicIdentifier relation = createIdentifier(uri, localName); diff --git a/src/test/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdCrosswalkTest.java b/src/test/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdCrosswalkTest.java index 5c3ae01f..849ffda9 100644 --- a/src/test/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdCrosswalkTest.java +++ b/src/test/java/nl/knaw/dans/pf/language/ddm/api/Ddm2EmdCrosswalkTest.java @@ -101,6 +101,7 @@ public static Collection data() { { "languageWithSchemeAndIdToEmdCode" }, { "license" }, { "normalRelation" }, + { "relations" }, { "SMP.char" }, { "SMP.char.many" }, { "spatialBox" }, diff --git a/src/test/resources/ddm2emdCrosswalk/relations.input.xml b/src/test/resources/ddm2emdCrosswalk/relations.input.xml new file mode 100644 index 00000000..6b525e23 --- /dev/null +++ b/src/test/resources/ddm2emdCrosswalk/relations.input.xml @@ -0,0 +1,25 @@ + + + + 10.17026/test-doi-related-identifier + + urn:nbn:nl:ui:test-urn-related-identifier + + my-isbn-related-identifier + my-issn-related-identifier + my-nwo-related-identifier + my own related identifier + Google + 10.17026/test-doi-alternative-identifier + + urn:nbn:nl:ui:test-urn-alternative-identifier + + my-isbn-alternative-identifier + my-issn-alternative-identifier + my-nwo-alternative-identifier + my own alternative identifier + + diff --git a/src/test/resources/ddm2emdCrosswalk/relations.output.xml b/src/test/resources/ddm2emdCrosswalk/relations.output.xml new file mode 100644 index 00000000..633425dc --- /dev/null +++ b/src/test/resources/ddm2emdCrosswalk/relations.output.xml @@ -0,0 +1,43 @@ + + + + my-issn-related-identifier + my-isbn-related-identifier + my own related identifier + my-nwo-related-identifier + my-isbn-alternative-identifier + my-issn-alternative-identifier + my-nwo-alternative-identifier + my own alternative identifier + + Google + https://www.google.com + + + urn:nbn:nl:ui:test-urn-related-identifier + http://persistent-identifier.nl/urn:nbn:nl:ui:test-urn-related-identifier + + + 10.17026/test-doi-related-identifier + https://doi.org/10.17026/test-doi-related-identifier + + + 10.17026/test-doi-alternative-identifier + https://doi.org/10.17026/test-doi-alternative-identifier + + + urn:nbn:nl:ui:test-urn-alternative-identifier + http://persistent-identifier.nl/urn:nbn:nl:ui:test-urn-alternative-identifier + + + + + ANY_DISCIPLINE + NOT_IMPORTED + + + +