我正在处理一个使用Protégé生成的OWL文件。我在Java代码中使用OWL。我有一组定义好的类,例如:
水飞虱( SpeciesA∃hasPart.Fruit⊓=hasShape.round ) SpeciesA为subClass种,hasPart为部分果实,hasShape值为圆形。
所有这些都是在Protégé中定义的,然后导出到OWL,然后用Java加载到我的本体中。如果我创造了一个物种的个体,并且我拥有了
我检索我的个人所属的每个类(在本例中,这应该包括SpeciesA)。
我根本不确定我应该使用什么:我可以使用SWRL物种(?X)^hasPart(?X,果品)^hasShape(?X,"$Round$"),还是应该使用推理器?
我真的很困惑于Protégé“相当于”和个人财产。
发布于 2014-05-12 18:04:09
通常,如果您没有断言某个单独的x属于某个类,那么您需要一个推理者来为您推断这一点(前提是它是从您拥有的其他数据中得到的)。无论推理是基于OWL公理还是基于SWRL规则,这都适用。(当然,在SWRL规则的情况下,您需要一个支持SWRL规则的推理器,比如Pellet或HermiT。)在你描述的情况下,你说过
水飞虱( SpeciesA∃hasPart.Fruit⊓=hasShape.round )
这就意味着,每一种属于SpeciesA的东西都是一个物种,有一些水果作为一部分,而且形状是圆形的。然而,它并没有说,所有属于物种的东西,都有一些水果作为一部分,而且圆的形状是SpeciesA。用一阶逻辑来看这是什么可能会有帮助:
[ SpeciesA(x)→(物种(X)y hasPart(x,y)∧hasShape(x,圆形)]]
请注意,条件只从左到右。如果您还想说所有满足右侧条件的东西都是左侧概念的实例,那么您可能需要一个等价:
[ SpeciesA(x)↔(物种(X)y hasPart(x,y)∧hasShape(x,圆形)]]
在猫头鹰里,那将是
水飞虱( SpeciesA∃hasPart.Fruit⊓=hasShape.round )
也就是说,SpeciesA是一个与另一个类等价的类。不过,您仍然需要一个推理者来推断具有这些条件的东西是一个SpeciesA。
https://stackoverflow.com/questions/23604071
复制相似问题