new xslt, records

This commit is contained in:
Andreas Czerniak 2021-05-26 12:26:18 +02:00
parent 74e86fb457
commit e92c24da3e
9 changed files with 805 additions and 0 deletions

View File

@ -117,6 +117,36 @@ public class TransformationJobTest extends AbstractVocabularyTest {
// TODO Create significant Assert
}
@Test
@DisplayName("Test Transform record XML with xslt_cleaning_datarepo_datacite (B2FIND)")
public void testTransformMostlyB2FindScript() throws Exception {
String xslTransformationScript = "";
String xmlRecord = "";
String DATASOURCEID = "re3data_____::r3d100012377";
String DATASOURCENAME = "B2Find";
// B2FIND
xmlRecord = "/eu/dnetlib/dhp/transform/b2find_record.xml";
xslTransformationScript = "/eu/dnetlib/dhp/transform/scripts/xslt_cleaning_datarepo_datacite.xsl";
// xmlRecord = "/eu/dnetlib/dhp/transform/input_itgv4.xml";
// xslTransformationScript = "/eu/dnetlib/dhp/transform/scripts/xslt_cleaning_oaiOpenaire_datacite_ExchangeLandingpagePid.xsl";
// We Set the input Record getting the XML from the classpath
final MetadataRecord mr = new MetadataRecord();
mr.setProvenance(new Provenance(DATASOURCEID, DATASOURCENAME, "PREFIX"));
mr.setBody(IOUtils.toString(getClass().getResourceAsStream(xmlRecord)));
// We Load the XSLT transformation Rule from the classpath
XSLTTransformationFunction tr = loadTransformationRule(xslTransformationScript);
MetadataRecord result = tr.call(mr);
// Print the record
System.out.println(result.getBody());
// TODO Create significant Assert
}
@Test
@DisplayName("Test Transform record XML with xslt_cleaning_REST_OmicsDI")
public void testTransformRestScript() throws Exception {

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<record xmlns="http://www.openarchives.org/OAI/2.0/">
<header>
<identifier>cb22585e-98fe-4661-973c-0e2c66647b2e</identifier>
<datestamp>2021-03-15T15:55:39Z</datestamp>
<setSpec>eudat-b2find</setSpec>
</header>
<metadata>
<oai_datacite xmlns="http://schema.datacite.org/oai/oai-1.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schema.datacite.org/oai/oai-1.0/ http://schema.datacite.org/oai/oai-1.0/oai.xsd">
<isReferenceQuality>false</isReferenceQuality>
<schemaVersion>4.3</schemaVersion>
<datacentreSymbol>EUDAT B2FIND</datacentreSymbol>
<payload>
<resource xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.3/metadata.xsd">
<creators>
<creator>
<creatorName>Viken fylkeskommune</creatorName>
</creator>
</creators>
<titles>
<title>Asgjerrud søndre</title>
</titles>
<descriptions>
<description descriptionType="Abstract">Kleberforekomst. Lite markert. I stien og i en forsenkning i terrenget på S-sida er det en hel del kleberavfall. Ved besøket fantes ikke fast fjell med kleber i, men når en roter i jorda, finner en ubearbeidede klebersteinsstykker. Noen av dem har hakkespor. Det er mulig at hele forsenkningen i terrenget skyldes at man har hogd fram kleber. Det ser ikke ut som det kan ha vært særlig stor drift. Herfra skal det ha vært tatt kleber til Eidsberg middelalderkirke. Fortalt av Helge Enger. Ingen vet hvor lenge man har tatt kleber her. Forsenkningen er orientert NV-SØ ca 12m, br 7m, dybde 2,5m.</description>
</descriptions>
<geoLocations>
<geoLocation>
<geoLocationPlace>(11.702 LON, 59.494 LAT)</geoLocationPlace>
</geoLocation>
</geoLocations>
<subjects>
<subject>Arkeologisk minne</subject>
<subject>Steinbrudd</subject>
<subject>Archaeology</subject>
</subjects>
<alternateIdentifiers>
<alternateIdentifier alternateIdentifierType="URL">http://kulturminnesok.no/ra/lokalitet/19916</alternateIdentifier>
</alternateIdentifiers>
<version>20180301</version>
<publicationYear>2004</publicationYear>
<publisher>Askeladden</publisher>
<language>Norwegian</language>
<rightsList>
<rights>NLOD (https://data.norge.no/nlod/en/2.0/)</rights>
</rightsList>
</resource>
</payload>
</oai_datacite>
</metadata>
</record>

View File

@ -0,0 +1,288 @@
<!-- adapted from PROD at 2021-05-26 -->
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oaf="http://namespace.openaire.eu/oaf"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:dr="http://www.driver-repository.eu/namespace/dr"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:vocabulary="http://eu/dnetlib/transform/clean"
xmlns:dateCleaner="http://eu/dnetlib/transform/dateISO"
exclude-result-prefixes="xsl vocabulary dateCleaner"
version="2.0">
<xsl:param name="varOfficialName" />
<xsl:param name="varDsType" />
<xsl:param name="varDataSourceId" />
<xsl:param name="index" select="0" />
<xsl:param name="transDate" select="current-dateTime()" />
<xsl:template match="/">
<xsl:variable name="datasourcePrefix" select="normalize-space(//oaf:datasourceprefix)" />
<xsl:call-template name="validRecord" />
</xsl:template>
<!-- skip/terminate record transformation -->
<xsl:template name="terminate">
<xsl:message terminate="yes">
record is not compliant, transformation is interrupted.
</xsl:message>
</xsl:template>
<!-- validate record -->
<xsl:template name="validRecord">
<record>
<xsl:apply-templates select="//*[local-name() = 'header']" />
<metadata>
<xsl:apply-templates select="//*[local-name() = 'metadata']//*[local-name() = 'resource']" /> <!-- for CoCoON many deleted records appeared among the transformed records -->
<xsl:if test="//oai:header/@status='deleted'">
<xsl:call-template name="terminate" />
</xsl:if>
<xsl:for-each select="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='Handle'][not(. = '123456789')]">
<oaf:identifier>
<xsl:attribute name="identifierType">
<xsl:value-of select="'handle'" />
</xsl:attribute>
<xsl:if test="contains(., '://hdl.handle.net/')">
<xsl:value-of select="substring-after(., '://hdl.handle.net/')" />
</xsl:if>
<xsl:if test="not(contains(., '://hdl.handle.net/'))">
<xsl:value-of select="." />
</xsl:if>
</oaf:identifier>
</xsl:for-each>
<xsl:for-each select="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='DOI']">
<oaf:identifier>
<xsl:attribute name="identifierType">
<xsl:value-of select="'doi'" />
</xsl:attribute>
<xsl:if test="contains(., '://dx.doi.org/')">
<xsl:value-of select="substring-after(., '://dx.doi.org/')" />
</xsl:if>
<xsl:if test="not(contains(., '://dx.doi.org/'))">
<xsl:value-of select="." />
</xsl:if>
</oaf:identifier>
</xsl:for-each> <!-- This is the only difference with the generic datacite repo rule: since all datasets from Nakala are Images -->
<xsl:if test="lower-case(//*[local-name()='resourceType']/@*[local-name()='resourceTypeGeneral']) = 'image'">
<oaf:concept>
<xsl:attribute name="id">
<xsl:value-of select="'dariah'" />
</xsl:attribute>
</oaf:concept>
</xsl:if>
<xsl:if test="//*[local-name()='date']/@dateType='Available' and //*[local-name()='datasourceprefix']!='r33ffb097cef'">
<xsl:variable name="varEmbargoEndDate" select="dateCleaner:dateISO( normalize-space(//*[local-name()='date'][@dateType='Available']))" />
<xsl:choose>
<xsl:when test="string-length($varEmbargoEndDate) &gt; 0">
<oaf:embargoenddate>
<xsl:value-of select="$varEmbargoEndDate" />
</oaf:embargoenddate>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="terminate" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:variable name="varTypLst" select="distinct-values((//*[local-name()='resourceType']/(., @resourceTypeGeneral)))" />
<xsl:variable name="varCobjCatLst" select="distinct-values((for $i in $varTypLst return vocabulary:clean( normalize-space($i), 'dnet:publication_resource')))" />
<xsl:variable name="varCobjSupLst" select="for $i in $varCobjCatLst return concat($i, '###', vocabulary:clean( normalize-space($i), 'dnet:result_typologies'))" />
<dr:CobjCategory>
<xsl:choose>
<xsl:when test="count($varCobjSupLst[not(substring-after(., '###') = 'other') and not(substring-before(., '###') = ('0038', '0039', '0040'))]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-after(., '###') = 'other') and not(substring-before(., '###') = ('0038', '0039', '0040'))][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:when test="count($varCobjSupLst[not(substring-after(., '###') = 'other')]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-after(., '###') = 'other')][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:when test="count($varCobjSupLst[not(substring-before(., '###') = ('0020', '0000'))]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-before(., '###') = ('0020', '0000'))][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:when test="count($varCobjSupLst[not(substring-before(., '###') = ('0000'))]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-before(., '###') = ('0000'))][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="type" select="'other'" />
<xsl:value-of select="'0000'" />
</xsl:otherwise>
</xsl:choose>
</dr:CobjCategory> <!-- review status --> <!-- no review hints found in resource type declarations, no version declarations found -->
<xsl:variable name="varRefereedConvt" select="for $i in ( //*[local-name()='resourceType']/(., @resourceTypeGeneral), //oai:setSpec, //*[local-name()='description']) return vocabulary:clean( normalize-space($i), 'dnet:review_levels')" />
<xsl:variable name="varRefereedIdntf" select="( //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '(^|.*[\.\-_\\/\s\(\)%\d#:])pre[\.\-_\\/\s\(\)%\d#:]?prints?([\.\-_\\/\s\(\)%\d#:].*)?$')]/'0002', //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '(^|.*[\.\-_\\/\s\(\)%\d#:])refereed([\.\-_\\/\s\(\)%\d#:].*)?$')]/'0001', //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '.*-peer-reviewed-(fulltext-)?article-.*')]/'0001')" />
<xsl:variable name="varRefereedVersn" select="(//*[local-name()='version'][matches(lower-case(.), '.*peer[\s\-\.\\_/:%]?reviewed.*')]/'0001', //*[local-name()='version'][matches(normalize-space(lower-case(.)), '^(v|vs|version|rel|release)?[\s\.\-_]*0$')]/'0002', //*[local-name()='version'][matches(lower-case(.), '(^|[\s\-\.\\_/:%].*)(beta|draft|trial|test)([\s\-\.\\_/:%].*|$)')]/'0002', //*[local-name()='version'][matches(lower-case(.), '.*submi(tted|ssion|ttal).*')]/'0002') " />
<xsl:variable name="varRefereedOther" select="(//*[local-name()='publisher'][matches(lower-case(.), '.*[\s\-\.\\_/:%]pre[\s\-\.\\_/:%]?prints?([\s\-\.\\_/:%].*|$)')]/'0002', //*[local-name()='description'][matches(lower-case(.), '^peer[\s\-\.\\_/:%]?reviewed$')]/'0001', //*[local-name()='description'][matches(lower-case(.), '^pre[\s\-\.\\_/:%]?prints?$')]/'0002') " />
<xsl:variable name="varRefereedReltn" select="//*[local-name() = 'relatedIdentifier'][./@relationType/lower-case(.)='isreviewedby']/'0001'" />
<xsl:variable name="varRefereedDesct" select="(//*[local-name() = 'description'] [matches(lower-case(.), '.*(this\s*book|this\s*volume|it)\s*constitutes\s*the\s*(thoroughly\s*)?refereed') or matches(lower-case(.), '.*peer[\.\-_/\s\(\)]?review\s*under\s*responsibility\s*of.*') or matches(lower-case(.), '(this|a)\s*(article|preprint)\s*(has\s*been\s*)?(peer[\-\s]*)?reviewed\s*and\s*recommended\s*by\s*peer[\-\s]*community')]/'0001')" />
<xsl:variable name="varRefereed" select="($varRefereedConvt, $varRefereedIdntf, $varRefereedReltn, $varRefereedVersn, $varRefereedOther, $varRefereedReltn, $varRefereedDesct)" />
<!--
<xsl:variable name="varRefereedConvt" select="for $i in ( //*[local-name()='resourceType']/(., @resourceTypeGeneral), //oai:setSpec, //*[local-name()='description']) return TransformationFunction:convertString($tf, normalize-space($i), 'ReviewLevels')" />
<xsl:variable name="varRefereedIdntf" select="( //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '(^|.*[\.\-_\\/\s\(\)%\d#:])pre[\.\-_\\/\s\(\)%\d#:]?prints?([\.\-_\\/\s\(\)%\d#:].*)?$')]/'0002', //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '(^|.*[\.\-_\\/\s\(\)%\d#:])refereed([\.\-_\\/\s\(\)%\d#:].*)?$')]/'0001', //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '.*-peer-reviewed-(fulltext-)?article-.*')]/'0001')" />
<xsl:variable name="varRefereedVersn" select="(//*[local-name()='version'][matches(lower-case(.), '.*peer[\s\-\.\\_/:%]?reviewed.*')]/'0001', //*[local-name()='version'][matches(normalize-space(lower-case(.)), '^(v|vs|version|rel|release)?[\s\.\-_]*0$')]/'0002', //*[local-name()='version'][matches(lower-case(.), '(^|[\s\-\.\\_/:%].*)(beta|draft|trial|test)([\s\-\.\\_/:%].*|$)')]/'0002', //*[local-name()='version'][matches(lower-case(.), '.*submi(tted|ssion|ttal).*')]/'0002') " />
<xsl:variable name="varRefereedOther" select="(//*[local-name()='publisher'][matches(lower-case(.), '.*[\s\-\.\\_/:%]pre[\s\-\.\\_/:%]?prints?([\s\-\.\\_/:%].*|$)')]/'0002', //*[local-name()='description'][matches(lower-case(.), '^peer[\s\-\.\\_/:%]?reviewed$')]/'0001', //*[local-name()='description'][matches(lower-case(.), '^pre[\s\-\.\\_/:%]?prints?$')]/'0002') " />
<xsl:variable name="varRefereedReltn" select="//*[local-name() = 'relatedIdentifier'][./@relationType/lower-case(.)='isreviewedby']/'0001'" />
<xsl:variable name="varRefereedDesct" select="(//*[local-name() = 'description'] [matches(lower-case(.), '.*(this\s*book|this\s*volume|it)\s*constitutes\s*the\s*(thoroughly\s*)?refereed') or matches(lower-case(.), '.*peer[\.\-_/\s\(\)]?review\s*under\s*responsibility\s*of.*') or matches(lower-case(.), '(this|a)\s*(article|preprint)\s*(has\s*been\s*)?(peer[\-\s]*)?reviewed\s*and\s*recommended\s*by\s*peer[\-\s]*community')]/'0001')" />
<xsl:variable name="varRefereed" select="($varRefereedConvt, $varRefereedIdntf, $varRefereedReltn, $varRefereedVersn, $varRefereedOther, $varRefereedReltn, $varRefereedDesct)" />
-->
<xsl:choose>
<xsl:when test="count($varRefereed[. = '0001']) &gt; 0">
<oaf:refereed>
<xsl:value-of select="'0001'" />
</oaf:refereed>
</xsl:when>
<xsl:when test="count($varRefereed[. = '0002']) &gt; 0">
<oaf:refereed>
<xsl:value-of select="'0002'" />
</oaf:refereed>
</xsl:when>
</xsl:choose>
<oaf:dateAccepted>
<xsl:variable name="theDate">
<xsl:choose>
<xsl:when test="string-length(normalize-space(//*[local-name()='date'][@dateType='Issued'])) &gt; 3">
<xsl:value-of select="//*[local-name()='date'][@dateType='Issued']" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="//*[local-name()='publicationYear']" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="dateCleaner:dateISO( normalize-space($theDate) )" />
</oaf:dateAccepted>
<oaf:dateAccepted>
<xsl:variable name="theDate">
<xsl:choose>
<xsl:when test="string-length(normalize-space(//*[local-name()='date'][@dateType='Issued'])) &gt; 3">
<xsl:value-of select="//*[local-name()='date'][@dateType='Issued']" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="//*[local-name()='publicationYear']" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="dateCleaner:dateISO( normalize-space($theDate) )" />
</oaf:dateAccepted>
<oaf:dateAccepted>
<xsl:variable name="theDate">
<xsl:choose>
<xsl:when test="string-length(normalize-space(//*[local-name()='date'][@dateType='Issued'])) &gt; 3">
<xsl:value-of select="//*[local-name()='date'][@dateType='Issued']" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="//*[local-name()='publicationYear']" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:value-of select="dateCleaner:dateISO( normalize-space($theDate) )" />
</oaf:dateAccepted>
<xsl:choose>
<xsl:when test="//*[local-name() = 'rights']/@rightsURI[starts-with(normalize-space(.), 'info:eu-repo/semantics')]">
<oaf:accessrights>
<xsl:value-of select="vocabulary:clean( //*[local-name() = 'rights']/@rightsURI[starts-with(normalize-space(.), 'info:eu-repo/semantics')], 'dnet:access_modes')" />
</oaf:accessrights>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="//*[local-name() = 'rights'][starts-with(normalize-space(.), 'http://creativecommons.org') or starts-with(normalize-space(.), 'Creative Commons') or starts-with(normalize-space(.), 'GNU LESSER GENERAL PUBLIC LICENSE')]">
<oaf:accessrights>
<xsl:text>OPEN</xsl:text>
</oaf:accessrights>
</xsl:when>
<xsl:when test="//*[local-name() = 'rights']/@rightsURI[starts-with(normalize-space(.), 'http://creativecommons.org') or starts-with(normalize-space(.), 'http://opendatacommons.org')]">
<oaf:accessrights>
<xsl:text>OPEN</xsl:text>
</oaf:accessrights>
</xsl:when>
<xsl:when test="//*[local-name() = 'rights'][starts-with(normalize-space(.), 'Open access data at least for academic use')]">
<oaf:accessrights>
<xsl:text>RESTRICTED</xsl:text>
</oaf:accessrights>
</xsl:when>
<xsl:otherwise>
<oaf:accessrights>
<xsl:text>UNKNOWN</xsl:text>
</oaf:accessrights>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="//*[local-name()='rights']/@rightsURI[starts-with(normalize-space(.), 'http') and matches(., '.*(/licenses|/publicdomain|unlicense.org/|/legal-and-data-protection-notices|/download/license|/open-government-licence).*')]">
<oaf:license>
<xsl:value-of select="." />
</oaf:license>
</xsl:for-each>
<oaf:language>
<xsl:value-of select="vocabulary:clean( //*[local-name()='language'], 'dnet:languages')" />
</oaf:language>
<oaf:hostedBy>
<xsl:attribute name="name">
<xsl:value-of select="$varOfficialName" />
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$varDataSourceId" />
</xsl:attribute>
</oaf:hostedBy>
<oaf:collectedFrom>
<xsl:attribute name="name">
<xsl:value-of select="$varOfficialName" />
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$varDataSourceId" />
</xsl:attribute>
</oaf:collectedFrom>
</metadata>
<xsl:copy-of select="//*[local-name() = 'about']" />
</record>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="//*[local-name() = 'metadata']//*[local-name() = 'resource']">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="//*[local-name() = 'resource']/*[local-name()='identifier']">
<xsl:if test=".[@identifierType='Handle'][contains(., '://hdl.handle.net/')]">
<xsl:element name="identifier" namespace="http://datacite.org/schema/kernel-4">
<xsl:attribute name="identifierType">
<xsl:value-of select="'Handle'" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="//*[local-name() = 'resource']/*[local-name()='alternateIdentifier']">
<xsl:choose>
<xsl:when test="@alternateIdentifierType">
<xsl:copy-of select="." />
</xsl:when>
<xsl:otherwise>
<xsl:element name="alternateIdentifier" namespace="http://datacite.org/schema/kernel-4">
<xsl:attribute name="alternateIdentifierType">
<xsl:value-of select="./@identifierType" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="//*[local-name() = 'header']">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
<xsl:element name="dr:dateOfTransformation">
<xsl:value-of select="$transDate" />
</xsl:element>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,226 @@
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:TransformationFunction="eu.dnetlib.data.collective.transformation.core.xsl.ext.TransformationFunctionProxy" xmlns:dr="http://www.driver-repository.eu/namespace/dr" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="TransformationFunction" extension-element-prefixes="TransformationFunction" version="1.1">
<xsl:param name="varOfficialName" />
<xsl:param name="varDsType" />
<xsl:param name="varDataSourceId" />
<xsl:param name="index" select="0" />
<xsl:param name="transDate" select="current-dateTime()" />
<xsl:variable name="tf" select="TransformationFunction:getInstance()" />
<xsl:template match="/">
<xsl:variable name="datasourcePrefix" select="normalize-space(//oaf:datasourceprefix)" />
<xsl:call-template name="validRecord" />
</xsl:template>
<xsl:template name="terminate">
<xsl:message terminate="yes">
record is not compliant, transformation is interrupted.
</xsl:message>
</xsl:template>
<xsl:template name="validRecord">
<record>
<xsl:apply-templates select="//*[local-name() = 'header']" />
<metadata>
<xsl:apply-templates select="//*[local-name() = 'metadata']//*[local-name() = 'resource']" /> <!-- for CoCoON many deleted records appeared among the transformed records -->
<xsl:if test="//oai:header/@status='deleted'">
<xsl:call-template name="terminate" />
</xsl:if>
<xsl:for-each select="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='Handle'][not(. = '123456789')]">
<oaf:identifier>
<xsl:attribute name="identifierType">
<xsl:value-of select="'handle'" />
</xsl:attribute>
<xsl:if test="contains(., '://hdl.handle.net/')">
<xsl:value-of select="substring-after(., '://hdl.handle.net/')" />
</xsl:if>
<xsl:if test="not(contains(., '://hdl.handle.net/'))">
<xsl:value-of select="." />
</xsl:if>
</oaf:identifier>
</xsl:for-each>
<xsl:for-each select="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='DOI']">
<oaf:identifier>
<xsl:attribute name="identifierType">
<xsl:value-of select="'doi'" />
</xsl:attribute>
<xsl:if test="contains(., '://dx.doi.org/')">
<xsl:value-of select="substring-after(., '://dx.doi.org/')" />
</xsl:if>
<xsl:if test="not(contains(., '://dx.doi.org/'))">
<xsl:value-of select="." />
</xsl:if>
</oaf:identifier>
</xsl:for-each> <!-- This is the only difference with the generic datacite repo rule: since all datasets from Nakala are Images -->
<xsl:if test="lower-case(//*[local-name()='resourceType']/@*[local-name()='resourceTypeGeneral']) = 'image'">
<oaf:concept>
<xsl:attribute name="id">
<xsl:value-of select="'dariah'" />
</xsl:attribute>
</oaf:concept>
</xsl:if>
<xsl:if test="//*[local-name()='date']/@dateType='Available' and //*[local-name()='datasourceprefix']!='r33ffb097cef'">
<xsl:variable name="varEmbargoEndDate" select="TransformationFunction:convertString($tf, normalize-space(//*[local-name()='date'][@dateType='Available']), 'DateISO8601')" />
<xsl:choose>
<xsl:when test="string-length($varEmbargoEndDate) &gt; 0">
<oaf:embargoenddate>
<xsl:value-of select="$varEmbargoEndDate" />
</oaf:embargoenddate>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="terminate" />
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:variable name="varTypLst" select="distinct-values((//*[local-name()='resourceType']/(., @resourceTypeGeneral)))" />
<xsl:variable name="varCobjCatLst" select="distinct-values((for $i in $varTypLst return TransformationFunction:convertString($tf, normalize-space($i), 'TextTypologies')))" />
<xsl:variable name="varCobjSupLst" select="for $i in $varCobjCatLst return concat($i, '###', TransformationFunction:convertString($tf, normalize-space($i), 'SuperTypes'))" />
<dr:CobjCategory>
<xsl:choose>
<xsl:when test="count($varCobjSupLst[not(substring-after(., '###') = 'other') and not(substring-before(., '###') = ('0038', '0039', '0040'))]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-after(., '###') = 'other') and not(substring-before(., '###') = ('0038', '0039', '0040'))][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:when test="count($varCobjSupLst[not(substring-after(., '###') = 'other')]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-after(., '###') = 'other')][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:when test="count($varCobjSupLst[not(substring-before(., '###') = ('0020', '0000'))]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-before(., '###') = ('0020', '0000'))][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:when test="count($varCobjSupLst[not(substring-before(., '###') = ('0000'))]) &gt; 0">
<xsl:variable name="varCobjSup" select="$varCobjSupLst[not(substring-before(., '###') = ('0000'))][1]" />
<xsl:attribute name="type" select="substring-after($varCobjSup, '###')" />
<xsl:value-of select="substring-before($varCobjSup, '###')" />
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="type" select="'other'" />
<xsl:value-of select="'0000'" />
</xsl:otherwise>
</xsl:choose>
</dr:CobjCategory> <!-- review status --> <!-- no review hints found in resource type declarations, no version declarations found -->
<xsl:variable name="varRefereedConvt" select="for $i in ( //*[local-name()='resourceType']/(., @resourceTypeGeneral), //oai:setSpec, //*[local-name()='description']) return TransformationFunction:convertString($tf, normalize-space($i), 'ReviewLevels')" />
<xsl:variable name="varRefereedIdntf" select="( //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '(^|.*[\.\-_\\/\s\(\)%\d#:])pre[\.\-_\\/\s\(\)%\d#:]?prints?([\.\-_\\/\s\(\)%\d#:].*)?$')]/'0002', //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '(^|.*[\.\-_\\/\s\(\)%\d#:])refereed([\.\-_\\/\s\(\)%\d#:].*)?$')]/'0001', //*[local-name()=('identifier', 'alternateIdentifier')][count(//*[local-name()=('metadata', 'resource')]//*[local-name()=('identifier', 'alternateIdentifier')]) = 1][matches(lower-case(.), '.*-peer-reviewed-(fulltext-)?article-.*')]/'0001')" />
<xsl:variable name="varRefereedVersn" select="(//*[local-name()='version'][matches(lower-case(.), '.*peer[\s\-\.\\_/:%]?reviewed.*')]/'0001', //*[local-name()='version'][matches(normalize-space(lower-case(.)), '^(v|vs|version|rel|release)?[\s\.\-_]*0$')]/'0002', //*[local-name()='version'][matches(lower-case(.), '(^|[\s\-\.\\_/:%].*)(beta|draft|trial|test)([\s\-\.\\_/:%].*|$)')]/'0002', //*[local-name()='version'][matches(lower-case(.), '.*submi(tted|ssion|ttal).*')]/'0002') " />
<xsl:variable name="varRefereedOther" select="(//*[local-name()='publisher'][matches(lower-case(.), '.*[\s\-\.\\_/:%]pre[\s\-\.\\_/:%]?prints?([\s\-\.\\_/:%].*|$)')]/'0002', //*[local-name()='description'][matches(lower-case(.), '^peer[\s\-\.\\_/:%]?reviewed$')]/'0001', //*[local-name()='description'][matches(lower-case(.), '^pre[\s\-\.\\_/:%]?prints?$')]/'0002') " />
<xsl:variable name="varRefereedReltn" select="//*[local-name() = 'relatedIdentifier'][./@relationType/lower-case(.)='isreviewedby']/'0001'" />
<xsl:variable name="varRefereedDesct" select="(//*[local-name() = 'description'] [matches(lower-case(.), '.*(this\s*book|this\s*volume|it)\s*constitutes\s*the\s*(thoroughly\s*)?refereed') or matches(lower-case(.), '.*peer[\.\-_/\s\(\)]?review\s*under\s*responsibility\s*of.*') or matches(lower-case(.), '(this|a)\s*(article|preprint)\s*(has\s*been\s*)?(peer[\-\s]*)?reviewed\s*and\s*recommended\s*by\s*peer[\-\s]*community')]/'0001')" />
<xsl:variable name="varRefereed" select="($varRefereedConvt, $varRefereedIdntf, $varRefereedReltn, $varRefereedVersn, $varRefereedOther, $varRefereedReltn, $varRefereedDesct)" />
<xsl:choose>
<xsl:when test="count($varRefereed[. = '0001']) &gt; 0">
<oaf:refereed>
<xsl:value-of select="'0001'" />
</oaf:refereed>
</xsl:when>
<xsl:when test="count($varRefereed[. = '0002']) &gt; 0">
<oaf:refereed>
<xsl:value-of select="'0002'" />
</oaf:refereed>
</xsl:when>
</xsl:choose>
<oaf:dateAccepted>
<xsl:value-of select="TransformationFunction:convertString($tf, normalize-space(//*[local-name()='publicationYear']), 'DateISO8601')" />
</oaf:dateAccepted>
<xsl:choose>
<xsl:when test="//*[local-name() = 'rights']/@rightsURI[starts-with(normalize-space(.), 'info:eu-repo/semantics')]">
<oaf:accessrights>
<xsl:value-of select="TransformationFunction:convertString($tf, //*[local-name() = 'rights']/@rightsURI[starts-with(normalize-space(.), 'info:eu-repo/semantics')], 'AccessRights')" />
</oaf:accessrights>
</xsl:when>
<xsl:otherwise>
<xsl:choose>
<xsl:when test="//*[local-name() = 'rights'][starts-with(normalize-space(.), 'http://creativecommons.org') or starts-with(normalize-space(.), 'Creative Commons') or starts-with(normalize-space(.), 'GNU LESSER GENERAL PUBLIC LICENSE')]">
<oaf:accessrights>
<xsl:text>OPEN</xsl:text>
</oaf:accessrights>
</xsl:when>
<xsl:when test="//*[local-name() = 'rights']/@rightsURI[starts-with(normalize-space(.), 'http://creativecommons.org') or starts-with(normalize-space(.), 'http://opendatacommons.org')]">
<oaf:accessrights>
<xsl:text>OPEN</xsl:text>
</oaf:accessrights>
</xsl:when>
<xsl:when test="//*[local-name() = 'rights'][starts-with(normalize-space(.), 'Open access data at least for academic use')]">
<oaf:accessrights>
<xsl:text>RESTRICTED</xsl:text>
</oaf:accessrights>
</xsl:when>
<xsl:otherwise>
<oaf:accessrights>
<xsl:text>UNKNOWN</xsl:text>
</oaf:accessrights>
</xsl:otherwise>
</xsl:choose>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="//*[local-name()='rights']/@rightsURI[starts-with(normalize-space(.), 'http') and matches(., '.*(/licenses|/publicdomain|unlicense.org/|/legal-and-data-protection-notices|/download/license|/open-government-licence).*')]">
<oaf:license>
<xsl:value-of select="." />
</oaf:license>
</xsl:for-each>
<oaf:language>
<xsl:value-of select="TransformationFunction:convert($tf, //*[local-name()='language'], 'Languages')" />
</oaf:language>
<oaf:hostedBy>
<xsl:attribute name="name">
<xsl:value-of select="$varOfficialName" />
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$varDataSourceId" />
</xsl:attribute>
</oaf:hostedBy>
<oaf:collectedFrom>
<xsl:attribute name="name">
<xsl:value-of select="$varOfficialName" />
</xsl:attribute>
<xsl:attribute name="id">
<xsl:value-of select="$varDataSourceId" />
</xsl:attribute>
</oaf:collectedFrom>
</metadata>
<xsl:copy-of select="//*[local-name() = 'about']" />
</record>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="//*[local-name() = 'metadata']//*[local-name() = 'resource']">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="//*[local-name() = 'resource']/*[local-name()='identifier']">
<xsl:if test=".[@identifierType='Handle'][contains(., '://hdl.handle.net/')]">
<xsl:element name="identifier" namespace="http://datacite.org/schema/kernel-4">
<xsl:attribute name="identifierType">
<xsl:value-of select="'Handle'" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="//*[local-name() = 'resource']/*[local-name()='alternateIdentifier']">
<xsl:choose>
<xsl:when test="@alternateIdentifierType">
<xsl:copy-of select="." />
</xsl:when>
<xsl:otherwise>
<xsl:element name="alternateIdentifier" namespace="http://datacite.org/schema/kernel-4">
<xsl:attribute name="alternateIdentifierType">
<xsl:value-of select="./@identifierType" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="//*[local-name() = 'header']">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
<xsl:element name="dr:dateOfTransformation">
<xsl:value-of select="$transDate" />
</xsl:element>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,95 @@
<xsl:stylesheet xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dri="http://www.driver-repository.eu/namespace/dri" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oai="http://www.openarchives.org/OAI/2.0/" xmlns:oaf="http://namespace.openaire.eu/oaf" xmlns:date="http://exslt.org/dates-and-times" xmlns:dr="http://www.driver-repository.eu/namespace/dr" xmlns:datacite="http://datacite.org/schema/kernel-4" version="2.0">
<xsl:output indent="yes" />
<xsl:param name="varOfficialName" />
<xsl:param name="varDataSourceId" />
<xsl:param name="quote">"</xsl:param>
<xsl:variable name="baseURL" select="string('https://raw.githubusercontent.com/OpenAPC/openapc-de/master/data/apc_de.csv')" />
<xsl:template name="terminate">
<xsl:message terminate="yes"> record is not compliant, transformation is interrupted.
</xsl:message>
</xsl:template>
<xsl:template match="/">
<xsl:call-template name="oapcRecord" />
</xsl:template>
<xsl:template name="oapcRecord">
<xsl:variable name="period" select="//column[./@name = 'period']/text()" />
<xsl:variable name="institution" select="//column[./@name = 'institution']/text()" />
<xsl:variable name="doi" select="//column[./@name = 'doi']/text()" />
<xsl:variable name="euro" select="//column[./@name = 'euro']/text()" />
<xsl:variable name="issn" select="//column[./@name = 'issn']/text()" />
<xsl:variable name="jftitle" select="//column[./@name = 'journal_full_title']/text()" />
<xsl:variable name="pmcid" select="//column[./@name = 'pmcid']/text()" />
<xsl:variable name="pmid" select="//column[./@name = 'pmid']/text()" />
<!-- xsl:variable name="gridid" select="//column[./@name = 'grid_id']/text()"/>
<xsl:variable name="rorid" select="//column[./@name = 'ror_id']/text()"/ -->
<xsl:variable name="license" select="//column[./@name = 'license_ref']/text()" />
<oai:record>
<oai:header>
<xsl:copy-of copy-namespaces="no" select="//*[local-name() = 'header']/*" />
<dr:dateOfTransformation>
<xsl:value-of select="date:date-time()" />
</dr:dateOfTransformation>
</oai:header>
<metadata xmlns="http://namespace.openaire.eu/">
<oaf:identifier identifierType="doi">
<xsl:value-of select="$doi" />
</oaf:identifier>
<oaf:identifier identifierType="pmcid">
<xsl:value-of select="$pmcid" />
</oaf:identifier>
<oaf:identifier identifierType="pmid">
<xsl:value-of select="$pmid" />
</oaf:identifier>
<!-- xsl:when test="//column[./@name = 'grid_id']/text()">
<datacite:affiliation affiliationIdentifier="$gridid" affiliationIdentifierScehme="GRID" SchemeURI="https://www.grid.ac/">
<xsl:value-of select="$institution" />
</datacite:affiliation>
</xsl:when -->
<oaf:processingchargeamount>
<xsl:attribute name="currency">EUR</xsl:attribute>
<xsl:value-of select="$euro" />
</oaf:processingchargeamount>
<oaf:journal>
<xsl:attribute name="issn">
<xsl:value-of select="$issn" />
</xsl:attribute>
<xsl:value-of select="$jftitle" />
</oaf:journal>
<dc:license>
<xsl:value-of select="$license" />
</dc:license>
<dc:date>
<xsl:value-of select="$period" />
</dc:date>
<dr:CobjCategory type="publication">0004</dr:CobjCategory>
<oaf:accessrights>OPEN</oaf:accessrights>
<datacite:rights rightsURI="http://purl.org/coar/access_right/c_abf2">open access</datacite:rights>
<oaf:hostedBy>
<xsl:attribute name="name">Global OpenAPC Initiative</xsl:attribute>
<xsl:attribute name="id">openaire____::openapc_initiative</xsl:attribute>
</oaf:hostedBy>
<oaf:collectedFrom>
<xsl:attribute name="name">Global OpenAPC Initiative</xsl:attribute>
<xsl:attribute name="id">openaire____::openapc_initiative</xsl:attribute>
</oaf:collectedFrom>
</metadata>
<oaf:about xmlns:oai="http://wwww.openarchives.org/OAI/2.0/">
<oaf:datainfo>
<oaf:inferred>false</oaf:inferred>
<oaf:deletedbyinference>false</oaf:deletedbyinference>
<oaf:trust>0.9</oaf:trust>
<oaf:inferenceprovenance />
<oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive" classname="sysimport:crosswalk:datasetarchive" schemeid="dnet:provenanceActions" schemename="dnet:provenanceActions" />
</oaf:datainfo>
</oaf:about>
</oai:record>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,116 @@
<xsl:stylesheet xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dri="http://www.driver-repository.eu/namespace/dri"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
xmlns:oaf="http://namespace.openaire.eu/oaf"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:dr="http://www.driver-repository.eu/namespace/dr"
xmlns:datacite="http://datacite.org/schema/kernel-4"
version="2.0">
<xsl:output indent="yes"/>
<xsl:param name="varOfficialName"/>
<xsl:param name="varDataSourceId"/>
<xsl:param name="quote">"</xsl:param>
<xsl:variable name="baseURL" select="string('https://raw.githubusercontent.com/OpenAPC/openapc-de/master/data/apc_de.csv')"/>
<xsl:template name="terminate">
<xsl:message terminate="yes"> record is not compliant, transformation is interrupted.
</xsl:message>
</xsl:template>
<xsl:template match="/">
<xsl:call-template name="oapcRecord"/>
</xsl:template>
<xsl:template name="oapcRecord">
<xsl:variable name="period" select="//column[./@name = 'period']/text()"/>
<xsl:variable name="institution" select="//column[./@name = 'institution']/text()"/>
<xsl:variable name="doi" select="//column[./@name = 'doi']/text()"/>
<xsl:variable name="euro" select="//column[./@name = 'euro']/text()"/>
<xsl:variable name="issn" select="//column[./@name = 'issn']/text()"/>
<xsl:variable name="jftitle" select="//column[./@name = 'journal_full_title']/text()"/>
<xsl:variable name="pmcid" select="//column[./@name = 'pmcid']/text()"/>
<xsl:variable name="pmid" select="//column[./@name = 'pmid']/text()"/>
<xsl:variable name="gridid" select="//column[./@name = 'grid_id']/text()"/>
<xsl:variable name="rorid" select="//column[./@name = 'ror_id']/text()"/>
<xsl:variable name="license" select="//column[./@name = 'license_ref']/text()"/>
<oai:record>
<oai:header>
<xsl:copy-of copy-namespaces="no" select="//*[local-name() = 'header']/*"/>
<dr:dateOfTransformation>
<xsl:value-of select="date:date-time()"/>
</dr:dateOfTransformation>
</oai:header>
<metadata xmlns="http://namespace.openaire.eu/">
<oaf:identifier identifierType="doi">
<xsl:value-of select="$doi" />
</oaf:identifier>
<oaf:identifier identifierType="pmcid">
<xsl:value-of select="$pmcid" />
</oaf:identifier>
<oaf:identifier identifierType="pmid">
<xsl:value-of select="$pmid" />
</oaf:identifier>
<xsl:when test="string-length($gridid) > 0">
<datacite:affiliation>
<xsl:attribute name="affiliationIdentifierScheme" select="'GRID'"/>
<xsl:attribute name="schemeURI" select="'https://www.grid.ac/'"/>
<xsl:attribute name="affiliationIdentifier" select="$gridid"/>
<xsl:value-of select="$institution" />
</datacite:affiliation>
</xsl:when>
<xsl:when test="string-length($rorid) > 0">
<datacite:affiliation>
<xsl:attribute name="affiliationIdentifierScheme" select="'ROR'"/>
<xsl:attribute name="affiliationIdentifier" select="$rorid"/>
<xsl:value-of select="$institution" />
</datacite:affiliation>
</xsl:when>
<oaf:processingchargeamount>
<xsl:attribute name="currency">EUR</xsl:attribute>
<xsl:value-of select="$euro" />
</oaf:processingchargeamount>
<oaf:journal>
<xsl:attribute name="issn">
<xsl:value-of select="$issn" />
</xsl:attribute>
<xsl:value-of select="$jftitle" />
</oaf:journal>
<dc:license>
<xsl:value-of select="$license" />
</dc:license>
<dc:date>
<xsl:value-of select="$period" />
</dc:date>
<dr:CobjCategory type="publication">0004</dr:CobjCategory>
<oaf:accessrights>OPEN</oaf:accessrights>
<datacite:rights rightsURI="http://purl.org/coar/access_right/c_abf2">open access</datacite:rights>
<oaf:hostedBy>
<xsl:attribute name="name">Global OpenAPC Initiative</xsl:attribute>
<xsl:attribute name="id">openaire____::openapc_initiative</xsl:attribute>
</oaf:hostedBy>
<oaf:collectedFrom>
<xsl:attribute name="name">Global OpenAPC Initiative</xsl:attribute>
<xsl:attribute name="id">openaire____::openapc_initiative</xsl:attribute>
</oaf:collectedFrom>
</metadata>
<oaf:about xmlns:oai="http://wwww.openarchives.org/OAI/2.0/">
<oaf:datainfo>
<oaf:inferred>false</oaf:inferred>
<oaf:deletedbyinference>false</oaf:deletedbyinference>
<oaf:trust>0.9</oaf:trust>
<oaf:inferenceprovenance/>
<oaf:provenanceaction classid="sysimport:crosswalk:datasetarchive"
classname="sysimport:crosswalk:datasetarchive"
schemeid="dnet:provenanceActions"
schemename="dnet:provenanceActions"/>
</oaf:datainfo>
</oaf:about>
</oai:record>
</xsl:template>
</xsl:stylesheet>