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

时间:2016-05-05 10:26:34

标签: sparql semantic-web ontology

我有一个名为WeatherPatterns的类,它有许多子类,子类名为Individuals / Instances。

我想要一个sparql查询来检索彼此有关系的所有WeatherPatterns实例。例如,输出三元组应如下列出。

Cloud produces Rain
Rain causes Flood

如何进行此查询?提前谢谢

1 个答案:

答案 0 :(得分:3)

如果没有您的数据,我们无法进行确切的查询,但如果您正在寻找 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 .
}

属性路径?sa / rdfs:subClassOf *:WeatherPatterns 使用 a 作为 rdf:type 的标准缩写,并在匹配时属于通过 rdfs:subClassOf 属性链与:WeatherPatterns 相关联的类。 (链可以是零长度,这意味着?s :WeatherPatterns 的直接实例。)如果要将两个检查合并为一个,则可以也这样做:

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