来自维基数据的重复结果

时间:2018-02-27 15:57:47

标签: sparql wikidata

我为Wikidata创建了以下SPARQL查询。此查询的结果是与德国州相关的记录。但正如您所看到的,结果连续发生了四次(您可以在此处测试:https://query.wikidata.org/)。我认为地理坐标和语言存在问题,但无论如何我无法解决它。这个查询有什么问题,如何修复它以便不重复地接收结果?

PREFIX  p:    <http://www.wikidata.org/prop/>
PREFIX  schema: <http://schema.org/>
PREFIX  psv:  <http://www.wikidata.org/prop/statement/value/>
PREFIX  wdt:  <http://www.wikidata.org/prop/direct/>
PREFIX  wikibase: <http://wikiba.se/ontology#>
PREFIX  rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX  wd:   <http://www.wikidata.org/entity/>

SELECT DISTINCT  ?subject ?featureCode ?countryCode ?name ?latitude ?longitude ?description ?iso31662
WHERE
  { ?subject  wdt:P31     wd:Q1221156 ;
              rdfs:label  ?name ;
              wdt:P17     ?countryClass .
    ?countryClass
              wdt:P297    ?countryCode .
    ?subject wdt:P31/(wdt:P279)* ?adminArea .
    ?adminArea  wdt:P2452  "A.ADM1" ;
              wdt:P2452  ?featureCode .
    ?subject  wdt:P300   ?iso31662
    OPTIONAL
      { ?subject  schema:description  ?description
        FILTER ( lang(?description) = "en" )
        ?subject  p:P625                ?coordinate .
        ?coordinate  psv:P625           ?coordinateNode .
        ?coordinateNode
                  wikibase:geoLatitude  ?latitude ;
                  wikibase:geoLongitude  ?longitude
      }
    FILTER ( lang(?name) = "en" )
    FILTER EXISTS { ?subject  wdt:P300  ?iso31662 }
  }
ORDER BY lcase(?name)
OFFSET  0
LIMIT   200

1 个答案:

答案 0 :(得分:6)

简而言之,"9.0411111111111"^^xsd:double"9.0411111111111"^^xsd:decimal是截然不同的,但在某种意义上它们可能相同。

检查一下:

SELECT DISTINCT ?subject ?featureCode ?countryCode ?name ?description ?iso31662
    (datatype(?latitude) AS ?lat)
    (datatype(?longitude) AS ?long)  

和此:

SELECT DISTINCT ?subject ?featureCode ?countryCode ?name ?description ?iso31662
    (xsd:decimal(?latitude) AS ?lat)
    (xsd:decimal(?longitude) AS ?long)