0

整体参考代码:https ://github.com/jottinger/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))
))

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

4

1 回答 1

1

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

于 2015-01-12T16:42:39.220 回答