在SPARQL中对属性使用FILTER

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

我如何选择所有以特定前缀开头的属性,如 wdt:? 我想获得与一个项目相关的所有属性,但对以下内容不感兴趣。schema:, rdf:, p: 以此类推。

SELECT DISTINCT ?p
WHERE {
  wd:Q2 ?p ?entity.
}

这个查询将返回 属性。我试着用 FILTER(STRSTARTS(?p, "wdt:")), FILTER(STRSTARTS(str(?p), "wdt:"))FILTER(STRSTARTS(xsd:string(?p), "wdt:")) 来检查该属性是否以 wdt:但结果总是空的。

database sparql wikidata
1个回答
1
投票

wdt:是一个前缀,意思是说,它是一种将较长的东西缩写的方式。

wdt:P31实际上存储为

http://www.wikidata.org/prop/direct/P31

原则上,你会有一个查询,你指定一个不同的前缀,像这样。

PREFIX hello: <http://www.wikidata.org/prop/direct/>

然后你会把hello: P31作为你的属性。

所以可以试试使用这个。

SELECT DISTINCT ?p
WHERE {
  wd:Q2 ?p ?entity.
FILTER(STRSTARTS(STR(?p), "http://www.wikidata.org/prop/direct/"))

}

更多关于前缀的内容。https:/en.wikibooks.orgwikiSPARQLPrefixes。

列出每个前缀的解释。https:/www.mediawiki.orgwikiWikibaseIndexingRDF_Dump_Format#Prefixes_used

完整的预制构件清单。https:/www.mediawiki.orgwikiWikibaseIndexingRDF_Dump_Format#Full_list_of_prefixes

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