如何使用维基数据SPARQL查询服务访问子属性?



我想访问维基数据实体的子属性。例如,属性 P1033,它是 P4952 的子级,用于实体(如 Q49546(。如何在SPARQL查询中动态执行此操作?

使用在线维基数据查询服务提供的查询构建器,我可以构造一个简单的查询,该查询适用于普通属性(在链接示例中:mass(,但不适用于所需的子属性(在链接示例中:NPFA健康危害代码(,即使它们在网络结果中明确设置,它们最终也是空的。旁注:这是一个与第一段不同的示例。

所需目标是动态查询,如下所示:

SELECT ?p ?item ?itemDescription ?prop ?value ?valueLabel ?itemLabel ?itemAltLabel ?propLabel WHERE {
BIND(wd:Q138809 AS ?item)
?prop wikibase:directClaim ?p.
#?item ?p ?value.
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en".
?value rdfs:label ?valueLabel.
?prop rdfs:label ?propLabel.
?item rdfs:label ?itemLabel;
skos:altLabel ?itemAltLabel;
schema:description ?itemDescription.
}
}
ORDER BY DESC(?prop)
LIMIT 10

使用第 4 行作为注释,我可以根据需要获取我的 propLabel,但没有值;相反,该行不是注释,我只获得在第一级设置的属性,而不是子属性。

感谢@AKSW,我特此发布解决我问题的最终查询:

SELECT ?item ?itemLabel ?itemDescription ?itemAltLabel ?prop ?propertyLabel ?propertyValue ?propertyValueLabel ?qualifier ?qualifierLabel ?qualifierValue 
{ 
VALUES (?item) {(wd:Q138809)}
?item ?prop ?statement . 
?statement ?ps ?propertyValue . 
?property wikibase:claim ?prop . 
?property wikibase:statementProperty ?ps . 
OPTIONAL { ?statement ?pq ?qualifierValue . ?qualifier wikibase:qualifier ?pq . } 
SERVICE wikibase:label { bd:serviceParam wikibase:language "en" } 
}

对我来说,关键一步是了解子属性实际上称为限定符。

最新更新