| XML schema |
http://bd.eionet.europa.eu/schemas/Art12Art17_reporting_2013/art17_habitats.xsd
|
|---|---|
| Output type | RDF |
| Description | RDF output |
| XSL file | habitats-rdf.xsl (Last modified: 04 Jul 2013 13:07 ) |
<?xml version="1.0" encoding="UTF-8"?>
<!-- $Id: habitats_species-rdf.xsl 14357 2013-07-04 13:06:46Z roug $ -->
<!DOCTYPE xsl:stylesheet [
<!ENTITY biogeo "http://rdfdata.eionet.europa.eu/eea/biogeographic-regions/">
<!ENTITY countries "http://rdfdata.eionet.europa.eu/eea/countries/">
<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#">
<!ENTITY asmnt "http://dd.eionet.europa.eu/vocabulary/art17_2012/assessments/">
<!ENTITY pmethod "http://dd.eionet.europa.eu/vocabulary/art17_2012/methods_pressures/">
<!ENTITY umethod "http://dd.eionet.europa.eu/vocabulary/art17_2012/methods_used/">
<!ENTITY trend "http://dd.eionet.europa.eu/vocabulary/art17_2012/trends/">
<!ENTITY ctrend "http://dd.eionet.europa.eu/vocabulary/art17_2012/trends_conclusion/">
<!ENTITY measures "http://dd.eionet.europa.eu/vocabulary/art17_2012/measures/">
<!ENTITY pnumber "http://dd.eionet.europa.eu/vocabulary/art17_2012/population_number/">
]>
<xsl:stylesheet version="1.0"
xmlns="http://rdfdata.eionet.europa.eu/article17/ontology/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:l="http://biodiversity.eionet.europa.eu/art17dataflow">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="habitat_reports|species_reports">
<rdf:RDF>
<!-- <xsl:attribute name="xml:lang"><xsl:value-of select="@xml:lang"/></xsl:attribute> -->
<xsl:apply-templates/>
</rdf:RDF>
</xsl:template>
<xsl:template match="habitat_report">
<HabitatTypeReport>
<xsl:attribute name="rdf:about">#<xsl:value-of select="habitatcode"/></xsl:attribute>
<rdfs:label>Habitats directive art. 17 report for habitat type <xsl:value-of select="habitatcode"/> in <xsl:value-of select="country/@desc"/></rdfs:label>
<xsl:apply-templates/>
</HabitatTypeReport>
</xsl:template>
<xsl:template match="species_report">
<SpeciesReport>
<xsl:attribute name="rdf:about">#<xsl:value-of select="speciescode"/></xsl:attribute>
<rdfs:label>Habitat Directive Art. 17 report on <xsl:value-of select="speciesname"/> in <xsl:value-of select="country/@desc"/></rdfs:label>
<xsl:apply-templates/>
</SpeciesReport>
</xsl:template>
<xsl:template match="regional">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="habitat_report/regional/region">
<hasRegionalReport>
<HabitatTypeRegionalReport>
<xsl:attribute name="rdf:about">#<xsl:value-of select="code"/><xsl:value-of select="../../habitatcode"/></xsl:attribute>
<rdfs:label>Report on habitat type <xsl:value-of select="../../habitatcode"/> for <xsl:value-of select="code"/> biogeographical region in <xsl:value-of select="../../country/@desc"/></rdfs:label>
<forCountry>
<xsl:attribute name="rdf:resource">&countries;<xsl:value-of select="../../country/@isocode"/></xsl:attribute>
</forCountry>
<memberstate>
<xsl:value-of select="../../country/@desc"/>
</memberstate>
<habitatcode>
<xsl:value-of select="../../habitatcode"/>
</habitatcode>
<region>
<xsl:attribute name="rdf:resource">&biogeo;<xsl:value-of select="code"/></xsl:attribute>
</region>
<xsl:apply-templates/>
</HabitatTypeRegionalReport>
</hasRegionalReport>
</xsl:template>
<xsl:template match="species_report/regional/region">
<hasRegionalReport>
<SpeciesRegionalReport>
<xsl:attribute name="rdf:about">#<xsl:value-of select="code"/><xsl:value-of select="../../speciescode"/></xsl:attribute>
<rdfs:label>Report on species <xsl:value-of select="../../speciescode"/> for <xsl:value-of select="code"/> biogeographical region in <xsl:value-of select="../../country/@desc"/></rdfs:label>
<forCountry>
<xsl:attribute name="rdf:resource">&countries;<xsl:value-of select="../../country/@isocode"/></xsl:attribute>
</forCountry>
<memberstate>
<xsl:value-of select="../../country/@desc"/>
</memberstate>
<speciescode>
<xsl:value-of select="../../speciescode"/>
</speciescode>
<speciesname>
<xsl:value-of select="../../speciesname"/>
</speciesname>
<region>
<xsl:attribute name="rdf:resource">&biogeo;<xsl:value-of select="code"/></xsl:attribute>
</region>
<xsl:apply-templates/>
</SpeciesRegionalReport>
</hasRegionalReport>
</xsl:template>
<!-- Country reference -->
<xsl:template match="country">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:resource">&countries;<xsl:value-of select="@isocode"/></xsl:attribute>
</xsl:element>
</xsl:template>
<!-- Boolean properties -->
<xsl:template match="distribution_map|additional_distribution_map|range_map|
complementary_favourable_range_unknown|
range_reasons_for_change_a|range_reasons_for_change_b|range_reasons_for_change_c|
complementary_favourable_area_unknown|
area_reasons_for_change_a|area_reasons_for_change_b|area_reasons_for_change_c|
type_legal|type_administrative|type_contractual|type_recurrent|type_oneoff|
location_inside|location_outside|location_both|sensitive_species|
broad_evaluation_maintain|broad_evaluation_enhance|broad_evaluation_longterm|
broad_evaluation_noeffect|broad_evaluation_unknown|broad_evaluation_notevaluated|
complementary_favourable_population_unknown|
population_reasons_for_change_a|population_reasons_for_change_b|population_reasons_for_change_c|
habitat_reasons_for_change_a|habitat_reasons_for_change_b|habitat_reasons_for_change_c">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:datatype">&xsd;boolean</xsl:attribute>
<xsl:value-of select="."/></xsl:element>
</xsl:template>
<!-- Assessments -->
<xsl:template match="conclusion_range|conclusion_area|conclusion_structure|conclusion_future|conclusion_assessment|
conclusion_population|conclusion_habitat">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:resource">&asmnt;<xsl:value-of select="normalize-space(text())"/></xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
<!-- Method used -->
<xsl:template match="coverage_method|coverage_trend_method|coverage_trend_long_method|
distribution_method|habitat_method|
population_method|population_trend_method|population_trend_long_method|
range_method|structure_and_functions_method|
natura2000_area_method|natura2000_population_method">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:resource">&umethod;<xsl:value-of select="normalize-space(text())"/></xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
<!-- Pressures method -->
<xsl:template match="pressures_method">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:resource">&pmethod;<xsl:value-of select="normalize-space(text())"/></xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
<!-- Population units -->
<xsl:template match="population_size_unit|natura2000_population_unit">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:resource">&pnumber;<xsl:value-of select="normalize-space(text())"/></xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="ranking">
<xsl:if test="normalize-space(text()) != ''">
<xsl:call-template name="one-resource-predicate">
<xsl:with-param name="text" select="text()"/>
<xsl:with-param name="table" select="local-name(.)"/>
<xsl:with-param name="predicate" select="local-name(.)"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Trend -->
<xsl:template match="coverage_trend|coverage_trend_long|
habitat_trend|habitat_trend_long|
natura2000_area_trend|natura2000_population_trend|
population_trend|population_trend_long|
range_trend|range_trend_long">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}">
<xsl:choose>
<xsl:when test="normalize-space(text()) = '+'">
<xsl:attribute name="rdf:resource">&trend;i</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(text()) = '-'">
<xsl:attribute name="rdf:resource">&trend;d</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="rdf:resource">&trend;<xsl:value-of select="text()"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:if>
</xsl:template>
<!-- Conclusion trend -->
<xsl:template match="conclusion_area_trend|conclusion_range_trend|
conclusion_population_trend|conclusion_habitat_trend|
conclusion_future_trends|conclusion_assessment_trend|
conclusion_structure_trend|conclusion_future_trend">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}">
<xsl:choose>
<xsl:when test="normalize-space(text()) = '+'">
<xsl:attribute name="rdf:resource">&ctrend;p</xsl:attribute>
</xsl:when>
<xsl:when test="normalize-space(text()) = '-'">
<xsl:attribute name="rdf:resource">&ctrend;m</xsl:attribute>
</xsl:when>
<xsl:otherwise>
<xsl:attribute name="rdf:resource">&ctrend;<xsl:value-of select="text()"/></xsl:attribute>
</xsl:otherwise>
</xsl:choose>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template match="pressures|threats|pollution_qualifiers|typical_species|measures">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="pollution_qualifier">
<xsl:call-template name="code-name">
<xsl:with-param name="predicate" select="'pollution_qualifier'"/>
<xsl:with-param name="text" select="code/@desc"/>
</xsl:call-template>
<xsl:apply-templates select="child::node()[name() != 'code']"/>
</xsl:template>
<xsl:template match="pressure|threat">
<xsl:element name="{local-name()}">
<xsl:attribute name="rdf:parseType">Resource</xsl:attribute>
<rdfs:label><xsl:value-of select="code/@desc"/></rdfs:label>
<xsl:call-template name="one-resource-predicate">
<xsl:with-param name="text" select="code"/>
<xsl:with-param name="table" select="'threats'"/>
<xsl:with-param name="predicate" select="'forPressureThreat'"/>
</xsl:call-template>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<!-- TODO check if measures will be added to rdfdata -->
<xsl:template match="measure">
<measure>
<xsl:attribute name="rdf:parseType">Resource</xsl:attribute>
<rdfs:label><xsl:value-of select="code/@desc"/></rdfs:label>
<xsl:call-template name="one-resource-predicate">
<xsl:with-param name="text" select="code"/>
<xsl:with-param name="table" select="local-name(parent::*)"/>
<xsl:with-param name="predicate" select="'forMeasure'"/>
</xsl:call-template>
<xsl:apply-templates/>
</measure>
</xsl:template>
<!--
<xsl:template match="published">
<xsl:if test="normalize-space(text()) != ''">
<xsl:call-template name="break-at-newlines">
<xsl:with-param name="text" select="published"/>
<xsl:with-param name="predicate" select="'published'"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
-->
<xsl:template match="species">
<xsl:if test="normalize-space(speciesname) != ''">
<typicalSpecies><xsl:value-of select="normalize-space(speciesname)"/></typicalSpecies>
</xsl:if>
</xsl:template>
<xsl:template name="one-resource-predicate">
<xsl:param name="text"/>
<xsl:param name="predicate"/>
<xsl:param name="table"/>
<xsl:if test="string-length($text) != 0">
<xsl:element name="{$predicate}">
<xsl:attribute name="rdf:resource">http://dd.eionet.europa.eu/vocabulary/art17_2012/<xsl:value-of
select="$table" />/<xsl:value-of select="$text"/></xsl:attribute>
</xsl:element>
</xsl:if>
</xsl:template>
<xsl:template name="break-at-newlines">
<xsl:param name="text"/>
<xsl:param name="predicate"/>
<xsl:choose>
<xsl:when test="contains($text, ' ')">
<xsl:call-template name="one-literal-predicate">
<xsl:with-param name="text" select="substring-before($text, ' ')" />
<xsl:with-param name="predicate" select="$predicate"/>
</xsl:call-template>
<xsl:call-template name="break-at-newlines">
<xsl:with-param name="text" select="substring-after($text, ' ')" />
<xsl:with-param name="predicate" select="$predicate"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$text=''"/>
<xsl:otherwise>
<xsl:call-template name="one-literal-predicate">
<xsl:with-param name="text" select="$text"/>
<xsl:with-param name="predicate" select="$predicate"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="one-literal-predicate">
<xsl:param name="text"/>
<xsl:param name="predicate"/>
<xsl:element name="{$predicate}">
<xsl:value-of select="$text"/>
</xsl:element>
</xsl:template>
<!-- Drop text nodes incl. whitespace -->
<xsl:template match="text()"/>
<xsl:template match="*">
<xsl:if test="normalize-space(text()) != ''">
<xsl:element name="{local-name()}"><xsl:value-of select="."/></xsl:element>
</xsl:if>
</xsl:template>
<xsl:template name="code-name">
<xsl:param name="text" select="code/@desc"/>
<xsl:param name="predicate" select="concat(name(.) ,'name')"/>
<xsl:call-template name="one-literal-predicate">
<xsl:with-param name="text" select="$text"/>
<xsl:with-param name="predicate" select="$predicate"/>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
European Environment Agency
Kgs. Nytorv 6, DK-1050 Copenhagen K, Denmark