forked from D-Net/dnet-hadoop
integrated changes for mapping ROHub contents in the Graph
This commit is contained in:
parent
55fa3b2a17
commit
a929dc5fee
|
@ -31,26 +31,7 @@ import com.google.common.collect.Sets;
|
||||||
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
|
import eu.dnetlib.dhp.common.vocabulary.VocabularyGroup;
|
||||||
import eu.dnetlib.dhp.schema.common.ModelConstants;
|
import eu.dnetlib.dhp.schema.common.ModelConstants;
|
||||||
import eu.dnetlib.dhp.schema.common.ModelSupport;
|
import eu.dnetlib.dhp.schema.common.ModelSupport;
|
||||||
import eu.dnetlib.dhp.schema.oaf.AccessRight;
|
import eu.dnetlib.dhp.schema.oaf.*;
|
||||||
import eu.dnetlib.dhp.schema.oaf.Author;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Context;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.DataInfo;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Dataset;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Field;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.GeoLocation;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Instance;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Journal;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.KeyValue;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.OAIProvenance;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Oaf;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.OafEntity;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.OtherResearchProduct;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Publication;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Qualifier;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Relation;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Result;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.Software;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.StructuredProperty;
|
|
||||||
import eu.dnetlib.dhp.schema.oaf.utils.IdentifierFactory;
|
import eu.dnetlib.dhp.schema.oaf.utils.IdentifierFactory;
|
||||||
import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils;
|
import eu.dnetlib.dhp.schema.oaf.utils.OafMapperUtils;
|
||||||
|
|
||||||
|
@ -377,10 +358,30 @@ public abstract class AbstractMdRecordToOafMapper {
|
||||||
|
|
||||||
r.setInstance(instances);
|
r.setInstance(instances);
|
||||||
r.setBestaccessright(OafMapperUtils.createBestAccessRights(instances));
|
r.setBestaccessright(OafMapperUtils.createBestAccessRights(instances));
|
||||||
|
r.setEoscifguidelines(prepareEOSCIfGuidelines(doc, info));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract List<StructuredProperty> prepareResultPids(Document doc, DataInfo info);
|
protected abstract List<StructuredProperty> prepareResultPids(Document doc, DataInfo info);
|
||||||
|
|
||||||
|
private List<EoscIfGuidelines> prepareEOSCIfGuidelines(Document doc, DataInfo info) {
|
||||||
|
final Set<EoscIfGuidelines> set = Sets.newHashSet();
|
||||||
|
for (final Object o : doc.selectNodes("//oaf:eoscifguidelines")) {
|
||||||
|
final String code = ((Node) o).valueOf("@code");
|
||||||
|
final String label = ((Node) o).valueOf("@label");
|
||||||
|
final String url = ((Node) o).valueOf("@url");
|
||||||
|
final String semrel = ((Node) o).valueOf("@semanticrelation");
|
||||||
|
if (StringUtils.isNotBlank(code)) {
|
||||||
|
final EoscIfGuidelines eig = new EoscIfGuidelines();
|
||||||
|
eig.setCode(code);
|
||||||
|
eig.setLabel(label);
|
||||||
|
eig.setUrl(url);
|
||||||
|
eig.setSemanticRelation(semrel);
|
||||||
|
set.add(eig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Lists.newArrayList(set);
|
||||||
|
}
|
||||||
|
|
||||||
private List<Context> prepareContexts(final Document doc, final DataInfo info) {
|
private List<Context> prepareContexts(final Document doc, final DataInfo info) {
|
||||||
final List<Context> list = new ArrayList<>();
|
final List<Context> list = new ArrayList<>();
|
||||||
for (final Object o : doc.selectNodes("//oaf:concept")) {
|
for (final Object o : doc.selectNodes("//oaf:concept")) {
|
||||||
|
|
|
@ -171,6 +171,9 @@ public class OdfToOafMapper extends AbstractMdRecordToOafMapper {
|
||||||
for (final Object o : doc.selectNodes("//*[local-name()='identifier' and ./@identifierType='landingPage']")) {
|
for (final Object o : doc.selectNodes("//*[local-name()='identifier' and ./@identifierType='landingPage']")) {
|
||||||
url.add(trimAndDecodeUrl(((Node) o).getText().trim()));
|
url.add(trimAndDecodeUrl(((Node) o).getText().trim()));
|
||||||
}
|
}
|
||||||
|
for (final Object o : doc.selectNodes("//*[local-name()='identifier' and ./@identifierType='w3id']")) {
|
||||||
|
url.add(trimAndDecodeUrl(((Node) o).getText().trim()));
|
||||||
|
}
|
||||||
for (final Object o : doc
|
for (final Object o : doc
|
||||||
.selectNodes("//*[local-name()='alternateIdentifier' and ./@alternateIdentifierType='DOI']")) {
|
.selectNodes("//*[local-name()='alternateIdentifier' and ./@alternateIdentifierType='DOI']")) {
|
||||||
url.add(HTTP_DOI_PREIFX + ((Node) o).getText().trim());
|
url.add(HTTP_DOI_PREIFX + ((Node) o).getText().trim());
|
||||||
|
|
|
@ -912,27 +912,62 @@ class MappersTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testROHub() throws IOException, DocumentException {
|
void testROHub() throws IOException {
|
||||||
final String xml = IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("rohub.xml")));
|
final String xml = IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("rohub.xml")));
|
||||||
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
||||||
System.out.println("***************");
|
System.out.println("***************");
|
||||||
System.out.println(new ObjectMapper().writeValueAsString(list));
|
System.out.println(new ObjectMapper().writeValueAsString(list));
|
||||||
System.out.println("***************");
|
System.out.println("***************");
|
||||||
// final Dataset p = (Dataset) list.get(0);
|
assertEquals(1, list.size());
|
||||||
// assertValidId(p.getId());
|
final OtherResearchProduct p = (OtherResearchProduct) list.get(0);
|
||||||
// assertValidId(p.getCollectedfrom().get(0).getKey());
|
assertValidId(p.getId());
|
||||||
// System.out.println(p.getTitle().get(0).getValue());
|
assertTrue(p.getId().startsWith("50|w3id"));
|
||||||
// assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue()));
|
assertValidId(p.getCollectedfrom().get(0).getKey());
|
||||||
|
assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue()));
|
||||||
|
assertEquals(1, p.getInstance().size());
|
||||||
|
assertEquals("https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", p.getPid().get(0).getValue());
|
||||||
|
Instance inst = p.getInstance().get(0);
|
||||||
|
assertEquals("https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", inst.getPid().get(0).getValue());
|
||||||
|
assertEquals("https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", inst.getUrl().get(0));
|
||||||
|
assertEquals(1, p.getEoscifguidelines().size());
|
||||||
|
assertEquals("EOSC::RO-crate", p.getEoscifguidelines().get(0).getCode());
|
||||||
|
assertEquals("EOSC::RO-crate", p.getEoscifguidelines().get(0).getLabel());
|
||||||
|
assertEquals("", p.getEoscifguidelines().get(0).getUrl());
|
||||||
|
assertEquals("compliesWith", p.getEoscifguidelines().get(0).getSemanticRelation());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testROHub2() throws IOException, DocumentException {
|
void testROHub2() throws IOException {
|
||||||
final String xml = IOUtils
|
final String xml = IOUtils
|
||||||
.toString(Objects.requireNonNull(getClass().getResourceAsStream("rohub-modified.xml")));
|
.toString(Objects.requireNonNull(getClass().getResourceAsStream("rohub-modified.xml")));
|
||||||
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
||||||
System.out.println("***************");
|
System.out.println("***************");
|
||||||
System.out.println(new ObjectMapper().writeValueAsString(list));
|
System.out.println(new ObjectMapper().writeValueAsString(list));
|
||||||
System.out.println("***************");
|
System.out.println("***************");
|
||||||
|
assertEquals(1, list.size());
|
||||||
|
final OtherResearchProduct p = (OtherResearchProduct) list.get(0);
|
||||||
|
assertValidId(p.getId());
|
||||||
|
assertValidId(p.getCollectedfrom().get(0).getKey());
|
||||||
|
assertEquals("50|w3id________::afc7592914ae190a50570db90f55f9c2", p.getId());
|
||||||
|
assertTrue(StringUtils.isNotBlank(p.getTitle().get(0).getValue()));
|
||||||
|
assertEquals("w3id", (p.getPid().get(0).getQualifier().getClassid()));
|
||||||
|
assertEquals("https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca", (p.getPid().get(0).getValue()));
|
||||||
|
|
||||||
|
assertEquals(1, list.stream().filter(o -> o instanceof OtherResearchProduct).count());
|
||||||
|
assertEquals(0, list.stream().filter(o -> o instanceof Relation).count());
|
||||||
|
|
||||||
|
for (Oaf oaf : list) {
|
||||||
|
if (oaf instanceof Relation) {
|
||||||
|
String source = ((Relation) oaf).getSource();
|
||||||
|
String target = ((Relation) oaf).getTarget();
|
||||||
|
assertNotEquals(source, target);
|
||||||
|
assertTrue(source.equals(p.getId()) || target.equals(p.getId()));
|
||||||
|
assertNotNull(((Relation) oaf).getSubRelType());
|
||||||
|
assertNotNull(((Relation) oaf).getRelClass());
|
||||||
|
assertNotNull(((Relation) oaf).getRelType());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
|
@ -21,15 +21,13 @@
|
||||||
</header>
|
</header>
|
||||||
<metadata>
|
<metadata>
|
||||||
<datacite:resource>
|
<datacite:resource>
|
||||||
<datacite:identifier identifierType="URL">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca</datacite:identifier>
|
<datacite:identifier identifierType="w3id">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca</datacite:identifier>
|
||||||
<datacite:alternateIdentifiers/>
|
<datacite:alternateIdentifiers>
|
||||||
|
<datacite:alternateIdentifier alternateIdentifierType="w3id">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca</datacite:alternateIdentifier>
|
||||||
|
</datacite:alternateIdentifiers>
|
||||||
<datacite:relatedIdentifiers>
|
<datacite:relatedIdentifiers>
|
||||||
<datacite:relatedIdentifier relatedIdentifierType="" relationType="">
|
<datacite:relatedIdentifier relatedIdentifierType="w3id" relationType="HasPart">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca/resources/24fae96f-f986-46e1-bfd0-a21ca20ff0ce</datacite:relatedIdentifier>
|
||||||
https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca/resources/24fae96f-f986-46e1-bfd0-a21ca20ff0ce
|
<datacite:relatedIdentifier relatedIdentifierType="w3id" relationType="HasPart">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca/resources/6d3427a8-352e-49f4-9796-f618c44dc16d</datacite:relatedIdentifier>
|
||||||
</datacite:relatedIdentifier>
|
|
||||||
<datacite:relatedIdentifier relatedIdentifierType="" relationType="">
|
|
||||||
https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca/resources/6d3427a8-352e-49f4-9796-f618c44dc16d
|
|
||||||
</datacite:relatedIdentifier>
|
|
||||||
</datacite:relatedIdentifiers>
|
</datacite:relatedIdentifiers>
|
||||||
<datacite:resourceType xs:anyURI="http://purl.org/coar/resource_type/c_1843">RO-crate</datacite:resourceType>
|
<datacite:resourceType xs:anyURI="http://purl.org/coar/resource_type/c_1843">RO-crate</datacite:resourceType>
|
||||||
<datacite:rightsList>
|
<datacite:rightsList>
|
||||||
|
@ -43,21 +41,17 @@
|
||||||
</datacite:descriptions>
|
</datacite:descriptions>
|
||||||
<datacite:publisher>Poznań Supercomputing and Networking Center</datacite:publisher>
|
<datacite:publisher>Poznań Supercomputing and Networking Center</datacite:publisher>
|
||||||
<contributors xmlns="http://datacite.org/schema/kernel-4">
|
<contributors xmlns="http://datacite.org/schema/kernel-4">
|
||||||
<contributor>
|
<contributor contributorType="Researcher">
|
||||||
<contributor contributorType="Researcher">
|
<contributorName>Generation Service</contributorName>
|
||||||
<contributorName>Generation Service</contributorName>
|
|
||||||
</contributor>
|
|
||||||
</contributor>
|
</contributor>
|
||||||
</contributors>
|
</contributors>
|
||||||
<creators xmlns="http://datacite.org/schema/kernel-4">
|
<creators xmlns="http://datacite.org/schema/kernel-4">
|
||||||
<creator>
|
<creator>
|
||||||
<creator>
|
<creatorName>CNR-ISMAR</creatorName>
|
||||||
<creatorName>CNR-ISMAR</creatorName>
|
|
||||||
</creator>
|
|
||||||
</creator>
|
</creator>
|
||||||
</creators>
|
</creators>
|
||||||
<dates xmlns="http://datacite.org/schema/kernel-4">
|
<dates xmlns="http://datacite.org/schema/kernel-4">
|
||||||
<date dateType="Created">2018-06-20T11:21:46Z</date>
|
<date dateType="Issued">2018-06-20T11:21:46Z</date>
|
||||||
</dates>
|
</dates>
|
||||||
<dc:descriptions>
|
<dc:descriptions>
|
||||||
<dc:description descriptionType="Abstract">The use of biological effects tools offer enormous potential to meet the challenges outlined by the European Union Marine Strategy Framework Directive (MSFD) whereby Member States are required to develop a robust set of tools for defining 11 qualitative descriptors of Good Environmental Status (GES), such as demonstrating that "Concentrations of contaminants are at levels not giving rise to pollution effects" (GES Descriptor 8). This paper discusses the combined approach of monitoring chemical contaminant levels, along side biological effect measurements relating to the effect of pollutants, for undertaking assessments of GES across European marine regions. We outline the minimum standards that biological effects tools should meet if they are to be used for defining GES in relation to Descriptor 8 and describe the current international initiatives underway to develop assessment criteria for these biological effects techniques. Crown Copyright (C) 2010 Published by Elsevier Ltd. All rights reserved.</dc:description>
|
<dc:description descriptionType="Abstract">The use of biological effects tools offer enormous potential to meet the challenges outlined by the European Union Marine Strategy Framework Directive (MSFD) whereby Member States are required to develop a robust set of tools for defining 11 qualitative descriptors of Good Environmental Status (GES), such as demonstrating that "Concentrations of contaminants are at levels not giving rise to pollution effects" (GES Descriptor 8). This paper discusses the combined approach of monitoring chemical contaminant levels, along side biological effect measurements relating to the effect of pollutants, for undertaking assessments of GES across European marine regions. We outline the minimum standards that biological effects tools should meet if they are to be used for defining GES in relation to Descriptor 8 and describe the current international initiatives underway to develop assessment criteria for these biological effects techniques. Crown Copyright (C) 2010 Published by Elsevier Ltd. All rights reserved.</dc:description>
|
||||||
|
@ -71,15 +65,18 @@
|
||||||
</sizes>
|
</sizes>
|
||||||
<subjects xmlns="http://datacite.org/schema/kernel-4">
|
<subjects xmlns="http://datacite.org/schema/kernel-4">
|
||||||
<subject>Ecology</subject>
|
<subject>Ecology</subject>
|
||||||
<subject>EOSC::RO-crate</subject>
|
|
||||||
</subjects>
|
</subjects>
|
||||||
</datacite:resource>
|
</datacite:resource>
|
||||||
<oaf:identifier identifierType="URL">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca</oaf:identifier>
|
<oaf:identifier identifierType="w3id">https://w3id.org/ro-id/0ab171a7-45c5-4194-82d4-850955504bca</oaf:identifier>
|
||||||
<dr:CobjCategory type="other research product">other research product</dr:CobjCategory>
|
<dr:CobjCategory type="other research product">other research product</dr:CobjCategory>
|
||||||
<oaf:dateAccepted/>
|
<oaf:dateAccepted>2018-06-20</oaf:dateAccepted>
|
||||||
<oaf:accessrights>OPEN</oaf:accessrights>
|
<oaf:accessrights>OPEN</oaf:accessrights>
|
||||||
<oaf:language/>
|
<oaf:language/>
|
||||||
<oaf:hostedBy name="ROHub" id="fairsharing_::4119"/>
|
<oaf:hostedBy name="ROHub" id="fairsharing_::4119"/>
|
||||||
<oaf:collectedFrom name="ROHub" id="fairsharing_::4119"/>
|
<oaf:collectedFrom name="ROHub" id="fairsharing_::4119"/>
|
||||||
|
<oaf:eoscifguidelines code="EOSC::RO-crate"
|
||||||
|
label="EOSC::RO-crate"
|
||||||
|
url=""
|
||||||
|
semanticrelation="compliesWith"/>
|
||||||
</metadata>
|
</metadata>
|
||||||
</record>
|
</record>
|
2
pom.xml
2
pom.xml
|
@ -801,7 +801,7 @@
|
||||||
<mockito-core.version>3.3.3</mockito-core.version>
|
<mockito-core.version>3.3.3</mockito-core.version>
|
||||||
<mongodb.driver.version>3.4.2</mongodb.driver.version>
|
<mongodb.driver.version>3.4.2</mongodb.driver.version>
|
||||||
<vtd.version>[2.12,3.0)</vtd.version>
|
<vtd.version>[2.12,3.0)</vtd.version>
|
||||||
<dhp-schemas.version>[2.12.1]</dhp-schemas.version>
|
<dhp-schemas.version>[2.12.1-patched]</dhp-schemas.version>
|
||||||
<dnet-actionmanager-api.version>[4.0.3]</dnet-actionmanager-api.version>
|
<dnet-actionmanager-api.version>[4.0.3]</dnet-actionmanager-api.version>
|
||||||
<dnet-actionmanager-common.version>[6.0.5]</dnet-actionmanager-common.version>
|
<dnet-actionmanager-common.version>[6.0.5]</dnet-actionmanager-common.version>
|
||||||
<dnet-openaire-broker-common.version>[3.1.6]</dnet-openaire-broker-common.version>
|
<dnet-openaire-broker-common.version>[3.1.6]</dnet-openaire-broker-common.version>
|
||||||
|
|
Loading…
Reference in New Issue