我开始学习 Java 中的 OWL,我已经阅读了一些教程,包括 OWL API、Apache Jena 和 Protege。我想在 owl 中获取类,但在 OWL API 中它返回输入的 IRI。
过程如下:假设我正在寻找单词'beauty',它是'Inspector'的个体,'Inspector'是'Guardian'的子类。目前在我的程序中,输出是美本身的 IRI。我想得到 Inspector IRI 和 Guardian IRI。
任何帮助/指南将不胜感激,谢谢:)
如果您有OWLIndividual,那么您应该能够调用getTypes来获取它拥有的一组类型,其中一个就是您所描述的类。(请注意,某些 OWL API 类的默认toString方法可能会显示事物的 IRI,因此简单地打印个人或类可能看起来与将其 IRI 打印为字符串相同。) getTypes返回一组OWLClassExpressions,并且一次您已经拥有其中之一,您可以使用asOWLClass来获取相应的类,然后使用getSuperClasses来向上走您的类层次结构。请注意,正如Ignazio 在评论中指出的那样,您应该只调用如果类表达式不是匿名的,则为 asOWLClass 。要获得保证完整的超类列表,您还需要使用相对于 OWL 完整的推理器,而使用 OWL API 内置的推理器不是。