如何删除重复的空白节点

问题描述 投票:0回答:1

我正在尝试从数据集中删除重复的资源,但是由于资源是空白节点,并且并非真正相同,因此遇到了问题。

有关数据:

<http://faculty.washington.edu/tgis/ld/brumfield/uwDataset/places#NaroFominskiiraionMoskovskaia>
        a                        vra:AdministrativeArea ;
        rdfs:label               "Naro-Fominskii raion" ;
        uwext:typeOfAdminArea    "Raion" ;
        schema:containedInPlace  <http://faculty.washington.edu/tgis/ld/brumfield/uwDataset/places#MoskovskaiaoblastMoskovskaia> , <http://faculty.washington.edu/tgis/ld/brumfield/uwDataset/places#RussiaFederation> ;
        ns1:sameAs               <http://dbpedia.org/resource/Naro-Fominsky_District> ;
schema:geo
[ a                 schema:GeoCoord ;
  schema:latitude   "53.3793416" ;
  schema:longitude  "58.9708374"
],
[ a                 schema:GeoCoord ;
  schema:latitude   "53.3793416" ;
  schema:longitude  "58.9708374"
] .

我尝试过的:

delete {?q a schema:GeoCoord.
?q schema:latitude ?lat .
?q schema:longitude ?long .  }
where
{
?s a schema:GeoCoord.
?s schema:latitude ?lat .
?s schema:longitude ?long .
?q a schema:GeoCoord.
?q schema:latitude ?lat .
?q schema:longitude ?long .
    filter(?q != ?s)
}

但这会同时删除两个schema:GeoCoord资源。如何删除重复的资源?

sparql rdf fuseki
1个回答
0
投票

这有一个窍门。使用

 filter(str(?q) < str(?s))

而不是

 filter(?q != ?s) 

起作用的原因是,如果使用!=进行比较,则会得到两个匹配项:在所有两个bnode彼此都不相等之后。但是,只有一个bnode ID小于另一个bnode ID-因此,您只会得到一个匹配项。

© www.soinside.com 2019 - 2024. All rights reserved.