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)
。我认为这就是答案,因为我基本上有与您相同的问题。如果你愿意回答这个问题,我会接受的。