在 SPARQL 中对 属性 使用 FILTER
Using FILTER on property in SPARQL
如何 select 所有以特定前缀开头的属性,例如wdt:
?我想获取与某个项目相关的所有属性,但对 schema:
、rdf:
、p:
等不感兴趣。
SELECT DISTINCT ?p
WHERE {
wd:Q2 ?p ?entity.
}
此查询将 return 所有 属性。我尝试使用 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.org/wiki/SPARQL/Prefixes
列出每个前缀的解释:https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Prefixes_used
完整的前缀列表:https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Full_list_of_prefixes
如何 select 所有以特定前缀开头的属性,例如wdt:
?我想获取与某个项目相关的所有属性,但对 schema:
、rdf:
、p:
等不感兴趣。
SELECT DISTINCT ?p
WHERE {
wd:Q2 ?p ?entity.
}
此查询将 return 所有 属性。我尝试使用 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.org/wiki/SPARQL/Prefixes
列出每个前缀的解释:https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Prefixes_used
完整的前缀列表:https://www.mediawiki.org/wiki/Wikibase/Indexing/RDF_Dump_Format#Full_list_of_prefixes