我如何在本体学中的每个类中检索 o ash all(推断)存在限制?
我当前的方法是迭代所有对类和对象属性的迭代,并检查限制是否满足:
- 对于 class(o)和时代的每个子类(c,d);类(O):
- 对于对象属性(O)的每个属性 p :
- 如果 c 和 p 一些 d 是可满足的:
- 产量(c,p,d)
这非常慢,因为我正在使用具有4557个类和107个对象属性的疫苗本体论。即使是一次性计算,我也可以通过看到更好的方法来学到一些东西。
在此处建议使用JFACT的OWLKnowledgeExplorerReasoner
无效,因为它在检索邻居标签时崩溃(请参阅我的测试用例)
您能否建议使用Owlapi,Protégé或任何其他工具进行任何改进的解决方案?另外,只能检索最特定的填充类。
谢谢!
首先,您的支票是错误的。对于空的本体,C and P some D
将是可满足的,这不是您想要的。您必须检查C and not (P some D)
是否不满意(另外,只需检查isSubsumedBy(C, P some D)
)即可。
如果您使用一些用于分类的技术,例如:
,可以改善探索时间。- 如果
C
是P some D
的子类,那么C
的所有子类也是如此 - 如果
C
不是P some D
的子类,那么C
的所有超级类也是如此 -
P
和D
的子/超级类/属性的类似规则 - 您可以为所有
P some Thing
表达式提供名称。分类后,您可以将C
的搜索限制在这些概念的子类中。
如果您可以缩小问题,这也有所帮助。您真的需要检查所有对和所有属性吗?
在此处建议使用JFACT的OwlKnowledge ExploreReasoner无效,因为它在检索邻居标签时崩溃了(异常情况!)。
。
您能否提供一个测试案例和问题的完整堆栈,以便我们解决问题?您是否尝试将其与事实 ?