Sparql Wikidata—获取一个类以及所有节点的完整子层次结构

Sparql Wikidata—获取一个类以及所有节点的完整子层次结构,sparql,rdf,wikidata,Sparql,Rdf,Wikidata,我需要食物Q2095下的完整层次结构。 还应包括所有级别的子类。此外,附加到子类的所有实体 我怎么能对此提出质疑 选择节点,其中{node?pred wd:Q2095} 谢谢。试试这个: SELECT ?subclass ?entity ?predicate WHERE{ ?subclass wdt:P279* wd:Q2095 {?entity ?predicate ?subclass } UNION {?subclass ?predicate ?entity }

我需要食物Q2095下的完整层次结构。 还应包括所有级别的子类。此外,附加到子类的所有实体

我怎么能对此提出质疑

选择节点,其中{node?pred wd:Q2095}

谢谢。

试试这个:

SELECT ?subclass ?entity ?predicate 
WHERE{
   ?subclass wdt:P279* wd:Q2095
   {?entity ?predicate ?subclass }
  UNION 
  {?subclass ?predicate ?entity }
       }
查询正文的第一部分确保您的子类最终指向食物

第二个查找附加到子类的实体,即包含所述子类的三元组的对象或主体

取决于是否要限制谓词的范围。i、 e.避免使用rdfs:label和其他,您也可以使用类似的方法:

?predicate a owl:ObjectProperty .
在查询主体的第一行下


@UninformedUser的注释向您展示了如何获取子类的级别。

所有子类都可以通过SELECT?节点检索,其中{?节点wdt:P279*wd:Q2095}-不确定级别是什么意思,我也不理解子类的所有实体是什么意思。根据所选的超类,每个子类的所有实体都会导致非常大的结果。SPARQL并不是真正用于路径查询的,但您可以使用SELECT?cls count?tmp作为?距离获得类的距离,其中{cls wdt:P279*?tmp。?tmp wdt:P279+wd:Q2095.}按?cls顺序按asc?距离分组-尽管在层次结构resp中可能存在类似循环的拐角情况。多条路径显然会导致错误的结果谢谢。第二个问题为我指出了正确的方向这是最后一个缺失的部分。现在一切正常。非常感谢你