SPARQL查询中的子属性

SPARQL查询中的子属性,sparql,wikidata,Sparql,Wikidata,我试着找到所有直接或间接由沃尔特·迪斯尼公司拥有的公司 SELECT ?company ?companyLabel WHERE { SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". } ?company (wdt:P127|wdt:P749)* wd:Q7414. ?company wdt:P31/wdt:P279* wd:Q4830453. } 我想

我试着找到所有直接或间接由沃尔特·迪斯尼公司拥有的公司

SELECT ?company ?companyLabel WHERE {
  SERVICE wikibase:label { bd:serviceParam wikibase:language "[AUTO_LANGUAGE],en". }
  ?company (wdt:P127|wdt:P749)* wd:Q7414.
  ?company wdt:P31/wdt:P279* wd:Q4830453.
}
我想知道这家公司是迪斯尼公司(第127页)还是迪斯尼公司(第749页)

属性P749是P127的子属性。“owned by”的其他子属性我可能不知道


我可以做一个查询,返回所有与迪士尼有关系且子属性为“owned by”的公司吗?我还需要返回直接子公司的子公司,以及这些子公司的子公司等等。

您可以通过递归属性路径执行此操作:

?company ?p wd:Q7414.
?p rdfs:subPropertyOf* P:127 .

这回应了我最初提出的问题。不幸的是,我还需要得到这些子公司的子公司,以及这些子公司的子公司等等。@fgregg那个么,是什么阻止你们同时查询你们公司的wdt:P355属性呢?我指的是非正式的子公司。通过owned_by relations或owned_by relations的子类而成为其他组织后代的组织。@fgregg我对Wikidata本体不太熟悉。您必须编辑您的问题,以提供更具体的示例(涉及的属性、预期结果等)。@fgregg我不明白。
有什么问题?p rdfs:subpertyof*p:127。
实际上返回了
关系所拥有的
的所有子属性,然后可以在三元组模式中用作谓词?不可能。即使是也不支持复杂的条件,如
?edge^wikibase:directClaim/wd:P1647*wd:P127
。但是,
wd:P127
只有三个子属性(直接和间接),即您可以编写类似
(wdt:P127 | wdt:P749 | wdt:P3931)
。我认为这就是答案,因为我基本上有与您相同的问题。如果你愿意回答这个问题,我会接受的。