forked from D-Net/dnet-hadoop
Merge branch 'hadoop_aggregator' of https://code-repo.d4science.org/D-Net/dnet-hadoop into hadoop_aggregator
This commit is contained in:
commit
aa55dedb8a
|
@ -53,11 +53,21 @@ abstract class AbstractRestClient extends Iterator[String]{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private def doHTTPRequest[A <: HttpUriRequest](r: A) :String ={
|
private def doHTTPRequest[A <: HttpUriRequest](r: A) :String ={
|
||||||
val client = HttpClients.createDefault
|
val client = HttpClients.createDefault
|
||||||
try {
|
try {
|
||||||
val response = client.execute(r)
|
var tries = 4
|
||||||
IOUtils.toString(response.getEntity.getContent)
|
while (tries > 0) {
|
||||||
|
val response = client.execute(r)
|
||||||
|
if (response.getStatusLine.getStatusCode > 400) {
|
||||||
|
tries -= 1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return IOUtils.toString(response.getEntity.getContent)
|
||||||
|
}
|
||||||
|
""
|
||||||
} catch {
|
} catch {
|
||||||
case e: Throwable =>
|
case e: Throwable =>
|
||||||
throw new RuntimeException("Error on executing request ", e)
|
throw new RuntimeException("Error on executing request ", e)
|
||||||
|
|
|
@ -66,7 +66,7 @@ object DataciteToOAFTransformation {
|
||||||
val unknown_repository: HostedByMapType = HostedByMapType("openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18", "Unknown Repository", "Unknown Repository", Some(1.0F))
|
val unknown_repository: HostedByMapType = HostedByMapType("openaire____::1256f046-bf1f-4afc-8b47-d0b147148b18", "Unknown Repository", "Unknown Repository", Some(1.0F))
|
||||||
|
|
||||||
val dataInfo: DataInfo = generateDataInfo("0.9")
|
val dataInfo: DataInfo = generateDataInfo("0.9")
|
||||||
val DATACITE_COLLECTED_FROM: KeyValue = OafMapperUtils.keyValue("openaire____::datacite", "Datacite")
|
val DATACITE_COLLECTED_FROM: KeyValue = OafMapperUtils.keyValue("openaire____::9e3be59865b2c1c335d32dae2fe7b254", "Datacite")
|
||||||
|
|
||||||
val hostedByMap: Map[String, HostedByMapType] = {
|
val hostedByMap: Map[String, HostedByMapType] = {
|
||||||
val s = Source.fromInputStream(getClass.getResourceAsStream("hostedBy_map.json")).mkString
|
val s = Source.fromInputStream(getClass.getResourceAsStream("hostedBy_map.json")).mkString
|
||||||
|
|
|
@ -27,13 +27,17 @@ public class Cleaner implements ExtensionFunction, Serializable {
|
||||||
@Override
|
@Override
|
||||||
public SequenceType[] getArgumentTypes() {
|
public SequenceType[] getArgumentTypes() {
|
||||||
return new SequenceType[] {
|
return new SequenceType[] {
|
||||||
SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE),
|
SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ZERO_OR_MORE),
|
||||||
SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE)
|
SequenceType.makeSequenceType(ItemType.STRING, OccurrenceIndicator.ONE)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public XdmValue call(XdmValue[] xdmValues) throws SaxonApiException {
|
public XdmValue call(XdmValue[] xdmValues) throws SaxonApiException {
|
||||||
|
XdmValue r = xdmValues[0];
|
||||||
|
if (r.size() == 0){
|
||||||
|
return new XdmAtomicValue("");
|
||||||
|
}
|
||||||
final String currentValue = xdmValues[0].itemAt(0).getStringValue();
|
final String currentValue = xdmValues[0].itemAt(0).getStringValue();
|
||||||
final String vocabularyName = xdmValues[1].itemAt(0).getStringValue();
|
final String vocabularyName = xdmValues[1].itemAt(0).getStringValue();
|
||||||
Qualifier cleanedValue = vocabularies.getSynonymAsQualifier(vocabularyName, currentValue);
|
Qualifier cleanedValue = vocabularies.getSynonymAsQualifier(vocabularyName, currentValue);
|
||||||
|
|
|
@ -61,13 +61,19 @@ public class TransformationJobTest extends AbstractVocabularyTest {
|
||||||
|
|
||||||
// We Set the input Record getting the XML from the classpath
|
// We Set the input Record getting the XML from the classpath
|
||||||
final MetadataRecord mr = new MetadataRecord();
|
final MetadataRecord mr = new MetadataRecord();
|
||||||
mr.setBody(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dhp/transform/input.xml")));
|
mr.setBody(IOUtils.toString(getClass().getResourceAsStream("/eu/dnetlib/dhp/transform/input_zenodo.xml")));
|
||||||
|
|
||||||
// We Load the XSLT transformation Rule from the classpath
|
// We Load the XSLT transformation Rule from the classpath
|
||||||
XSLTTransformationFunction tr = loadTransformationRule("/eu/dnetlib/dhp/transform/ext_simple.xsl");
|
XSLTTransformationFunction tr = loadTransformationRule("/eu/dnetlib/dhp/transform/zenodo_tr.xslt");
|
||||||
|
|
||||||
|
|
||||||
|
MetadataRecord result = tr.call(mr);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Print the record
|
// Print the record
|
||||||
System.out.println(tr.call(mr).getBody());
|
System.out.println(result.getBody());
|
||||||
// TODO Create significant Assert
|
// TODO Create significant Assert
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
version="2.0"
|
version="2.0"
|
||||||
exclude-result-prefixes="xsl vocabulary">
|
exclude-result-prefixes="xsl vocabulary">
|
||||||
<xsl:template match="/">
|
<xsl:template match="/">
|
||||||
|
|
||||||
<oai:record>
|
<oai:record>
|
||||||
<xsl:copy-of select="//oai:header"/>
|
<xsl:copy-of select="//oai:header"/>
|
||||||
<metadata>
|
<metadata>
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<setSpec>PSNCRepository:PSNCExternalRepository:Departments</setSpec>
|
<setSpec>PSNCRepository:PSNCExternalRepository:Departments</setSpec>
|
||||||
<setSpec>PSNCRepository:PSNCExternalRepository:Departments:NetworkServices</setSpec>
|
<setSpec>PSNCRepository:PSNCExternalRepository:Departments:NetworkServices</setSpec>
|
||||||
<setSpec>PSNCRepository:PSNCExternalRepository</setSpec>
|
<setSpec>PSNCRepository:PSNCExternalRepository</setSpec>
|
||||||
<setSpec>PSNCRepository:PSNCExternalRepository:publications</setSpec>
|
<setSpec>aRTIcle - Letter to the editor</setSpec>
|
||||||
<setSpec>PSNCRepository</setSpec>
|
<setSpec>PSNCRepository</setSpec>
|
||||||
</header>
|
</header>
|
||||||
<metadata>
|
<metadata>
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<oai:record xmlns="http://namespace.openaire.eu/"
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:dri="http://www.driver-repository.eu/namespace/dri"
|
||||||
|
xmlns:oaf="http://namespace.openaire.eu/oaf"
|
||||||
|
xmlns:oai="http://www.openarchives.org/OAI/2.0/"
|
||||||
|
xmlns:prov="http://www.openarchives.org/OAI/2.0/provenance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<oai:header>
|
||||||
|
<dri:objIdentifier>r37b0ad08687::000374d100a9db469bd42b69dbb40b36</dri:objIdentifier>
|
||||||
|
<dri:recordIdentifier>10.5281/zenodo.3234526</dri:recordIdentifier>
|
||||||
|
<dri:dateOfCollection>2020-03-23T03:03:50.72Z</dri:dateOfCollection>
|
||||||
|
<oaf:datasourceprefix>r37b0ad08687</oaf:datasourceprefix>
|
||||||
|
<identifier xmlns="http://www.openarchives.org/OAI/2.0/">oai:zenodo.org:3234526</identifier>
|
||||||
|
<datestamp xmlns="http://www.openarchives.org/OAI/2.0/">2020-03-19T10:58:08Z</datestamp>
|
||||||
|
<setSpec xmlns="http://www.openarchives.org/OAI/2.0/">openaire_data</setSpec>
|
||||||
|
<setSpec xmlns="http://www.openarchives.org/OAI/2.0/">user-epfl</setSpec>
|
||||||
|
</oai:header>
|
||||||
|
<metadata xmlns="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<oai_datacite xmlns="http://schema.datacite.org/oai/oai-1.0/" xsi:schemaLocation="http://schema.datacite.org/oai/oai-1.0/oai_datacite.xsd">
|
||||||
|
<isReferenceQuality>true</isReferenceQuality>
|
||||||
|
<schemaVersion>3.1</schemaVersion>
|
||||||
|
<datacentreSymbol>CERN.ZENODO</datacentreSymbol>
|
||||||
|
<payload>
|
||||||
|
<resource xmlns="http://datacite.org/schema/kernel-3" xsi:schemaLocation="http://datacite.org/schema/kernel-3 http://schema.datacite.org/meta/kernel-3/metadata.xsd">
|
||||||
|
<identifier identifierType="DOI">10.5281/zenodo.3234526</identifier>
|
||||||
|
<creators>
|
||||||
|
<creator>
|
||||||
|
<creatorName>Nouchi, Vincent</creatorName>
|
||||||
|
<affiliation>Physics of Aquatic Systems Laboratory (APHYS) – Margaretha Kamprad Chair, ENAC, EPFL, Lausanne, 1015, Switzerland</affiliation>
|
||||||
|
</creator>
|
||||||
|
<creator>
|
||||||
|
<creatorName>Lavanchy, Sébastien</creatorName>
|
||||||
|
<affiliation>Physics of Aquatic Systems Laboratory (APHYS) – Margaretha Kamprad Chair, ENAC, EPFL, Lausanne, 1015, Switzerland</affiliation>
|
||||||
|
</creator>
|
||||||
|
<creator>
|
||||||
|
<creatorName>Baracchini, Theo</creatorName>
|
||||||
|
<affiliation>Physics of Aquatic Systems Laboratory (APHYS) – Margaretha Kamprad Chair, ENAC, EPFL, Lausanne, 1015, Switzerland</affiliation>
|
||||||
|
</creator>
|
||||||
|
<creator>
|
||||||
|
<creatorName>Wüest, Alfred</creatorName>
|
||||||
|
<affiliation>Physics of Aquatic Systems Laboratory (APHYS) – Margaretha Kamprad Chair, ENAC, EPFL, Lausanne, 1015, Switzerland</affiliation>
|
||||||
|
</creator>
|
||||||
|
<creator>
|
||||||
|
<creatorName>Bouffard, Damien</creatorName>
|
||||||
|
<affiliation>Eawag, Swiss Federal Institute of Aquatic Science and Technology, Surface Waters – Research and Management, Kastanienbaum, 6047, Switzerland</affiliation>
|
||||||
|
</creator>
|
||||||
|
</creators>
|
||||||
|
<titles>
|
||||||
|
<title>Temperature and ADCP data collected on Lake Geneva between 2015 and 2017</title>
|
||||||
|
</titles>
|
||||||
|
<publisher>Zenodo</publisher>
|
||||||
|
<publicationYear>2019</publicationYear>
|
||||||
|
<subjects>
|
||||||
|
<subject>Lake Geneva</subject>
|
||||||
|
<subject>temperature</subject>
|
||||||
|
<subject>ADCP</subject>
|
||||||
|
</subjects>
|
||||||
|
<dates>
|
||||||
|
<date dateType="Issued">2019-05-29</date>
|
||||||
|
</dates>
|
||||||
|
<resourceType resourceTypeGeneral="Dataset"/>
|
||||||
|
<relatedIdentifiers>
|
||||||
|
<relatedIdentifier relatedIdentifierType="DOI" relationType="IsPartOf">10.5281/zenodo.3234525</relatedIdentifier>
|
||||||
|
<relatedIdentifier relatedIdentifierType="URL" relationType="IsPartOf">https://zenodo.org/communities/epfl</relatedIdentifier>
|
||||||
|
</relatedIdentifiers>
|
||||||
|
<version>1.0.0</version>
|
||||||
|
<rightsList>
|
||||||
|
<rights rightsURI="http://creativecommons.org/licenses/by/4.0/legalcode">Creative Commons Attribution 4.0 International</rights>
|
||||||
|
<rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
|
||||||
|
</rightsList>
|
||||||
|
<descriptions>
|
||||||
|
<description descriptionType="Abstract"><p>Data collected between 2015 and 2017 on Lake Geneva by Acoustic Doppler Current Profiler (ADCP) and CTDs. One file includes all the temperature profiles, the two others are the ADCP data (up- and down-looking) at the SHL2 station (centre of the main basin). Coordinates of the SHL2 station are 534700 and 144950 in the Swiss CH1903 coordinate system. The file with the CTD data contains the coordinates of the sample location (lat, lon), times (in MATLAB time), depths (in meters) and temperatures (in &deg;C).</p>
|
||||||
|
|
||||||
|
<p>All files are in MATLAB .mat format.</p></description>
|
||||||
|
</descriptions>
|
||||||
|
</resource>
|
||||||
|
</payload>
|
||||||
|
</oai_datacite>
|
||||||
|
</metadata>
|
||||||
|
<about xmlns="">
|
||||||
|
<provenance xmlns="http://www.openarchives.org/OAI/2.0/provenance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/provenance http://www.openarchives.org/OAI/2.0/provenance.xsd">
|
||||||
|
<originDescription altered="true" harvestDate="2020-03-23T03:03:50.72Z">
|
||||||
|
<baseURL>https%3A%2F%2Fzenodo.org%2Foai2d</baseURL>
|
||||||
|
<identifier>oai:zenodo.org:3234526</identifier>
|
||||||
|
<datestamp>2020-03-19T10:58:08Z</datestamp>
|
||||||
|
<metadataNamespace/>
|
||||||
|
</originDescription>
|
||||||
|
</provenance>
|
||||||
|
<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>
|
||||||
|
</about>
|
||||||
|
</oai:record>
|
|
@ -0,0 +1,444 @@
|
||||||
|
<xsl:stylesheet
|
||||||
|
version="2.0"
|
||||||
|
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:vocabulary="http://eu/dnetlib/trasform/extension"
|
||||||
|
xmlns:dr="http://www.driver-repository.eu/namespace/dr"
|
||||||
|
exclude-result-prefixes="xsl vocabulary">
|
||||||
|
<xsl:param name="varOfficialName"/>
|
||||||
|
<xsl:param name="varDsType"/>
|
||||||
|
<xsl:param name="varDataSourceId"/>
|
||||||
|
|
||||||
|
<xsl:param name="varFP7" select="'corda_______::'"/>
|
||||||
|
<xsl:param name="varH2020" select="'corda__h2020::'"/>
|
||||||
|
<xsl:param name="varAKA" select="'aka_________::'"/>
|
||||||
|
<xsl:param name="varARC" select="'arc_________::'"/>
|
||||||
|
<xsl:param name="varCONICYT" select="'conicytf____::'"/>
|
||||||
|
<xsl:param name="varDFG" select="'dfgf________::'"/>
|
||||||
|
<xsl:param name="varFCT" select="'fct_________::'"/>
|
||||||
|
<xsl:param name="varFWF" select="'fwf_________::'"/>
|
||||||
|
<xsl:param name="varHRZZ" select="'irb_hr______::'"/>
|
||||||
|
<xsl:param name="varMESTD" select="'mestd_______::'"/>
|
||||||
|
<xsl:param name="varMZOS" select="'irb_hr______::'"/>
|
||||||
|
<xsl:param name="varNHMRC" select="'nhmrc_______::'"/>
|
||||||
|
<xsl:param name="varNIH" select="'nih_________::'"/>
|
||||||
|
<xsl:param name="varNSF" select="'nsf_________::'"/>
|
||||||
|
<xsl:param name="varNWO" select="'nwo_________::'"/>
|
||||||
|
<xsl:param name="varRCUK" select="'rcuk________::'"/>
|
||||||
|
<xsl:param name="varSFI" select="'sfi_________::'"/>
|
||||||
|
<xsl:param name="varSGOV"
|
||||||
|
select="'sgov________::'"/> <!-- SGOV awaiting DOI from Pilar, found project ids not in CSV list? -->
|
||||||
|
<xsl:param name="varSNSF" select="'snsf________::'"/>
|
||||||
|
<xsl:param name="varTARA" select="'taraexp_____::'"/> <!-- TARA awaiting DOI from André -->
|
||||||
|
<xsl:param name="varTUBITAK" select="'tubitakf____::'"/>
|
||||||
|
<xsl:param name="varWT" select="'wt__________::'"/>
|
||||||
|
|
||||||
|
<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>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:template name="validRecord">
|
||||||
|
<record>
|
||||||
|
<xsl:apply-templates select="//*[local-name() = 'header']"/>
|
||||||
|
|
||||||
|
<metadata>
|
||||||
|
<xsl:apply-templates select="//*[local-name() = 'metadata']//*[local-name() = 'resource']"/>
|
||||||
|
|
||||||
|
<xsl:if test="//*[local-name()='date']/@dateType='Available'">
|
||||||
|
<xsl:variable name='varEmbargoEndDate'
|
||||||
|
select="vocabulary:clean(normalize-space(//*[local-name()='date'][@dateType='Available']), 'DateISO8601')"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="string-length($varEmbargoEndDate) > 0">
|
||||||
|
<oaf:embargoenddate>
|
||||||
|
<xsl:value-of select="$varEmbargoEndDate"/>
|
||||||
|
</oaf:embargoenddate>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<oaf:skip>
|
||||||
|
<invalid/>
|
||||||
|
</oaf:skip>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<dr:CobjCategory>
|
||||||
|
<xsl:variable name="varCobjCategory"
|
||||||
|
select="vocabulary:clean( //*[local-name()='resourceType']/@resourceTypeGeneral, 'dnet:publication_resource')"/>
|
||||||
|
<xsl:variable name="varSuperType"
|
||||||
|
select="vocabulary:clean( $varCobjCategory, 'dnet:result_typologies')"/>
|
||||||
|
|
||||||
|
<xsl:attribute name="type">
|
||||||
|
<xsl:value-of select="$varSuperType"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of select="$varCobjCategory"/>
|
||||||
|
</dr:CobjCategory>
|
||||||
|
|
||||||
|
<!-- review status -->
|
||||||
|
<!-- Zenodo -->
|
||||||
|
<xsl:variable name="varRefereedConvt" select="for $i in (//*[local-name()='resourceType']/(., @resourceTypeGeneral), //*[local-name()='version'])
|
||||||
|
return vocabulary:clean(normalize-space($i), 'dnet:review_levels')"/>
|
||||||
|
<xsl:variable name="varRefereedIdntf"
|
||||||
|
select="//*[local-name()=('identifier', 'alternateIdentifier')][matches(lower-case(.), '.*([\s\-\.\\_/:]|%[2-7][0-9A-F])pre([\s\-\.\\_/:]|%[2-7][0-9A-F])?prints?([\s\-\.\\_/:%].*|$)')]/'0002' "/>
|
||||||
|
<xsl:variable name="varRefereedReltn"
|
||||||
|
select="//*[local-name()='relatedIdentifier'][./@relationType/lower-case(.)='isreviewedby']/'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="varRefereed"
|
||||||
|
select="($varRefereedConvt, $varRefereedIdntf, $varRefereedReltn, $varRefereedVersn, $varRefereedOther)"/>
|
||||||
|
<xsl:choose>
|
||||||
|
<xsl:when test="count($varRefereed[. = '0001']) > 0">
|
||||||
|
<oaf:refereed>
|
||||||
|
<xsl:value-of select="'0001'"/>
|
||||||
|
</oaf:refereed>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="count($varRefereed[. = '0002']) > 0">
|
||||||
|
<oaf:refereed>
|
||||||
|
<xsl:value-of select="'0002'"/>
|
||||||
|
</oaf:refereed>
|
||||||
|
</xsl:when>
|
||||||
|
</xsl:choose>
|
||||||
|
|
||||||
|
<oaf:dateAccepted>
|
||||||
|
<xsl:value-of
|
||||||
|
select="normalize-space(//*[local-name()='publicationYear'])"/>
|
||||||
|
</oaf:dateAccepted>
|
||||||
|
<xsl:choose>
|
||||||
|
|
||||||
|
<xsl:when
|
||||||
|
test="//*[local-name() = 'rights'][starts-with(normalize-space(.), 'info:eu-repo/semantics')]">
|
||||||
|
<oaf:accessrights>
|
||||||
|
<xsl:value-of
|
||||||
|
select="vocabulary:clean( //*[local-name() = 'rights'][starts-with(normalize-space(.), 'info:eu-repo/semantics')], 'dnet:access_modes')"/>
|
||||||
|
</oaf:accessrights>
|
||||||
|
</xsl:when>
|
||||||
|
<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')]">
|
||||||
|
<oaf:accessrights>
|
||||||
|
<xsl:text>OPEN</xsl:text>
|
||||||
|
</oaf:accessrights>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:otherwise>
|
||||||
|
<oaf:accessrights>
|
||||||
|
<xsl:text>CLOSED</xsl:text>
|
||||||
|
</oaf:accessrights>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:otherwise>
|
||||||
|
</xsl:choose>
|
||||||
|
|
||||||
|
<oaf:language>
|
||||||
|
<xsl:value-of
|
||||||
|
select="vocabulary:clean(//*[local-name()='language'], 'dnet:languages')"/>
|
||||||
|
</oaf:language>
|
||||||
|
|
||||||
|
|
||||||
|
<xsl:for-each
|
||||||
|
select="//*[local-name()='nameIdentifier'][contains(., 'info:eu-repo/grantAgreement/')], //*[local-name()='fundingReference']/*[local-name()='awardNumber']">
|
||||||
|
<xsl:choose>
|
||||||
|
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), '(info:eu-repo/grantagreement/ec/fp7/)(\d\d\d\d\d\d)(.*)', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/100011102']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varFP7, replace(normalize-space(.), '(info:eu-repo/grantagreement/ec/fp7/)(\d\d\d\d\d\d)(.*)', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), '(info:eu-repo/grantagreement/ec/h2020/)(\d\d\d\d\d\d)(.*)', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100000780']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varH2020, replace(normalize-space(.), '(info:eu-repo/grantagreement/ec/h2020/)(\d\d\d\d\d\d)(.*)', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/aka/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100002341']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varAKA, replace(normalize-space(.), '(info:eu-repo/grantagreement/aka/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/arc/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100000923']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varARC, replace(normalize-space(.), '(info:eu-repo/grantagreement/arc/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/conicyt/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100002848']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varCONICYT, replace(normalize-space(.), '(info:eu-repo/grantagreement/conicyt/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/dfg/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100001659']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varDFG, replace(normalize-space(.), '(info:eu-repo/grantagreement/dfg/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/fct/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100001871']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varFCT, replace(normalize-space(.), '(info:eu-repo/grantagreement/fct/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/fwf/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100002428']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varFWF, replace(normalize-space(.), '(info:eu-repo/grantagreement/fwf/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/hrzz/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100004488']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varHRZZ, replace(normalize-space(.), '(info:eu-repo/grantagreement/hrzz/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="matches(normalize-space(.), 'info:eu-repo/grantagreement/mestd/.*', 'i')">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varMESTD, replace(normalize-space(.), '(info:eu-repo/grantagreement/mestd/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="matches(normalize-space(.), 'info:eu-repo/grantagreement/mzos/.*', 'i')">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varMZOS, replace(normalize-space(.), '(info:eu-repo/grantagreement/mzos/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/nhmrc/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100000925']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varNHMRC, replace(normalize-space(.), '(info:eu-repo/grantagreement/nhmrc/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/nih/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/100000002']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varNIH, replace(normalize-space(.), '(info:eu-repo/grantagreement/nih/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/nsf/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/100000001']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varNSF, replace(normalize-space(.), '(info:eu-repo/grantagreement/nsf/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/nwo/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100003246']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varNWO, replace(normalize-space(.), '(info:eu-repo/grantagreement/nwo/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/rcuk/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100000690']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varRCUK, replace(normalize-space(.), '(info:eu-repo/grantagreement/rcuk/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/sfi/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100001602']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varSFI, replace(normalize-space(.), '(info:eu-repo/grantagreement/sfi/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="matches(normalize-space(.), 'info:eu-repo/grantagreement/sgov/.*', 'i')">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varSGOV, replace(normalize-space(.), '(info:eu-repo/grantagreement/sgov/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/snsf/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100001711']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varSNSF, replace(normalize-space(.), '(info:eu-repo/grantagreement/snsf/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when test="matches(normalize-space(.), 'info:eu-repo/grantagreement/tara/.*', 'i')">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varTARA, replace(normalize-space(.), '(info:eu-repo/grantagreement/tara/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/tubitak/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/501100004410']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varTUBITAK, replace(normalize-space(.), '(info:eu-repo/grantagreement/tubitak/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
<xsl:when
|
||||||
|
test="matches(normalize-space(.), 'info:eu-repo/grantagreement/wt/.*', 'i') or ../*[local-name() = 'funderIdentifier' and . = '10.13039/100004440']">
|
||||||
|
<oaf:projectid>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat($varWT, replace(normalize-space(.), '(info:eu-repo/grantagreement/wt/.*?/)([^/]*)(/.*)?', '$2', 'i'))"/>
|
||||||
|
</oaf:projectid>
|
||||||
|
</xsl:when>
|
||||||
|
|
||||||
|
</xsl:choose>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<xsl:for-each select="//*[local-name()='relatedIdentifier']">
|
||||||
|
<xsl:if
|
||||||
|
test="starts-with(./text(), 'https://zenodo.org/communities/')">
|
||||||
|
<oaf:concept>
|
||||||
|
<xsl:attribute name="id">
|
||||||
|
<xsl:value-of select="./text()"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
</oaf:concept>
|
||||||
|
</xsl:if>
|
||||||
|
</xsl:for-each>
|
||||||
|
|
||||||
|
<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()='alternateIdentifiers']">
|
||||||
|
<xsl:element name="alternateIdentifiers" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
|
||||||
|
<xsl:copy-of select="./*"/>
|
||||||
|
|
||||||
|
<xsl:if test="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='Handle']">
|
||||||
|
<xsl:element name="alternateIdentifier" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:attribute name="alternateIdentifierType">
|
||||||
|
<xsl:value-of select="'URL'"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat('http://hdl.handle.net/', //*[local-name() = 'resource']/*[local-name()='identifier'])"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:if test="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='URN']">
|
||||||
|
<xsl:element name="alternateIdentifier" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:attribute name="alternateIdentifierType">
|
||||||
|
<xsl:value-of select="'URL'"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat('http://nbn-resolving.org/', //*[local-name() = 'resource']/*[local-name()='identifier'])"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
<xsl:if test="//*[local-name() = 'resource']/*[local-name()='identifier'][@identifierType='DOI']">
|
||||||
|
<xsl:element name="alternateIdentifier" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:attribute name="alternateIdentifierType">
|
||||||
|
<xsl:value-of select="'URL'"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat('http://dx.doi.org/', //*[local-name() = 'resource']/*[local-name()='identifier'])"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
</xsl:element>
|
||||||
|
|
||||||
|
</xsl:template>
|
||||||
|
|
||||||
|
<xsl:template match="//*[local-name() = 'resource']/*[local-name()='identifier']">
|
||||||
|
<xsl:copy-of select="."/>
|
||||||
|
<xsl:if test="not(//*[local-name() = 'resource']/*[local-name()='alternateIdentifiers'])">
|
||||||
|
<xsl:element name="alternateIdentifiers" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:if test=".[@identifierType='Handle']">
|
||||||
|
<xsl:element name="alternateIdentifier" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:attribute name="alternateIdentifierType">
|
||||||
|
<xsl:value-of select="'URL'"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat('http://hdl.handle.net/', .)"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test=".[@identifierType='URN']">
|
||||||
|
<xsl:element name="alternateIdentifier" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:attribute name="alternateIdentifierType">
|
||||||
|
<xsl:value-of select="'URL'"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat('http://nbn-resolving.org/', .)"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
<xsl:if test=".[@identifierType='DOI']">
|
||||||
|
<xsl:element name="alternateIdentifier" namespace="http://www.openarchives.org/OAI/2.0/">
|
||||||
|
<xsl:attribute name="alternateIdentifierType">
|
||||||
|
<xsl:value-of select="'URL'"/>
|
||||||
|
</xsl:attribute>
|
||||||
|
<xsl:value-of
|
||||||
|
select="concat('http://dx.doi.org/', .)"/>
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
</xsl:element>
|
||||||
|
</xsl:if>
|
||||||
|
|
||||||
|
</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>
|
Loading…
Reference in New Issue