获取直接和间接实例之间的关系 a class?

Get relationships between direct and indirect instances a class?

我有一个名为 WeatherPatterns 的 class,它有许多子classes 并且子classes 命名为 Individuals/Instances。

我想要一个 sparql 查询来检索所有相互关联的 WeatherPatterns 实例。例如,输出三元组应如下所示。

Cloud produces Rain
Rain causes Flood

如何查询?提前致谢

如果没有您的数据,我们无法进行精确查询,但如果您正在寻找 WeatherPatterns 的直接或间接实例之间的关系,那就不太对了难:

select ?s ?p ?o {
  #-- Make sure that ?s and ?o are
  #-- instance of WeatherPatterns
  #-- or its subclasses.
  ?s a/rdfs:subClassOf* :WeatherPatterns .
  ?o a/rdfs:subClassOf* :WeatherPatterns .

  #-- Find relationships between
  #-- ?s and ?o.
  ?s ?p ?o .
}

属性路径?s a/rdfs:subClassOf* :WeatherPatterns使用a作为标准缩写对于 rdf:type,当 ?s 属于 class 时匹配,该 class 由 链相关rdfs:subClassOf 属性到 :WeatherPatterns。 (链的长度可以为零,这意味着 ?s:WeatherPatterns 的直接实例。)如果您想将两者结合起来签到一个,你也可以这样做:

:WeatherPatterns ^(a/rdfs:subClassOf*) ?s, ?o .