SPARQL 查询以获取所有“叶”类/最低级别的类

问题描述

我觉得我遗漏了一些很明显的东西。我想查询我的图表,以便获得所有“叶子”,因此任何没有子类的类。基本上,我需要 rdfs:hasSubClass 的倒数(我试过 rdfs:superClassOf 但它不存在啊哈哈)。

例如,当我通过使用查询最低级别的类时 在哪里 {?level1 subClassOf ?level2 ?level2 subClassOf ?level3 ?level3 subClassOf ?level4 等}

我最终得到了我想要的东西:一些叶子。但是,如果我随后将此结果加入到更高一级的叶子中,我也会收到上面查询的叶子的父类,这是我不想要的。如果有道理,我只想要儿童课程,没有父母。

目标是能够输出可以实例化的类列表。

寻找正确方向的任何提示!谢谢!

解决方法

一个 RDF 三元组看起来像 rdfs:subClassOf .` - 所以在你的 SPARQL 查询中你会使用一个三元组模式 ?sub rdfs:subClassOf ?sup 。然后选择 ?sub 或 ?sup

要获取所有叶节点,只需获取所有没有子类的类。缺少某些内容是通过 FILTER NOT EXISTS 子句完成的。比如 select distinct ?cls {?cls rdfs:subClassOf ?sup 。过滤器不存在{?sub rdfs:subClassOf ?cls FILTER(?sub != ?cls && ?sub != owl:Nothing ) }}

感谢 UninformedUser 此解决方案!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...