整体参考代码: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))
))
我假设这是一个有效的结构。 (该项目的一部分是学习本体是如何工作的。)但我不知道如何使声明出现,并且这个本体被用作另一个需要该信息的进程的输入。
答案 0 :(得分:1)
你不需要多次申报;那些声明是完全相同的。除此之外,你的代码似乎是正确的(我在这里用OWL API来讲;我不太了解Scala来判断Scala代码的正确性)