OWLAPI 和声明公理要求

OWLAPI and Declaration Axiom requirements

整体参考代码:https://github.com/jottinger/ontology

我正在创建一个 ontology 并填充它(我认为正确)。结构在那里,但我还没有验证它。

但是,我仍然期待着出现声明,但我不知道它们为什么不见了。我 认为 它与前缀管理器有关(因为每个元素都完全由命名空间限定)但我不知道如何实例化一个新的前缀管理器以便我可以注册命名空间。

添加子类关系的代码如下:

val clazz = getOntClass(node.name)

val parent = getOntClass(data(node.p).name)
val hasClazz = getOntObjectProperty("has" + node.name)
val hasClazzSomeClazz = df.getOWLObjectSomeValuesFrom(hasClazz, clazz)

val hasParent = getOntObjectProperty("has" + data(node.p).name)
val hasParentSomeParent = df.getOWLObjectSomeValuesFrom(hasParent, parent)
m.applyChanges(List(
  new AddAxiom(o, df.getOWLDeclarationAxiom(clazz)),
  new AddAxiom(o, df.getOWLDeclarationAxiom(clazz)),
  new AddAxiom(o, df.getOWLDeclarationAxiom(parent)),
  new AddAxiom(o, df.getOWLSubClassOfAxiom(clazz, parent)),
  new AddAxiom(o, df.getOWLDeclarationAxiom(hasClazz)),
  new AddAxiom(o, df.getOWLSubClassOfAxiom(parent, hasClazzSomeClazz)),
  new AddAxiom(o, df.getOWLDeclarationAxiom(parent)),
  new AddAxiom(o, df.getOWLDeclarationAxiom(hasParent)),
  new AddAxiom(o, df.getOWLSubObjectPropertyOfAxiom(hasClazz, hasParent))
))

假设这是一个有效的结构。 (这个项目的一部分是学习本体是如何工作的。)但我不知道如何让声明出现,这个 ontology 被用作另一个需要该信息的进程的输入。

您不需要多次申报;这些声明完全相同。除此之外,你的代码似乎是正确的(我在这里说的是 OWL API;我对 Scala 的了解不足以判断 Scala 代码的正确性)