2017-07-12 12 views
1

SPINを初めて使用しました。私は次の目的のためにそれを使用することが理にかなっているのだろうかと思います。SPINでデフォルト値をプロパティに設定

owl:equivalentClassが値に設定されていない場合は
ex:Vehicle 
owl:equivalentClass wd:MeanOfTransportation 
ex:Sedan 
    owl:equivalentClass wd:Sedan 

、それは取る必要があります。

ex:Vehicle 
ex:Car 
    ex:Sedan 

一部のクラスは、例えば、いくつかの値にプロパティowl:equivalenClassセットを持っている:私は次のクラス階層を持っていると言いますその値は親クラスです。上記の例では、

ex:Car 
    owl:equivalentClass wd:MeanOfTransportation 

私の場合、TopBraidを使用してこれを達成できますか?

+0

私の最初の質問は、なぜこれをやりたいのでしょうか?これはまさに論理的な推論から来るものです。 – AKSW

+0

@AKSW、私はそれに従うかどうか分からない(または私はあなたを理解していない)...とにかく、TopBraid Composer Free Editionで利用できる唯一の推論エンジンはSPINエンジンなので、この質問は意味をなさない。 –

+0

@StanislavKralinあなたが正しいです。これは等価関係の一方向のみを保持する。すなわち、サブクラスが等価なクラスのサブクラスであるが、その逆ではない。 – AKSW

答えて

1

SPIN推論エンジンはTopBraid Composer Free Editionで利用できる唯一の推論エンジンであるため、これらの目的にはSPINを使用することが理にかなっています。

他TopBraid作曲版で

、appropiateness、ならびにその結果得られた、あなたinferencing configuration推論>構成推論)に応じて変えることができます。

ルールは次のとおりです。

rdfs:Class spin:rule [ 
    rdf:type sp:Construct ; 
    sp:text """ 
    CONSTRUCT { 
     ?this owl:equivalentClass ?equivalentClass . 
    } 
    WHERE { 
     ?this rdfs:subClassOf ?superClass . 
     ?superClass owl:equivalentClass|^owl:equivalentClass ?equivalentClass . 
     FILTER NOT EXISTS { 
      ?this owl:equivalentClass|^owl:equivalentClass [] . 
     } 
    } """ 
] . 

このSPINルールがrdfs:Classに接続されていることに注意してください:インスタンスのすべてのこれらのex:Carクラスを、ex:Vehicleです。 ?thisは、このクラスの「現在の」インスタンスを参照する特別な変数です。

spl:InferDefaultValueは、spl:defaultValue引数としてSPARQL変数を受け入れないため、spl:InferDefaultValue SPINテンプレートを使用できないようです。

+1

この場合、逆方向パス(^ owl:equivalentClass)を追加する目的は何ですか? ?superClass owl:equivalentClass |^owl:equivalentClass?equivalentClass – Jay

+0

@Joakim、あなたはそれを削除できます。この例では、プロパティ( 'owl:equivalentClass')は対称です。 'wd:Sedan owl:equivalentClass ex:Sedan'がアサートされ、' ex:Sedan owl:equivalentClass wd:Sedan'がアサートされていないと仮定しよう。それにもかかわらず、「ex:goodSedan owl:equivalentClass wd:Sedan」を推論したいかもしれません。 –

関連する問題