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 +