我需要编写一个SPARQL查询来查找给定类的超类/子类.
例如,给定http://139.91.183.30:9090/RDF/VRP/Examples/Phenomenon.rdf RDFS词汇表文件,我想找到'AcousticWave'的超类(即'Wave').
同样,如果用户输入'Wave',我想得到'Wave'的所有子类('AcousticWave','GravityWave','InternalWave'和Tide').

我该如何编写这样的SPARQL查询?
Man*_*res 11
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 . }
Run Code Online (Sandbox Code Playgroud)
对于子类......
SELECT ?subClass WHERE { ?subClass rdfs:subClassOf ns:Wave . }
Run Code Online (Sandbox Code Playgroud)
如果你想检索每个子类的标签,ns:Wave你会做类似......
SELECT ?subClass ?label WHERE {
?subClass rdfs:subClassOf ns:Wave .
?subClass rdfs:label ?label .
}
Run Code Online (Sandbox Code Playgroud)
如果您需要sub/super类的传递闭包,那么您有两个选择: