diff --git a/dnet-ariadneplus-graphdb-publisher/src/main/resources/eu/dnetlib/ariadneplus/provenance/mapping-to-pav.ntriples b/dnet-ariadneplus-graphdb-publisher/src/main/resources/eu/dnetlib/ariadneplus/provenance/mapping-to-pav.ntriples new file mode 100644 index 0000000..41e6db0 --- /dev/null +++ b/dnet-ariadneplus-graphdb-publisher/src/main/resources/eu/dnetlib/ariadneplus/provenance/mapping-to-pav.ntriples @@ -0,0 +1,7 @@ + +# the triples to add to the provenance graph https://ariadne-infrastructure.eu/datasourceApis + + a rdf:Property . + a rdf:Property . + . + . diff --git a/dnet-ariadneplus/src/main/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNode.java b/dnet-ariadneplus/src/main/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNode.java index c6bd89c..7217347 100644 --- a/dnet-ariadneplus/src/main/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNode.java +++ b/dnet-ariadneplus/src/main/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNode.java @@ -167,7 +167,7 @@ public class X3MTransformAriadnePlusJobNode extends AsyncJobNode { } - private void prepareXpathSelectors() throws SaxonApiException { + protected void prepareXpathSelectors() throws SaxonApiException { Map namespaces = Maps.newHashMap(); namespaces.put("oai", OAI_NAMESPACE_URI); namespaces.put("dri", DRI_NAMESPACE_URI); @@ -178,7 +178,7 @@ public class X3MTransformAriadnePlusJobNode extends AsyncJobNode { } - private String extractFromRecord(final String record, final XPathSelector xPathSelector) { + protected String extractFromRecord(final String record, final XPathSelector xPathSelector) { try { return this.saxonHelper.help().setSerializerProperty(Property.OMIT_XML_DECLARATION, "yes").evaluateSingleAsString(record, xPathSelector); } catch (SaxonApiException e) { @@ -266,5 +266,44 @@ public class X3MTransformAriadnePlusJobNode extends AsyncJobNode { return mappings; } - + + public XPathSelector getXpathSelectorMetadata() { + return xpathSelectorMetadata; + } + + public void setXpathSelectorMetadata(XPathSelector xpathSelectorMetadata) { + this.xpathSelectorMetadata = xpathSelectorMetadata; + } + + public XPathSelector getXpathSelectorHeader() { + return xpathSelectorHeader; + } + + public void setXpathSelectorHeader(XPathSelector xpathSelectorHeader) { + this.xpathSelectorHeader = xpathSelectorHeader; + } + + public XPathSelector getXpathSelectorFooter() { + return xpathSelectorFooter; + } + + public void setXpathSelectorFooter(XPathSelector xpathSelectorFooter) { + this.xpathSelectorFooter = xpathSelectorFooter; + } + + public XPathSelector getXpathSelectorObjIdentifier() { + return xpathSelectorObjIdentifier; + } + + public void setXpathSelectorObjIdentifier(XPathSelector xpathSelectorObjIdentifier) { + this.xpathSelectorObjIdentifier = xpathSelectorObjIdentifier; + } + + public SaxonHelper getSaxonHelper() { + return saxonHelper; + } + + public void setSaxonHelper(SaxonHelper saxonHelper) { + this.saxonHelper = saxonHelper; + } } diff --git a/dnet-ariadneplus/src/main/resources/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/TransformationRuleDSResourceType/ARIADNE_Policy.xml b/dnet-ariadneplus/src/main/resources/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/TransformationRuleDSResourceType/ARIADNE_Policy.xml index 6039b49..587d860 100644 --- a/dnet-ariadneplus/src/main/resources/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/TransformationRuleDSResourceType/ARIADNE_Policy.xml +++ b/dnet-ariadneplus/src/main/resources/eu/dnetlib/bootstrap/profiles/TransformationRuleDSResources/TransformationRuleDSResourceType/ARIADNE_Policy.xml @@ -20,142 +20,142 @@ - + Collection/{term} - + Collection/{provider}/{term} - + Resource/{term} - + Resource/{provider}/{term} - + Object/{resource}-{term} - + Object/{arg1}/{arg2} - + Resource {resource} is about object {term} - + Identifier/{term} - > + > Document/{term} - + Document/{provider}/{term} - + Event/{resource}-{term} - + Event/{arg1}/{arg2} - + Event/{arg1}/{arg2}/{arg3} - + Resource {resource} is about event {term} - + Time-Span/{term} - + Time-Span/{term} - + Place/{term} - + Place/{arg1}/{arg2} - + Agent/{term} - + Agent/{term} - + Person/{term} - + Organisation/{term} - + Concept/{term} - + Concept/{scheme}/{term} - + Concept/{db}/{scheme}/{term} - + Concept/{scheme}/{term} - + {term} - + {level1}/{term} - + {level1}/{level2}/{term} - + {label} - + {label} {text} - + - + - - - - - + + + + + - - - - - - - + + + + + + + ]]> diff --git a/dnet-ariadneplus/src/test/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNodeTest.java b/dnet-ariadneplus/src/test/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNodeTest.java index 9658cf4..5b13637 100644 --- a/dnet-ariadneplus/src/test/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNodeTest.java +++ b/dnet-ariadneplus/src/test/java/eu/dnetlib/ariadneplus/workflows/nodes/X3MTransformAriadnePlusJobNodeTest.java @@ -1,7 +1,13 @@ package eu.dnetlib.ariadneplus.workflows.nodes; +import eu.dnetlib.miscutils.functional.xml.SaxonHelper; +import net.sf.saxon.s9api.SaxonApiException; +import org.apache.commons.io.IOUtils; +import org.junit.Before; import org.junit.Test; +import org.springframework.core.io.ClassPathResource; +import java.io.IOException; import java.time.Duration; import java.time.LocalDateTime; @@ -12,7 +18,7 @@ import java.time.LocalDateTime; */ public class X3MTransformAriadnePlusJobNodeTest { - private X3MTransformAriadnePlusJobNode transformJob = new X3MTransformAriadnePlusJobNode(); + private X3MTransformAriadnePlusJobNode transformJob; private String header = "\n" + " ariadne_mock::0000023f507999464aa2b78875b7e5d6\n" + " 2420500\n" @@ -123,6 +129,13 @@ public class X3MTransformAriadnePlusJobNodeTest { + " \n" + " "; + @Before + public void setup() throws SaxonApiException { + transformJob = new X3MTransformAriadnePlusJobNode(); + SaxonHelper saxonHelper = new SaxonHelper(); + transformJob.setSaxonHelper(saxonHelper); + transformJob.prepareXpathSelectors(); + } @Test public void testBuildXML(){ LocalDateTime now = LocalDateTime.now(); @@ -131,4 +144,17 @@ public class X3MTransformAriadnePlusJobNodeTest { System.out.println("Building XML took:"+ Duration.between(now, end).toMillis()); System.out.println(res); } + + @Test + public void testGetMetadataBlock() throws IOException, SaxonApiException { + String record = getString("/eu/dnetlib/x3m/dime-full.xml"); + String md = transformJob.extractFromRecord(record, transformJob.getXpathSelectorMetadata()); + System.out.println(md); + } + + private String getString(final String classpath) throws IOException { + final ClassPathResource resource = new ClassPathResource(classpath); + return IOUtils.toString(resource.getInputStream(), "UTF-8"); + } + } diff --git a/dnet-ariadneplus/src/test/java/eu/dnetlib/x3m/ApplyX3MappingTest.java b/dnet-ariadneplus/src/test/java/eu/dnetlib/x3m/ApplyX3MappingTest.java index dc69730..bd2390b 100644 --- a/dnet-ariadneplus/src/test/java/eu/dnetlib/x3m/ApplyX3MappingTest.java +++ b/dnet-ariadneplus/src/test/java/eu/dnetlib/x3m/ApplyX3MappingTest.java @@ -44,6 +44,19 @@ public class ApplyX3MappingTest { x3mEngine.execute(); } + @Test + public void testDime() throws MalformedURLException { + X3MLEngineFactory x3mEngine = X3MLEngineFactory.create() + .withMappings(new URL("https://mapping.d4science.org/3MEditor/Services?id=697&output=text/xml&method=export")) + .withVerboseLogging() + //.withGeneratorPolicy(new URL("https://mapping.d4science.org/3MEditor/FetchBinFile?type=generator_link&file=ARIADNEplusGeneratorPolicy_v1.8___21-04-2021112747___12811.xml")) + .withGeneratorPolicy(getInputStreamFromClasspath("/eu/dnetlib/x3m/ariadne_policy.xml")) + .withInput(getInputStreamFromClasspath("/eu/dnetlib/x3m/dime.xml")) + .withOutput(System.out, X3MLEngineFactory.OutputFormat.RDF_XML); + x3mEngine.execute(); + } + + public void doBasicTest(String policyPath, String recordPath) throws IOException { String g = getString(policyPath); diff --git a/dnet-ariadneplus/src/test/resources/ariadne_policy.xml b/dnet-ariadneplus/src/test/resources/ariadne_policy.xml index 8a44a7d..39d5316 100644 --- a/dnet-ariadneplus/src/test/resources/ariadne_policy.xml +++ b/dnet-ariadneplus/src/test/resources/ariadne_policy.xml @@ -1,40 +1,87 @@ - + + + + + in the x3ml define --> - + Collection/{term} + + Collection/{provider}/{term} + Resource/{term} + + Resource/{provider}/{term} + + + Object/{resource}-{term} + + Object/{arg1}/{arg2} + + - Resource {resource} is about {term} + Resource {resource} is about object {term} Identifier/{term} - - Event/{term} + > + Document/{term} + + + + Document/{provider}/{term} + + + + Event/{resource}-{term} + + + Event/{arg1}/{arg2} + + + Event/{arg1}/{arg2}/{arg3} + + + Resource {resource} is about event {term} Time-Span/{term} + + Time-Span/{term} + Place/{term} - + + Place/{arg1}/{arg2} + + Agent/{term} + + Agent/{term} + + + Person/{term} + + + Organisation/{term} + Concept/{term} @@ -43,6 +90,14 @@ Concept/{scheme}/{term} + + Concept/{db}/{scheme}/{term} + + + + Concept/{scheme}/{term} + + {term} @@ -80,5 +135,12 @@ + + + + + + + - \ No newline at end of file + diff --git a/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/ariadne_policy.xml b/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/ariadne_policy.xml index 8a44a7d..39d5316 100644 --- a/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/ariadne_policy.xml +++ b/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/ariadne_policy.xml @@ -1,40 +1,87 @@ - + + + + + in the x3ml define --> - + Collection/{term} + + Collection/{provider}/{term} + Resource/{term} + + Resource/{provider}/{term} + + + Object/{resource}-{term} + + Object/{arg1}/{arg2} + + - Resource {resource} is about {term} + Resource {resource} is about object {term} Identifier/{term} - - Event/{term} + > + Document/{term} + + + + Document/{provider}/{term} + + + + Event/{resource}-{term} + + + Event/{arg1}/{arg2} + + + Event/{arg1}/{arg2}/{arg3} + + + Resource {resource} is about event {term} Time-Span/{term} + + Time-Span/{term} + Place/{term} - + + Place/{arg1}/{arg2} + + Agent/{term} + + Agent/{term} + + + Person/{term} + + + Organisation/{term} + Concept/{term} @@ -43,6 +90,14 @@ Concept/{scheme}/{term} + + Concept/{db}/{scheme}/{term} + + + + Concept/{scheme}/{term} + + {term} @@ -80,5 +135,12 @@ + + + + + + + - \ No newline at end of file + diff --git a/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/dime-full.xml b/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/dime-full.xml new file mode 100644 index 0000000..681ddf5 --- /dev/null +++ b/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/dime-full.xml @@ -0,0 +1,79 @@ + + + + aarhus_dime_::0002e4a6fbda2154d6bdde6d7453b77e + oai:metaldetektorfund.dk:fund/?dimeid=71394 + 2021-10-25T11:15:09.361+02:00 + aarhus_dime_ + DIME - Aarhus University + api_________::ariadne_plus::aarhusdime::oai + oai:metaldetektorfund.dk:fund/?dimeid=71394 + 2021-07-29T14:36:49Z + + + + 71394 + https://www.metaldetektorfund.dk/fund/?dimeid=71394 + https://www.metaldetektorfund.dk/wiki/dime.find.coin.viking.dirham + Dirhem + Dirhemklip m. probérmærker + + + http://vocab.getty.edu/aat/300037258 + DIRHAMS + exact match + + + Vikingetid + https://www.metaldetektorfund.dk/wiki/CYVX + http://n2t.net/ark:/99152/p0r8d9c3hq8 + 750 + 1066 + + + Ærø Municipality + EPSG 4326 + 10 + 10.5 + 54.5 + 55 + 0.5 + + + Sølv + https://www.metaldetektorfund.dk/wiki/dime.material.silver + http://vocab.getty.edu/page/aat/300011029 + SILVER (METAL) + exact + + + + + + + + https://www.metaldetektorfund.dk/fundbilleder/5e8/5e89c43af1ad3.jpg + image + image/jpeg + + + Langelands Museum (Arkæologi Sydfyn) + Langelands Museum (Arkæologi Sydfyn) + + + + + + https%3A%2F%2Fwww.metaldetektorfund.dk%2Fapi%2Foai-pmh%2F + oai:metaldetektorfund.dk:fund/?dimeid=71394 + 2021-07-29T14:36:49Z + + + + + \ No newline at end of file diff --git a/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/dime.xml b/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/dime.xml new file mode 100644 index 0000000..35dfed6 --- /dev/null +++ b/dnet-ariadneplus/src/test/resources/eu/dnetlib/x3m/dime.xml @@ -0,0 +1,53 @@ + + 71394 + https://www.metaldetektorfund.dk/fund/?dimeid=71394 + https://www.metaldetektorfund.dk/wiki/dime.find.coin.viking.dirham + Dirhem + Dirhemklip m. probérmærker + + + http://vocab.getty.edu/aat/300037258 + DIRHAMS + exact match + + + Vikingetid + https://www.metaldetektorfund.dk/wiki/CYVX + http://n2t.net/ark:/99152/p0r8d9c3hq8 + 750 + 1066 + + + Ærø Municipality + EPSG 4326 + 10 + 10.5 + 54.5 + 55 + 0.5 + + + Sølv + https://www.metaldetektorfund.dk/wiki/dime.material.silver + http://vocab.getty.edu/page/aat/300011029 + SILVER (METAL) + exact + + + + + + + + https://www.metaldetektorfund.dk/fundbilleder/5e8/5e89c43af1ad3.jpg + image + image/jpeg + + + Langelands Museum (Arkæologi Sydfyn) + Langelands Museum (Arkæologi Sydfyn) + \ No newline at end of file