繁体   English   中英

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

[英]SPARQL query to get all the “leaf” classes / lowest level classes

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

例如,当我使用 WHERE {?level1 subClassOf?level2?level2 subClassOf?level3?level3 subClassOf?level4 etc.} 查询最低级别的类时

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

目标是能够在 output 中列出可以实例化的类。

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

RDF 三元组看起来像 rdfs:subClassOf.` - 所以在您的 SPARQL 查询中,您将使用三元组模式?sub rdfs:subClassOf?sup。 和 select?sub 或?sup

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

此解决方案归功于 UninformedUser!

暂无
暂无

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

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