3

Protégé を使用してオントロジーにルールを追加する代わりに、Java またはペレットを使用して SWRL ルールをオントロジーに追加したいと考えています。

たとえば、オントロジーにインポートしたいルールは次のとおりです。

[Course(?x),teacherOf(?y,?x),worksFor(?y,?z)] => [coursePresentedInUniversity(?x,?z)]

次のコードをオントロジーに追加します。

<swrl:Imp rdf:about="#CoursePresentedInUniversityRule">
    <swrl:head rdf:parseType="Collection">  
        <swrl:IndividualPropertyAtom>
                <swrl:propertyPredicate rdf:resource="#coursePresentedInUniversity" />
                <swrl:argument1 rdf:resource="#x" />
                <swrl:argument2 rdf:resource="#z" />
        </swrl:IndividualPropertyAtom>
    </swrl:head>
    <swrl:body rdf:parseType="Collection">
        <swrl:ClassAtom>
            <swrl:classPredicate rdf:resource="#Course" />
            <swrl:argument1 rdf:resource="#x" />
        </swrl:ClassAtom>

        <swrl:IndividualPropertyAtom>
            <swrl:propertyPredicate rdf:resource="#teacherOf" />
            <swrl:argument1 rdf:resource="#y" />
            <swrl:argument2 rdf:resource="#x" />
        </swrl:IndividualPropertyAtom>
        <swrl:IndividualPropertyAtom>
            <swrl:propertyPredicate rdf:resource="#worksFor" />
            <swrl:argument1 rdf:resource="#y" />
            <swrl:argument2 rdf:resource="#z" />
        </swrl:IndividualPropertyAtom>

    </swrl:body>
</swrl:Imp>

それを行うためのサンプルコードを教えてもらえますか?

実は以下のコードを書いたのですが、うまくいきませんでした!

    Rule mynewRule=new Rule(ruleHead,ruleBody);
    PelletReasoner pelletReasoner =com.clarkparsia.pellet.owlapiv3.PelletReasonerFactory.getInstance().createReasoner(testOntology );
    KnowledgeBase knowledgeBase=pelletReasoner.getKB();
    knowledgeBase.addRule(mynewRule);
4

1 に答える 1

3

Java コードの 1 つの方法は、OWL APIを使用することです。OWLDataFactoryクラスには SWRL ルールを作成するメソッドがあり、結果のルールをオントロジーに追加して保存できます。これは、Protege 4 および 5 で使用されるプロセスと同じです。

ドキュメントはこちらから入手できます

于 2016-05-28T09:28:44.243 に答える