首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于SWRL规则的OWL 2推理

基于SWRL规则的OWL 2推理
EN

Stack Overflow用户
提问于 2013-06-11 09:27:18
回答 1查看 1.9K关注 0票数 1

我正在尝试使用HermiT reasoner来计算包含一组OWL公理和SWRL规则的本体的推理:

代码语言:javascript
运行
复制
Ontology(
  ClassAssertion( :Student :Bob )
  ClassAssertion( :Professor :DrBoffin )
  ClassAssertion( :University :UF )
  ObjectPropertyAssertion( :supervises :DrBoffin :Bob )
  ObjectPropertyAssertion( :worksAt :DrBoffin :UF )

  EquivalentClasses( :Student ObjectHasSelf( :r1 ))
  EquivalentClasses(
    ObjectHasSelf( :r2 )
    ObjectSomeValuesFrom( :worksAt :University ))
  SubObjectPropertyOf(
    ObjectPropertyChain( :r2 :supervises :r1 ) :professorOf )

  DLSafeRule(Body(ObjectPropertyAtom( :professorOf Variable( ?x ) Variable( ?y )))
             Head(ObjectPropertyAtom( :instructorOf Variable( ?x ) Variable( ?y ))))
)

基本上,OWL部分试图表达这样一条规则:

代码语言:javascript
运行
复制
worksAt(x, y), University(y), supervises(x, z), Student(z) -> professorOf(x, z)

使用属性链和rolification技术:

SWRL部分是:

代码语言:javascript
运行
复制
professorOf(x, y) -> instructorOf(x, y)

预期输出应同时包含ObjectPropertyAssertion( :professorOf :DrBoffin :Bob )ObjectPropertyAssertion( :instructorOf :DrBoffin :Bob )。但是,实际输出为(仅显示对象属性)

代码语言:javascript
运行
复制
ObjectPropertyAssertion( :r1 :Bob :Bob )
ObjectPropertyAssertion( :professorOf :DrBoffin :Bob )
ObjectPropertyAssertion( :r2 :DrBoffin :DrBoffin )
ObjectPropertyAssertion( :supervises :DrBoffin :Bob )
ObjectPropertyAssertion( :worksAt :DrBoffin :UF)

为什么没有显示预期的SWRL结果?有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-11 11:08:02

在重新阅读你的问题之后,我意识到你试图代表的规则是

worksAt(x,y),大学(Y),主管(x,z),学生( z) professorOf→(x,z)

而是你试图表现它,本质上是通过

学生(worksAt some

)(X),主管(x,z),学生( z) professorOf→(x,z)

这实际上是一个有效的SWRL规则,即使它有一个复杂的类表达式。(有关更多信息,请参见Can OWL Class Expressions be used in SWRL Rules?。即使它们是有效的,Protégé编辑器也不接受该输入,尽管如果规则已经在本体中,它将正确地显示这些规则。)

虽然它可以用SWRL表示,但这将仅涵盖命名为个人的情况,因此基于rolification的解决方案将涵盖更多情况。因此,我们的想法是创建一个角色rWorksAtSomeUniversity (worksAt some University的角色化)和一个角色rStudent ( Student的角色化),然后断言

代码语言:javascript
运行
复制
rWorksAtSomeUniversity o supervises o rStudent SubPropertyOf professorOf

然后,要关联professorOfinstructorOf,您可以使用SWRL规则

professorOf(x,y) instructorOf(x,y)→(x,y)

或子属性公理

代码语言:javascript
运行
复制
professorOf SubPropertyOf instructorOf

与基于rolification的规则一样,非SWRL规则将涵盖更多的情况,并且不要求推理器具有SWRL支持。

这里是一个包含这些类和公理的本体,采用OWL函数式语法。它不是很好的人类可读性,但它是完整的;你应该能够下载它并用你的推理机测试它。

代码语言:javascript
运行
复制
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(ex:=<http://www.example.com/university#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)

Ontology(<http://www.example.com/university>

Declaration(Class(ex:Professor))
Declaration(Class(ex:Student))
EquivalentClasses(ex:Student ObjectHasSelf(ex:rStudent))
Declaration(Class(ex:University))
Declaration(ObjectProperty(ex:instructorOf))
Declaration(ObjectProperty(ex:professorOf))
SubObjectPropertyOf(ex:professorOf ex:instructorOf)
Declaration(ObjectProperty(ex:rStudent))
Declaration(ObjectProperty(ex:rWorksAtSomeUniversity))
Declaration(ObjectProperty(ex:supervises))
Declaration(ObjectProperty(ex:worksAt))
Declaration(NamedIndividual(ex:Bob))
ClassAssertion(ex:Student ex:Bob)
Declaration(NamedIndividual(ex:DrBoffin))
ClassAssertion(ex:Professor ex:DrBoffin)
ObjectPropertyAssertion(ex:supervises ex:DrBoffin ex:Bob)
ObjectPropertyAssertion(ex:worksAt ex:DrBoffin ex:UF)
Declaration(NamedIndividual(ex:UF))
ClassAssertion(ex:University ex:UF)
EquivalentClasses(ObjectHasSelf(ex:rWorksAtSomeUniversity) ObjectSomeValuesFrom(ex:worksAt ex:University))
SubObjectPropertyOf(ObjectPropertyChain(ex:rWorksAtSomeUniversity ex:supervises ex:rStudent) ex:professorOf)
)

Pellet和HermiT 1.3.7都可以产生推论:

代码语言:javascript
运行
复制
DrBoffin professorOf Bob
DrBoffin instructorOf Bob
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17035238

复制
相关文章

相似问题

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