OWL 2推理SWRL规则

时间:2013-06-11 01:27:18

标签: owl swrl

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

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部分试图表达这样的规则:

worksAt(x, y), University(y), supervises(x, z), Student(z) -> professorOf(x, z)

使用属性链和rolification技术:

rule

SWRL部分是:

professorOf(x, y) -> instructorOf(x, y)

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

ObjectPropertyAssertion( :r1 :Bob :Bob )
ObjectPropertyAssertion( :professorOf :DrBoffin :Bob )
ObjectPropertyAssertion( :r2 :DrBoffin :DrBoffin )
ObjectPropertyAssertion( :supervises :DrBoffin :Bob )
ObjectPropertyAssertion( :worksAt :DrBoffin :UF)

为什么没有出现预期的SWRL结果?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

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

  

worksAt(x,y),University(y),supervises(x,z),Student(z)→professorOf(x,z)

但是你试图代表它,主要是

  

(在一些大学工作)(x),监督(x,z),学生(z)→教授(x,z)

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

尽管可以用SWRL表示,但这仅包括个人被命名的情况,因此基于rolification的解决方案将涵盖更多案例。因此,我们的想法是创建一个角色rWorksAtSomeUniversityworksAt some University的翻译)和一个角色rStudentStudent的翻译,然后断言

rWorksAtSomeUniversity o supervises o rStudent SubPropertyOf professorOf

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

  

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

或子属性公理

professorOf SubPropertyOf instructorOf

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

这是一个包含OWL函数语法中的这些类和公理的本体。这并不奇怪,人类可读,但它是完整的;您应该能够下载它并与您的推理器一起测试。

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都可以产生推论:

DrBoffin professorOf Bob
DrBoffin instructorOf Bob