2

courses私は、クラスであるさまざまなクラスを持つ単純なオントロジーを持っていlessonsます。belongsToプロパティを の個人に関連付ける SWRL ルールを実行しようとしていますlessonsOWLReady2と Pythonを使用しています

with onto:
    #courses
    class course_id (onto.courses >> int): pass
    class course_title (onto.courses >> str): pass
    #lessons
    class lesson_id (onto.lessons >> int): pass
    class lesson_title (onto.lessons >> str): pass
    class course_id (onto.lessons >> int): pass
    

    class belongTo(onto.lessons >> onto.courses): pass

    rule = Imp()
    rule.set_as_rule("""lessons(?l), courses(?c), course_id(?c, ?cid), course_id(?l, ?cid) -> belongTo(?l, ?c) """)



sync_reasoner_pellet(infer_property_values = True, infer_data_property_values = True)

アイデアは、それらcourse_idが類似している場合、レッスンはコースに属している必要があるということです。しかし、私のコードは機能していないようです。私はこれらの推論を得ています:

* Owlready * Adding relation lmsontology.Introduction belongTo lmsontology.Introduction
* Owlready * Adding relation lmsontology.Databases belongTo lmsontology.Databases
4

1 に答える 1

0

あなたの例では、次の問題を検出しました。

  • とのクラスがcoursesありlessonsません。
  • course_idは 2 回定義されているため、最初の定義は廃止されています
  • この例は、通常の命名規則に固執していません: 概念には単数名詞、hasId役割には動詞表現を使用します。
  • 個人は定義されていないため、推論を実行すると、swrl ルールには基本的に何も適用されません。

一般に、ルールをデバッグするには、単純なルールまたは実際の例から段階的に構築し、各ステップで結果が期待どおりかどうかを確認することをお勧めします。

于 2020-10-19T06:15:41.847 に答える