我如何选择所有以特定前缀开头的属性,如 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:
但结果总是空的。
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