【问题标题】:Edit an OWL Individual using OWL API使用 OWL API 编辑 OWL 个人
【发布时间】:2014-12-26 22:56:56
【问题描述】:

我有一个在 protege 4 中创建的本体。我需要使用 OWL API 4 向我的本体的 owl 个体添加一个数据属性。据我所知,我是 java / owl api 的新手。我使用了以下代码:-

OWLNamedIndividual myowlIndl = df.getOWLNamedIndividual(":test", pm);
OWLDataProperty indlName = df.getOWLDataProperty(":strVal", pm);
OWLDataPropertyAssertionAxiom dataPropertyAssertion = df.getOWLDataPropertyAssertionAxiom(indlName, myowlIndl,"hello world");
AddAxiom addAxiom1 = new AddAxiom(myowlOntology, dataPropertyAssertion);
myontologyManager.applyChange(addAxiom1);

但此代码不会“更新”已经存在的猫头鹰个体“测试”而是创建一个新的。

如何解决这个问题?

【问题讨论】:

    标签: ontology owl-api


    【解决方案1】:

    使用完整的 IRI 而不是缩短的版本,从这段代码中很难判断命名空间是否正确(“:test”是模棱两可的,因为我们看不到前缀管理器如何解析它,我们也不能见本体)。 另外,请确保在调用 applyChange() 后保存本体。

    【讨论】:

    • 非常感谢。玩 IRI 就成功了。顺便一提。使用 iri="file:/D:/university.owl" 和 iri="http:/localhost:3030/university.owl" 有什么区别?
    • 一个是文档 IRI,它取决于本体的物理位置,另一个是保持不变且不绑定到特定文件系统路径的 URL - 它允许您移动文件并且仍然使用相同的 IRI 引用它们,前提是 localhost:3030 的服务器知道在哪里可以找到内容。此外,该 URL 可以由其他人在其本体中导入,而您的本地文件只能由您访问。
    • 感谢您的提问和回答。不幸的是,我不想将新的文字添加到现有的 DataProperty,而是我想修改现有的文字。你知道如何解决这个问题吗?
    • 使用 RemoveAxiom 删除旧值,使用 AddAxiom 插入新值。 OWLAxiom 是不可变对象,因此无法更改其中的一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多