Wikidata SPARL查询由通用属性返回对象而不是语句



我想通过像下面的查询一样传播节点来传播查询。

SELECT ?item ?itemLabel  ?prop ?object ?objectLabel ?prop2 ?object2
WHERE 
{
VALUES (?item) { (wd:Q12418)}
?item ?prop ?object.
?object ?prop2 ?object2
SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } # Helps get the label in your language, if not, then en language
}

这里我从wd:Q12418(蒙娜丽莎)开始,我检索它的所有属性-然后对于每个对象,我也要检索它的所有属性。

问题是?item ?prop ?object行返回对象的语句而不是对象本身。所以它指向蒙娜丽莎的陈述如下:https://www.wikidata.org/wiki/Q12418#Q12418$9c08a93a-4591-561d-36a9-78083ae0a3fa

在本例中,第二部分(?object ?prop2 ?object2)处理该语句,因此只有该语句具有子属性时才返回某些内容。我想要得到的是对象(例如:)而不是语句,这样我就可以遍历对象的属性。

我怎么才能做到呢?

您希望?propwdt:前缀开头,那么您可以添加以下过滤功能:

filter(strstarts(str(?prop), str(wdt:)))

,如果需要,也可以为?prop2设置一个类似的参数。

最新更新