我有一个问题,我在一个例子中解释:
我想从三元组 Berlin
中检索对象 Germany - capital - object
。
我必须使用标签,因为这些是我程序中的输入。
以下查询返回 propertyLabel capital
:
prefix wdt: <http://www.wikidata.org/prop/direct/>
prefix wikibase: <http://wikiba.se/ontology#>
prefix bd: <http://www.bigdata.com/rdf#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?propertyLabel WHERE {
?property a wikibase:Property .
?property rdfs:label "capital"@en
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" .}
}
使用标签 Germany
和 URI P36 (capital)
进行查询后,我会返回所需的信息Berlin
:
prefix wdt: <http://www.wikidata.org/prop/direct/>
prefix wikibase: <http://wikiba.se/ontology#>
prefix bd: <http://www.bigdata.com/rdf#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?objectLabel WHERE {
?subject wdt:P36 ?object .
?subject rdfs:label "Germany"@en .
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" .}
}
但我想将P36
用作标签。我尝试了两种选择或联盟的各种方式,但我得到了数千个结果或没有。查询应该如下所示(虽然这个不起作用):
prefix wdt: <http://www.wikidata.org/prop/direct/>
prefix wikibase: <http://wikiba.se/ontology#>
prefix bd: <http://www.bigdata.com/rdf#>
prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT DISTINCT ?objectLabel WHERE {
?subject ?property ?object .
?subject rdfs:label "Germany"@en .
?property a wikibase:Property .
?property rdfs:label "capital"@en
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" .}
}
上面提到的查询必须返回Berlin
而不是其他内容。提前谢谢。
答案 0 :(得分:1)
问题是你的属性查找标签&#34; capital&#34;返回A
但实例数据使用http://www.wikidata.org/entity/P36
。解决方法可能是:
http://www.wikidata.org/prop/direct/P36