Properties 从同一类的实例检索属性及其描述
我希望检索具有相同类型(类)的实例的所有不同对象属性,从两个初始种子(wd:Q963和wd:Q42320)开始。首先,我询问这类种子的类型(可能还有子类型)。其次,检索同一类种子的所有实例。第三,检索实例的属性。最后,我想检索这些属性的描述,如果可能的话,还有其他标签。我的质询如下:Properties 从同一类的实例检索属性及其描述,properties,query-optimization,sparql,union,wikidata,Properties,Query Optimization,Sparql,Union,Wikidata,我希望检索具有相同类型(类)的实例的所有不同对象属性,从两个初始种子(wd:Q963和wd:Q42320)开始。首先,我询问这类种子的类型(可能还有子类型)。其次,检索同一类种子的所有实例。第三,检索实例的属性。最后,我想检索这些属性的描述,如果可能的话,还有其他标签。我的质询如下: select distinct ?property ?description ?label where{ { wd:Q963 wdt:P31 ?typesSubject . ?ins
select distinct ?property ?description ?label where{
{
wd:Q963 wdt:P31 ?typesSubject .
?instancesS (wdt:P31|wdt:P279) ?typesSubject .
?instancesS ?property ?unknown .
}
UNION
{
wd:Q42320 wdt:P31 ?typesObject .
?instancesO (wdt:P31|wdt:P279) ?typesObject .
?unknown ?property ?instancesO .
}
?claimPredicate wikibase:directClaim ?property .
?claimPredicate schema:description ?description .
?claimPredicate rdfs:label ?label .
FILTER(strstarts(str(?property),str(wdt:)))
FILTER(strstarts(str(?unknown),str(wd:)))
FILTER(LANG(?description) = "en").
FILTER(LANG(?label) = "en").
}
问题是我的实际查询需要很多时间,并且在公共Wikidata端点中失败。有人能给我一些提示来优化这样的查询吗 老实说,我不明白你问的目的。我想你对语义相似或类似的东西感兴趣 基本上,您可以减少连接的数量,只检索具有嵌套
SELECT DITINCT
的唯一wdt谓词
SELECT?property?clainPredicateLabel?clainPredicateDescription
在哪里{
提示:查询提示:优化器“无”。
{
选择DISTINCT?属性{
值(?s){(wd:Q963)(wd:Q42320)}
?s wdt:P31/^(wdt:P31 | wdt:P279)?实例。
?实例?属性?未知。
}
}
?ClainIndicate wikibase:directClaim?属性。
服务wikibase:标签{bd:serviceParam wikibase:语言“en”。}
}
即使使用服务wikibase:label
,这也足够快(~3s)
此外,您还可以在之后过滤(strstarts(str(?property),str(wdt:))
?claimpirecte wikibase:directClaim?property
对于
提示:查询提示:优化器“无”
,此提示强制Blazegraph遵循标准的求值顺序。在这个特定的查询中,hint:query hint:optimizer“Runtime”
或hint:SubQuery hint:runOnce true
应该可以工作。对407
属性的检索在~3s:select distinct?属性中{{instancesS(wdt:P31 | wdt:P279)/^wdt:P31 wd:Q963。?instancesS?属性?未知。过滤器(strstarts(str(?property),str(wdt:))}联合{实例so(wdt:P31 | wdt:P279)/^wdt:P31 wd:Q42320。?未知?属性?实例so.FILTER(strstarts(str(?未知),str(wd:)}
问题在于与索赔的联接hank you@AKSW,你是对的,我不知道如何解决此类联接问题。非常感谢你@Stanislav,查询提示帮助很大。此外,我还将指令(GROUP_CONCAT(?alternative;separator=“|”)作为?altLabel)
与?claimpirecte skos:altLabel?alternative.
和分组,以便获得同一行中每个属性的所有可能的替代标签