首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OWL发出SWRL请求

使用OWL发出SWRL请求
EN

Stack Overflow用户
提问于 2014-05-12 08:17:13
回答 1查看 441关注 0票数 0

我正在处理一个使用Protégé生成的OWL文件。我在Java代码中使用OWL。我有一组定义好的类,例如:

水飞虱( SpeciesA∃hasPart.Fruit⊓=hasShape.round ) SpeciesA为subClass种,hasPart为部分果实,hasShape值为圆形。

所有这些都是在Protégé中定义的,然后导出到OWL,然后用Java加载到我的本体中。如果我创造了一个物种的个体,并且我拥有了

  • hasPart(x,FruitA)
  • hasShape(x,圆形)

我检索我的个人所属的每个类(在本例中,这应该包括SpeciesA)。

我根本不确定我应该使用什么:我可以使用SWRL物种(?X)^hasPart(?X,果品)^hasShape(?X,"$Round$"),还是应该使用推理器?

我真的很困惑于Protégé“相当于”和个人财产。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23604071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档