首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用OWL推理推断域/范围

用OWL推理推断域/范围
EN

Stack Overflow用户
提问于 2017-03-05 14:23:57
回答 1查看 309关注 0票数 0

如何使用推理器推断给定数据/对象属性的OWL域/范围?

例如,我有两个类RatBird和一个数据属性hasName。我希望这些类成为hasName的唯一域

代码语言:javascript
复制
<Declaration><Class IRI="#Rat"/></Declaration>
<Declaration><Class IRI="#Bird"/></Declaration>
<Declaration><DataProperty IRI="#hasName"/></Declaration>
<DataPropertyDomain>
    <DataProperty IRI="#hasName"/>
    <ObjectUnionOf>
        <Class IRI="#Rat"/>
        <Class IRI="#Bird"/>
    </ObjectUnionOf>
</DataPropertyDomain>

当我使用HermiT推理器推断域时,我得到了owl:Thing类,而不是RatBird

代码语言:javascript
复制
Set<OWLClass> inferedDomains = hermitReasoner
                            .getDataPropertyDomains(hasNameProperty, false)
                            .getFlattened();

通过使用owl读取DataPropertyDomainAxioms of hasName、获取RatBird类,我可以手动提取域。但是,我将无法获得其他可推断的类(例如,Rat有一个等价的类Mouse)。

因此,我想使用推理机来推断结果,例如:

  • 理由: HermiT,FacT++,..。
  • SQWRL规则引擎: Drools,

是否有任何办法来取得这种结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-05 20:09:31

您定义为域的类是匿名类(两个命名类的联合),因此OWLReasoner的实现不能返回它。

为了解决这一限制,您可以搜索所声明的属性域的子类-因此,使用OWLOntology::getDataPropertyDomainAxioms(OWLDataProperty),您将从根本体检索联合;使用OWLReasoner::getSubClasses(OWLClassExpression, false),您将能够检索包含分离子类的所有节点。每个节点将包含一组等价的类;在您的示例中,我希望看到一个包含{Rat, Mouse}的节点和一个包含{Bird}的节点。

编辑:添加了回答注释的示例。

代码语言:javascript
复制
OWLOntology o = ... //root ontology for the reasoner
OWLReasoner r = ...
OWLDataProperty p = ...
for (OWLDataPropertyDomainAxiom ax: o.getDataPropertyDomainAxioms(p)) {
    OWLClassExpression c = ax.getDomain();
    NodeSet<OWLClass> allSubClasses = r.getSubClasses(c, false);
    // allSubClasses contains all named subclasses of the domain
}

正如@AKSW在注释中所建议的那样,OWLReasoner在其任何方法中不返回匿名表达式的原因是,这些方法中的匿名表达式是无限的:例如,给定任何类,该类都有无限个匿名子类。这个证据太长了,无法在这里复制,但很容易在描述、逻辑、文章和书籍中找到。

因此,在设计OWLReasoner时,选择是使推理不完整(只返回或多或少任意的匿名表达式集)、不可判定的(通过返回无限集)还是只将其限制在指定的类上。后者被认为是最好的解决办法。

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

https://stackoverflow.com/questions/42609522

复制
相关文章

相似问题

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