问题描述
我觉得我遗漏了一些很明显的东西。我想查询我的图表,以便获得所有“叶子”,因此任何没有子类的类。基本上,我需要 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 此解决方案!