在OWLAPI

时间:2017-12-31 11:43:20

标签: owl ontology owl-api

我想使用推理器检查多个三元组的一致性。 有大约700k三元组需要检查,因此对于每个三元组,我创建了一个文件,其中包含主题和对象的三元组和直接类型。

我的问题是,如果我每次加载一个小文件时都没有导入所有属性,则所有ObjectProperty语句都被视为AnnotationAxioms,它们不允许发现任何不一致。 如何只导入一次所有属性,并在每次加载时将它们添加到带有三元组的文件中?

提前致谢!

修改 我在这里添加了一个我正在分析的小文件的例子。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:wdt="http://www.wikidata.org/prop/direct/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about="http://www.wikidata.org/entity/Q295376">
<rdf:type rdf:resource="http://www.wikidata.org/entity/Q5"/>
</rdf:Description>
<rdf:Description rdf:about="http://www.wikidata.org/entity/Q21077119">
<rdf:type rdf:resource="http://www.wikidata.org/entity/Q17299750"/>
<wdt:P1346 rdf:resource="http://www.wikidata.org/entity/Q295376"/>
<rdf:type rdf:resource="http://www.wikidata.org/entity/Q4993329"/>
</rdf:Description>
</rdf:RDF>

以上几行不包括导入公理。 谢谢!

2 个答案:

答案 0 :(得分:0)

不将三重写入磁盘会快得多。使用属性声明创建T形本体,然后添加要测试的公理。然后,您可以创建推理器,测试一致性,丢弃推理器并删除刚刚测试的公理。然后本体可以与另一个公理和新推理一起使用。

然而,你是在​​孤立地检查每个公理;虽然公理本身可能是一致的,但这并不能保证公理在一起做什么 - 假设它们在你完成测试后会出现在同一个本体中。

答案 1 :(得分:0)

具体关于如何向本体添加导入,请参阅https://github.com/owlcs/owlapi/wiki/Add-an-import-directive-to-an-ontology上的OWLAPI文档

我不相信这是您的方案的最佳解决方案,但问题是: - )