diff --git a/data/interoperability-metadata/ets-md-iop-bsxets.xml b/data/interoperability-metadata/ets-md-iop-bsxets.xml
index 09ffc479c..e1f1917c9 100644
--- a/data/interoperability-metadata/ets-md-iop-bsxets.xml
+++ b/data/interoperability-metadata/ets-md-iop-bsxets.xml
@@ -11,7 +11,7 @@ Source: Conformance Class 'INSPIRE Profile based on EN ISO 19115 and EN ISO 19119']]>
../../inspire-md-bsxets.xq
- 0.2.2
+ 0.2.3
interactive instruments GmbH
2016-12-07T00:00:00Z
interactive instruments GmbH
@@ -162,11 +162,11 @@ let $messages :=
local:addMessage('TR.noEncoding', map { 'filename': local:filename($record), 'id': $rid })
else for $format in $formats
return
- (if ($format/gmd:MD_Format/gmd:name/gco:CharacterString) then () else
+ (if ($format/gmd:MD_Format/gmd:name/*) then () else
local:addMessage('TR.incompleteEncoding', map { 'filename': local:filename($record), 'id': $rid, 'missing': 'name' }),
- if ($format/gmd:MD_Format/gmd:version/gco:CharacterString) then () else
+ if ($format/gmd:MD_Format/gmd:version/*) then () else
local:addMessage('TR.incompleteEncoding', map { 'filename': local:filename($record), 'id': $rid, 'missing': 'version' }),
- if ($format/gmd:MD_Format/gmd:specification/gco:CharacterString) then () else
+ if ($format/gmd:MD_Format/gmd:specification/*) then () else
local:addMessage('TR.incompleteEncoding', map { 'filename': local:filename($record), 'id': $rid, 'missing': 'specification' }))
)[position() le $limitErrors]
return
diff --git a/include-metadata/TranslationTemplateBundle-EID70a263c0-0ad7-42f2-9d4d-0d8a4ca71b52.xml b/include-metadata/TranslationTemplateBundle-EID70a263c0-0ad7-42f2-9d4d-0d8a4ca71b52.xml
index ec8d61c87..af6b3d237 100644
--- a/include-metadata/TranslationTemplateBundle-EID70a263c0-0ad7-42f2-9d4d-0d8a4ca71b52.xml
+++ b/include-metadata/TranslationTemplateBundle-EID70a263c0-0ad7-42f2-9d4d-0d8a4ca71b52.xml
@@ -487,9 +487,14 @@
XML document '{filename}', record '{id}': The metadata record contains a reference to a specification '{specification}', but no dateType of 'creation', 'revision', or 'publication' is provided for it.
-
+
- XML document '{filename}', record '{id}': The metadata record contains a reference to a specification '{specification}', but the specification reference is not a child of a gmd:DQ_DomainConsistency element.
+ XML document '{filename}', record '{id}': The metadata record not contains a reference to a specification.
+
+
+
+
+ XML document '{filename}', record '{id}': The gmd:DQ_ConformanceResult has an element gmd:pass that must contain a value of type gco:Boolean. This metadata record does not contain such a value.
@@ -532,6 +537,11 @@
XML document '{filename}', record '{id}': The metadata record has keywords which originate from a controlled vocabulary '{thesaurus}', but no date of publication, creation, or revision is provided. The keywords are: {keywords}.
+
+
+ XML document '{filename}', record '{id}': The metadata record has keywords which originate from a controlled vocabulary 'GEMET - INSPIRE themes, version 1.0', but the date or date type is not correct. Date should be '2008-06-01' and date type 'publication'. The keywords are: {keywords}.
+
+
XML document '{filename}', record '{id}': Every service metadata record must have a service type that is one of the codes from the code list at {url}. Found: {type}.
@@ -607,6 +617,16 @@
XML document '{filename}', record '{id}': No valid resource contraint is provided for this record, but a metadata record must have at least one resource constraint that has a) an access constraint with code list value from ISO 19115, chapter B.5.24 - and, if that value is 'otherRestrictions', it must also have an 'otherConstraints' element with non-empty string content - and/or b) a classification with code list value from ISO 19115, chapter B.5.11.
+
+
+ XML document '{filename}', record '{id}': The metadata record not contains a reference to a gmd:DQ_ConformanceResult element.
+
+
+
+
+ XML document '{filename}', record '{id}': One of the citation elements shall contain title and date of the [Regulation 1089/2010].
+
+
XML document '{filename}', record '{id}': Each dataset or service metadata record must have a conformity statement, expressed via a domain consistency element with a conformance result. This metadata record does contain such a statement.
diff --git a/metadata/iso/ets-md-iso-bsxets.xml b/metadata/iso/ets-md-iso-bsxets.xml
index 46307cd51..87a4de987 100644
--- a/metadata/iso/ets-md-iso-bsxets.xml
+++ b/metadata/iso/ets-md-iso-bsxets.xml
@@ -12,7 +12,7 @@ Source: Conformance Class 'XML encoding of ISO 19115/19119 metadata']]>
../../inspire-md-bsxets.xq
- 0.2.5
+ 0.2.6
interactive instruments GmbH
2016-08-30T00:00:00Z
interactive instruments GmbH
@@ -251,24 +251,31 @@ Relevant requirement(s):
Source: Abstract Test Case 'Dataset specification'
]]>
NOT_APPLICABLE
-
-let $messages :=
- (for $record in $records
+
+let $levels := ('dataset', 'series')
+let $recordsToInspect := $records[gmd:hierarchyLevel/*/@codeListValue = $levels]
+let $messages :=
+ (for $record in $recordsToInspect
let $rid := $record/gmd:fileIdentifier/*/text()
- let $specifications := $record/gmd:dataQualityInfo/*/gmd:report/*/gmd:result/*/gmd:specification
- return
- if (not($specifications)) then () (: Only failure situations are reported, no warnings :)
+ let $specifications := $record/gmd:dataQualityInfo/*/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:specification
+ let $DQ_ConformanceResults := $record/gmd:dataQualityInfo/*/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult
+ return
+ if (not($specifications)) then local:addMessage('TR.noSpecifications', map { 'filename': local:filename($record), 'id': $rid })
else
- for $spec in $specifications
- return
- if (not($spec/gmd:CI_Citation/gmd:title/*[1][string-length(normalize-space(text())) > 0])) then
- local:addMessage('TR.noTitleForSpecification', map { 'filename': local:filename($record), 'id': $rid })
- else if (not($spec/gmd:CI_Citation/gmd:date/*/gmd:dateType/*[@codeListValue = ('publication','creation','revision')])) then
- local:addMessage('TR.noDateTypeForSpecification', map { 'filename': local:filename($record), 'id': $rid, 'specification': $spec/gmd:CI_Citation/gmd:title/*[1]/text() })
- else if (not($spec/ancestor::gmd:DQ_DomainConsistency)) then
- local:addMessage('TR.noDQDomainConsistencyParent', map { 'filename': local:filename($record), 'id': $rid, 'specification': $spec/gmd:CI_Citation/gmd:title/*[1]/text() })
+ for $DQ_ConformanceResult in $DQ_ConformanceResults
+ let $spec := $DQ_ConformanceResult/gmd:specification
+ return (
+ if (not($spec)) then ()
+ else
+ if (not($spec/gmd:CI_Citation/gmd:title/*[1][string-length(normalize-space(text())) > 0])) then
+ local:addMessage('TR.noTitleForSpecification', map { 'filename': local:filename($record), 'id': $rid })
+ else if (not($spec/gmd:CI_Citation/gmd:date/*/gmd:dateType/*[@codeListValue = ('publication','creation','revision')])) then
+ local:addMessage('TR.noDateTypeForSpecification', map { 'filename': local:filename($record), 'id': $rid, 'specification': $spec/gmd:CI_Citation/gmd:title/*[1]/text() })
+ else (),
+ if (not($DQ_ConformanceResult/gmd:pass/gco:Boolean)) then
+ local:addMessage('TR.noBooleanValueForPass', map { 'filename': local:filename($record), 'id': $rid, 'specification': $spec/gmd:CI_Citation/gmd:title/*[1]/text() })
else ()
- )[position() le $limitErrors]
+ ))[position() le $limitErrors]
return
(if ($messages) then 'FAILED' else 'PASSED',
local:error-statistics('TR.recordsWithErrors', count(fn:distinct-values($messages//etf:argument[@token='id']/text()))),
@@ -278,7 +285,8 @@ return
-
+
+
@@ -771,12 +779,19 @@ return
let $levels := ('dataset', 'series')
let $recordsToInspect := $records[gmd:hierarchyLevel/*/@codeListValue = $levels]
-let $messages :=
+let $regulation := (lower-case("РЕГЛАМЕНТ (ЕС) № 1089/2010 НА КОМИСИЯТА от 23 ноември 2010 година за прилагане на Директива 2007/2/ЕО на Европейския парламент и на Съвета по отношение на оперативната съвместимост на масиви от пространствени данни и услуги за пространствени данни"), lower-case("NAŘÍZENÍ KOMISE (EU) č. 1089/2010 ze dne 23. listopadu 2010, kterým se provádí směrnice Evropského parlamentu a Rady 2007/2/ES, pokud jde o interoperabilitu sad prostorových dat a služeb prostorových dat"), lower-case("KOMMISSIONENS FORORDNING (EU) Nr. 1089/2010 af 23. november 2010 om gennemførelse af Europa-Parlamentets og Rådets direktiv 2007/2/EF for så vidt angår interoperabilitet for geodatasæt og -tjenester"), lower-case("VERORDENING (EU) Nr. 1089/2010 VAN DE COMMISSIE van 23 november 2010 ter uitvoering van Richtlijn 2007/2/EG van het Europees Parlement en de Raad betreffende de interoperabiliteit van verzamelingen ruimtelijke gegevens en van diensten met betrekking tot ruimtelijke gegevens"), lower-case("COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services"), lower-case("KOMISJONI MÄÄRUS (EL) nr 1089/2010, 23. november 2010, millega rakendatakse Euroopa Parlamendi ja nõukogu direktiivi 2007/2/EÜ seoses ruumiandmekogumite ja -teenuste ristkasutatavusega"), lower-case("KOMISSION ASETUS (EU) N:o 1089/2010, annettu 23 päivänä marraskuuta 2010, Euroopan parlamentin ja neuvoston direktiivin 2007/2/EY täytäntöönpanosta paikkatietoaineistojen ja -palvelujen yhteentoimivuuden osalta"), lower-case("RÈGLEMENT (UE) N o 1089/2010 DE LA COMMISSION du 23 novembre 2010 portant modalités d'application de la directive 2007/2/CE du Parlement européen et du Conseil en ce qui concerne l'interopérabilité des séries et des services de données géographiques"), lower-case("VERORDNUNG (EG) Nr. 1089/2010 DER KOMMISSION vom 23. November 2010 zur Durchführung der Richtlinie 2007/2/EG des Europäischen Parlaments und des Rates hinsichtlich der Interoperabilität von Geodatensätzen und -diensten"), lower-case("COMMISSION REGULATION (EU) No 1089/2010 of 23 November 2010 implementing Directive 2007/2/EC of the European Parliament and of the Council as regards interoperability of spatial data sets and services"), lower-case("ΚΑΝΟΝΙΣΜΟΣ (ΕΕ) αριθ. 1089/2010 ΤΗΣ ΕΠΙΤΡΟΠΗΣ της 23ης Νοεμβρίου 2010 σχετικά με την εφαρμογή της οδηγίας 2007/2/ΕΚ του Ευρωπαϊκού Κοινοβουλίου και του Συμβουλίου όσον αφορά τη διαλειτουργικότητα των συνόλων και των υπηρεσιών χωρικών δεδομένων"), lower-case("A BIZOTTSÁG 1089/2010/EU RENDELETE (2010. november 23.) a 2007/2/EK európai parlamenti és tanácsi irányelv téradatkészletek és -szolgáltatások interoperabilitására vonatkozó rendelkezéseinek végrehajtásáról"), lower-case("REGOLAMENTO (UE) N. 1089/2010 DELLA COMMISSIONE del 23 novembre 2010 recante attuazione della direttiva 2007/2/CE del Parlamento europeo e del Consiglio per quanto riguarda l'interoperabilità dei set di dati territoriali e dei servizi di dati territoriali"), lower-case("KOMISIJAS REGULA (ES) Nr. 1089/2010 (2010. gada 23. novembris), ar kuru īsteno Eiropas Parlamenta un Padomes Direktīvu 2007/2/EK attiecībā uz telpisko datu kopu un telpisko datu pakalpojumu savstarpējo izmantojamību"), lower-case("KOMISIJOS REGLAMENTAS (ES) Nr. 1089/2010 2010 m. lapkričio 23 d. kuriuo įgyvendinamos Europos Parlamento ir Tarybos direktyvos 2007/2/EB nuostatos dėl erdvinių duomenų rinkinių ir paslaugų sąveikumo"), lower-case("REGOLAMENT TAL-KUMMISSJONI (UE) Nru 1089/2010 tat-23 ta' Novembru 2010 li jimplimenta d-Direttiva 2007/2/KE tal-Parlament Ewropew u tal-Kunsill fir-rigward tal- interoperabbiltà tas-settijiet ta’ dejta u servizzi ġeografiċi"), lower-case("ROZPORZĄDZENIE KOMISJI (UE) NR 1089/2010 z dnia 23 listopada 2010 r. w sprawie wykonania dyrektywy 2007/2/WE Parlamentu Europejskiego i Rady w zakresie interoperacyjności zbiorów i usług danych przestrzennych"), lower-case("REGULAMENTO (UE) N. o 1089/2010 DA COMISSÃO de 23 de Novembro de 2010 que estabelece as disposições de execução da Directiva 2007/2/CE do Parlamento Europeu e do Conselho relativamente à interoperabilidade dos conjuntos e serviços de dados geográficos"), lower-case("REGULAMENTUL (UE) NR. 1089/2010 AL COMISIEI din 23 noiembrie 2010 de punere în aplicare a Directivei 2007/2/CE a Parlamentului European şi a Consiliului în ceea ce priveşte interoperabilitatea seturilor şi serviciilor de date spaţiale"), lower-case("NARIADENIE KOMISIE (EÚ) č. 1089/2010 z 23. novembra 2010, ktorým sa vykonáva smernica Európskeho parlamentu a Rady 2007/2/ES, pokiaľ ide o interoperabilitu súborov a služieb priestorových údajov"), lower-case("UREDBA KOMISIJE (EU) št. 1089/2010 z dne 23. novembra 2010 o izvajanju Direktive 2007/2/ES Evropskega parlamenta in Sveta glede medopravilnosti zbirk prostorskih podatkov in storitev v zvezi s prostorskimi podatki"), lower-case("REGLAMENTO (UE) N o 1089/2010 DE LA COMISIÓN de 23 de noviembre de 2010 por el que se aplica la Directiva 2007/2/CE del Parlamento Europeo y del Consejo en lo que se refiere a la interoperabilidad de los conjuntos y los servicios de datos espaciales"), lower-case("KOMMISSIONENS FÖRORDNING (EU) nr 1089/2010 av den 23 november 2010 om genomförande av Europaparlamentets och rådets direktiv 2007/2/EG vad gäller interoperabilitet för rumsliga datamängder och datatjänster"))
+let $messages :=
(for $record in $recordsToInspect
let $rid := $record/gmd:fileIdentifier/*/text()
let $confResPasses := $record/gmd:dataQualityInfo/*/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult/gmd:pass
- return
- if (not($confResPasses)) then
+ let $DQ_ConformanceResults := $record/gmd:dataQualityInfo/*/gmd:report/gmd:DQ_DomainConsistency/gmd:result/gmd:DQ_ConformanceResult
+ let $hasExpectedCitation := boolean($DQ_ConformanceResults/*/gmd:CI_Citation[normalize-space(lower-case(gmd:title/*/text())) = $regulation and gmd:date/*/gmd:dateType/*/@codeListValue = 'publication' and gmd:date/*/gmd:date/*/text() = '2010-12-08'])
+ return
+ if (not($DQ_ConformanceResults)) then
+ local:addMessage('TR.noDQConformanceResults', map { 'filename': local:filename($record), 'id': $rid })
+ else if (not($hasExpectedCitation)) then
+ local:addMessage('TR.noExpectedCitation', map { 'filename': local:filename($record), 'id': $rid })
+ else if (not($confResPasses)) then
local:addMessage('TR.noConformityStatement', map { 'filename': local:filename($record), 'id': $rid })
else
for $confResPass in $confResPasses
@@ -792,6 +807,8 @@ return
+
+
@@ -1041,8 +1058,8 @@ let $messages := (for $record in $recordsToInspect
local:addMessage('TR.resourceNotAccessibleException', map { 'filename': local:filename($record), 'id': $rid, 'url': $url, 'message': substring-after($validuri, 'EXCEPTION ') })
else if (matches($validuri,'^\d{3}$')) then
local:addMessage('TR.resourceNotAccessible', map { 'filename': local:filename($record), 'id': $rid, 'url': $url, 'status' : $validuri })
- else if (starts-with($validuri,'text/xml') or starts-with($validuri,'application/xml') or starts-with($validuri,'application/vnd.ogc.')) then
- try {
+ else if (starts-with($validuri,'text/xml') or starts-with($validuri,'application/xml') or starts-with($validuri,'application/vnd.ogc.') or starts-with($validuri,'application/atom')) then
+ try {
let $root := fn:doc($url)/element()
return
if ($root[self::wfs:WFS_Capabilities or self::wms:WMS_Capabilities or self::wcs:Capabilities or self::sos:Capabilities or self::atom:feed]) then ()
@@ -1226,9 +1243,12 @@ let $messages :=
(for $record in $recordsToInspect
let $rid := $record/gmd:fileIdentifier/*/text()
let $relevantDescriptiveKeywordsBlocks := $record/gmd:identificationInfo[1]/*/gmd:descriptiveKeywords/*[gmd:thesaurusName/*/gmd:title/*/text() = $THEMES_TITLE]
- return
+ let $hasExpectedDate := boolean($relevantDescriptiveKeywordsBlocks/gmd:thesaurusName/*/gmd:date/*[gmd:date/*/text() = '2008-06-01' and gmd:dateType/*/@codeListValue = 'publication' and gmd:dateType/*/text() = 'publication'])
+ return
if ($relevantDescriptiveKeywordsBlocks[not(some $keyword in ./gmd:keyword/*/text() satisfies $keyword = $codes) ]) then
local:addMessage('TR.noKeywordFromINSPIREThemes', map { 'filename': local:filename($record), 'id': $rid, 'url': $inspireThemesCodeListURL, 'keywords': fn:string-join($relevantDescriptiveKeywordsBlocks/gmd:keyword/*/text(),'; ') })
+ else if (not($hasExpectedDate)) then
+ local:addMessage('TR.invalidDateForThesaurusGemet', map { 'filename': local:filename($record), 'id': $rid, 'keywords' : fn:string-join($relevantDescriptiveKeywordsBlocks/gmd:keyword/*/text(),'; ') })
else ()
)[position() le $limitErrors]
} catch * {
@@ -1242,6 +1262,7 @@ return
+