繁体   English   中英

SPARQL查询查找给定类的所有子类和超类

[英]SPARQL query to find all sub classes and a super class of a given class

我需要编写一个SPARQL查询来查找给定类的超类/子类。

例如,给定http://139.91.183.30:9090/RDF/VRP/Examples/Phenomenon.rdf RDFS词汇表文件,我想找到'AcousticWave'的超类(即'Wave')。

同样,如果用户输入'Wave',我想得到'Wave'的所有子类('AcousticWave','GravityWave','InternalWave'和Tide')。

在此输入图像描述

我该如何编写这样的SPARQL查询?

rdfs用于状态子/超类关系的谓词是rdfs:subClassOf 考虑到这一点,您只需要在SPARQL查询中编写三重模式来绑定该谓词以及您要匹配的主题或对象 - 在您的案例中为AcousticWave

我希望以下查询是不言自明的。

对于超级班......

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ns: <http://www.domain.com/your/namespace/>

SELECT ?superClass WHERE { ns:AcousticWave rdfs:subClassOf ?superClass . }

对于子类......

SELECT ?subClass WHERE { ?subClass rdfs:subClassOf ns:Wave . }

如果你想检索ns:Wave每个子类的标签ns:Wave你会做类似......

SELECT ?subClass ?label WHERE { 
        ?subClass rdfs:subClassOf ns:Wave . 
        ?subClass rdfs:label ?label . 
}

如果您需要sub / super类的传递闭包,那么您有两个选择:

  1. 在收集闭包之前,递归迭代这些查询。
  2. 通过RDF / RDFS推理器传递您的RDF数据,以转发所有蕴涵链并在RDF数据库中断言这些数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM