1

HermiT推論を使用して、一連の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)

プロパティ チェーンとローリフィケーションテクニックを使用する:

ルール

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 の結果が表示されないのはなぜですか? 助言がありますか?

4

1 に答える 1

1

あなたの質問を読み直した後、あなたが表現しようとしているルールは

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

しかし、本質的にそれを表現しようとしていること

(どこかの大学で働く)(x), 指導者(x, z), 学生(z) → 教授(x, z)

これは、複雑なクラス式を持っていても、実際には有効な SWRL ルールです。(詳細については、SWRLルールでOWLクラス式を使用できますか?を参照してください。それらは有効ですが、Protégéエディタはその入力を受け入れませんでしたが、ルールがすでにオントロジーにある場合はルールを正しく表示します。)

SWRL で表現することもできますが、それは個人が名前を挙げられているケースのみをカバーするため、ローリフィケーション ベースのソリューションはより多くのケースをカバーします。したがって、アイデアは、ロールrWorksAtSomeUniversity( のロール化worksAt some University) とロールrStudent( のロール化) を作成しStudent、次にそれをアサートすることです。

rWorksAtSomeUniversity o supervises o rStudent SubPropertyOf professorOf

次に、 と を関連付けるprofessorOfinstructorOfは、SWRL ルールを使用できます。

教授の(x,y) → 教授の(x,y)

またはサブプロパティの公理

professorOf SubPropertyOf instructorOf

ローリフィケーション ベースのルールと同様に、非 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
于 2013-06-11T03:08:02.267 に答える