我有一个名为WeatherPatterns的类,它有许多子类,子类名为Individuals / Instances。
我想要一个sparql查询来检索彼此有关系的所有WeatherPatterns实例。例如,输出三元组应如下列出。
Cloud produces Rain
Rain causes Flood
如何进行此查询?提前谢谢
答案 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 .