使用OWL API获取TBox Axioms

时间:2016-03-29 06:28:41

标签: owl ontology owl-api

我正在使用OWL API 3 / Pellet / SPARQL-DL堆栈,并希望从本体中读取某个类的断言的TBox公理。

我可以使用OWL API轻松访问公理。但是,OWLClassAxiom只提供了在没有连接的情况下访问签名的功能。即我想知道ObjectProperty分配给哪个Class。我可以检索的只是签名中所有元素的集合,没有它们的连接。

似乎OWL API并不真正支持在类级别上使用给定的公理(阅读,而不是添加。)或者我错过了什么?任何其他想法如何实现? (使用任何工具。)

具体示例:Pizza hasBase some PizzaTopping。我想通过指定Pizza和hasBase来检索值“PizzaTopping”。

1 个答案:

答案 0 :(得分:4)

如果比萨是一个班级,那么

Pizza hasBase some PizzaTopping

不是法律公理。你可能实际拥有的是

Pizza subClassof hasBase some PizzaTopping

这意味着Pizza的每个实例都与hasBase属性的PizzaTopping的实例相关。公理是一个子类公理,所以你想要检索OWLSubClassOfAxiom的实例(它是OWLClassAxiom的子类)。

在这种情况下,如果您对Pizza的OWLClass有引用,那么您可以使用OWLClass#getSuperclasses()来获取超类表达式的列表。其中一个是{strong>(hasBase some PizzaTopping)的OWLObjectSomeValuesFrom表达式。您必须查找该类型的那些,然后检查它是一个限制的属性。

那就是你说的目标

  

知道将ObjectProperty分配给哪个类

与OWL模型不完全匹配。对象属性(和数据属性)不属于OWL中的类。您可以使用子类公理和属性限制(如上所述)来表示类的成员必须具有特定属性的值,