forked from D-Net/dnet-hadoop
[graph raw] fixed mapping of the original resource type from the Datacite format
This commit is contained in:
parent
b19643f6eb
commit
d85d2df6ad
|
@ -238,11 +238,23 @@ public class OdfToOafMapper extends AbstractMdRecordToOafMapper {
|
||||||
(Element) doc
|
(Element) doc
|
||||||
.selectSingleNode(
|
.selectSingleNode(
|
||||||
"//*[local-name()='metadata']/*[local-name() = 'resource']/*[local-name() = 'resourceType']"))
|
"//*[local-name()='metadata']/*[local-name() = 'resource']/*[local-name() = 'resourceType']"))
|
||||||
.map(element -> {
|
.map(e -> {
|
||||||
final String resourceTypeURI = element.attributeValue("uri");
|
final String resourceTypeURI = Optional
|
||||||
final String resourceTypeAnyURI = element.attributeValue("anyURI");
|
.ofNullable(e.attributeValue("uri"))
|
||||||
final String resourceTypeTxt = element.getText();
|
.filter(StringUtils::isNotBlank)
|
||||||
final String resourceTypeGeneral = element.attributeValue("resourceTypeGeneral");
|
.orElse(null);
|
||||||
|
final String resourceTypeAnyURI = Optional
|
||||||
|
.ofNullable(e.attributeValue("anyURI"))
|
||||||
|
.filter(StringUtils::isNotBlank)
|
||||||
|
.orElse(null);
|
||||||
|
final String resourceTypeTxt = Optional
|
||||||
|
.ofNullable(e.getText())
|
||||||
|
.filter(StringUtils::isNotBlank)
|
||||||
|
.orElse(null);
|
||||||
|
final String resourceTypeGeneral = Optional
|
||||||
|
.ofNullable(e.attributeValue("resourceTypeGeneral"))
|
||||||
|
.filter(StringUtils::isNotBlank)
|
||||||
|
.orElse(null);
|
||||||
|
|
||||||
return ObjectUtils
|
return ObjectUtils
|
||||||
.firstNonNull(resourceTypeURI, resourceTypeAnyURI, resourceTypeTxt, resourceTypeGeneral);
|
.firstNonNull(resourceTypeURI, resourceTypeAnyURI, resourceTypeTxt, resourceTypeGeneral);
|
||||||
|
|
|
@ -1171,6 +1171,34 @@ class MappersTest {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void test_Zenodo2() throws IOException {
|
||||||
|
final String xml = IOUtils.toString(Objects.requireNonNull(getClass().getResourceAsStream("odf_zenodo2.xml")));
|
||||||
|
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
||||||
|
|
||||||
|
assertEquals(3, list.size());
|
||||||
|
Publication p = cleanup((Publication) list.get(0), vocs);
|
||||||
|
|
||||||
|
assertNotNull(p.getInstance());
|
||||||
|
assertEquals(1, p.getInstance().size());
|
||||||
|
|
||||||
|
final Instance instance = p.getInstance().get(0);
|
||||||
|
|
||||||
|
assertNotNull(instance.getInstanceTypeMapping());
|
||||||
|
assertEquals(1, instance.getInstanceTypeMapping().size());
|
||||||
|
|
||||||
|
Optional<InstanceTypeMapping> coarType = instance
|
||||||
|
.getInstanceTypeMapping()
|
||||||
|
.stream()
|
||||||
|
.filter(itm -> ModelConstants.OPENAIRE_COAR_RESOURCE_TYPES_3_1.equals(itm.getVocabularyName()))
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
assertTrue(coarType.isPresent());
|
||||||
|
assertNotNull(coarType.get().getOriginalType());
|
||||||
|
assertNull(coarType.get().getTypeCode());
|
||||||
|
assertNull(coarType.get().getTypeLabel());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testROHub2() throws IOException {
|
void testROHub2() throws IOException {
|
||||||
final String xml = IOUtils
|
final String xml = IOUtils
|
||||||
|
@ -1229,7 +1257,7 @@ class MappersTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testD4ScienceTraining() throws IOException {
|
void testD4ScienceTraining() throws IOException {
|
||||||
final String xml = IOUtils
|
final String xml = IOUtils
|
||||||
.toString(Objects.requireNonNull(getClass().getResourceAsStream("d4science-1-training.xml")));
|
.toString(Objects.requireNonNull(getClass().getResourceAsStream("d4science-1-training.xml")));
|
||||||
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
||||||
|
@ -1240,7 +1268,7 @@ class MappersTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testD4ScienceDataset() throws IOException {
|
void testD4ScienceDataset() throws IOException {
|
||||||
final String xml = IOUtils
|
final String xml = IOUtils
|
||||||
.toString(Objects.requireNonNull(getClass().getResourceAsStream("d4science-2-dataset.xml")));
|
.toString(Objects.requireNonNull(getClass().getResourceAsStream("d4science-2-dataset.xml")));
|
||||||
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
final List<Oaf> list = new OdfToOafMapper(vocs, false, true).processMdRecord(xml);
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<record xmlns:oaf="http://namespace.openaire.eu/oaf"
|
||||||
|
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
|
||||||
|
xmlns:datacite="http://datacite.org/schema/kernel-3"
|
||||||
|
xmlns:dr="http://www.driver-repository.eu/namespace/dr"
|
||||||
|
xmlns:dri="http://www.driver-repository.eu/namespace/dri">
|
||||||
|
<header xmlns="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<identifier>oai:zenodo.org:1596086</identifier>
|
||||||
|
<datestamp>2020-01-20T13:50:28Z</datestamp>
|
||||||
|
<setSpec>openaire</setSpec>
|
||||||
|
<dr:dateOfTransformation>2024-02-08T11:03:10.994Z</dr:dateOfTransformation>
|
||||||
|
<dri:objIdentifier>od______2659::036d5555a6688ed00c8d0da97bdece3b</dri:objIdentifier>
|
||||||
|
<dri:dateOfCollection>2024-02-08T11:03:10.994Z</dri:dateOfCollection>
|
||||||
|
<dri:dateOfTransformation>2024-02-08T11:03:10.994Z</dri:dateOfTransformation>
|
||||||
|
</header>
|
||||||
|
<metadata>
|
||||||
|
<resource xmlns="http://datacite.org/schema/kernel-4"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
|
||||||
|
<identifier identifierType="URL">https://zenodo.org/record/1596086</identifier>
|
||||||
|
<alternateIdentifiers xmlns="http://datacite.org/schema/kernel-3"/>
|
||||||
|
<creators>
|
||||||
|
<creator>
|
||||||
|
<creatorName>Bonney, T. G.</creatorName>
|
||||||
|
<givenName>T. G.</givenName>
|
||||||
|
<familyName>Bonney</familyName>
|
||||||
|
</creator>
|
||||||
|
</creators>
|
||||||
|
<titles>
|
||||||
|
<title>Ice Blocks on a Moraine</title>
|
||||||
|
</titles>
|
||||||
|
<publisher>Zenodo</publisher>
|
||||||
|
<publicationYear>1889</publicationYear>
|
||||||
|
<dates>
|
||||||
|
<date dateType="Issued">1889-08-22</date>
|
||||||
|
</dates>
|
||||||
|
<resourceType resourceTypeGeneral="JournalArticle"/>
|
||||||
|
<relatedIdentifiers>
|
||||||
|
<relatedIdentifier relatedIdentifierType="DOI" relationType="IsIdenticalTo"
|
||||||
|
>10.1038/040391a0</relatedIdentifier>
|
||||||
|
</relatedIdentifiers>
|
||||||
|
<rightsList>
|
||||||
|
<rights rightsURI="https://creativecommons.org/publicdomain/zero/1.0/legalcode"
|
||||||
|
>Creative Commons Zero v1.0 Universal</rights>
|
||||||
|
<rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
|
||||||
|
</rightsList>
|
||||||
|
<descriptions>
|
||||||
|
<description descriptionType="Abstract">n/a</description>
|
||||||
|
</descriptions>
|
||||||
|
</resource>
|
||||||
|
<dr:CobjCategory type="publication">0001</dr:CobjCategory>
|
||||||
|
<oaf:dateAccepted>1889-08-22</oaf:dateAccepted>
|
||||||
|
<oaf:accessrights>OPEN</oaf:accessrights>
|
||||||
|
<oaf:license>http://creativecommons.org/publicdomain/zero/1.0/legalcode</oaf:license>
|
||||||
|
<oaf:language/>
|
||||||
|
<oaf:hostedBy name="ZENODO" id="opendoar____::2659"/>
|
||||||
|
<oaf:collectedFrom name="ZENODO" id="opendoar____::2659"/>
|
||||||
|
</metadata>
|
||||||
|
</record>
|
Loading…
Reference in New Issue