2016-11-19 4 views
0

実際に別のクラスへの参照である(個人で)プロパティを持つ方法はありますか?Protegeオントロジ - 個々のクラスを参照できますか?

は例えば、サンプルワインオントロジー(http://www.w3.org/TR/2003/PR-owl-guide-20031209/wine)で、私は特定のワインのようLaneTannerPinotNoirため、RedMeatのように別のクラスを参照することができWineプロパティpairsWellWithを指定したいと思います。

私は個人(LaneTannerPinotNoir)からRedMeatのようなクラスへの参照を希望します。Steakのような個人ではありません。ある個人から別の個人への参照は簡単です(オブジェクトプロパティ)。

私は階層を混乱させることなくこれをしたいと思います。すなわちLaneTannerPinotNoirRedMeatではないため、多階層を含むすべてのソリューションが間違っている可能性があります。

多分私は可能なすべての個人を推測することができますか?それも大丈夫だろう。

答えて

1

野菜とスパイシーなローストビーフを作ると想像してください。レーン・タナー・ピノ・ノワール・ジュリア・ヴィンヤード2006のボトルがあなたのセラーにあるとしましょう。このボトルは覚えていないので、デジタルワインペアリングアシスタントが食事に適したワインを選ぶのを手伝ってください。アシスタントはあなたのセラーにあるすべてのボトルを知っていて、近くのワインブティックのリンクされたデータにアクセスして何を買うべきかアドバイスします。

あなたが実際にこのツールが言いたいことはある:

ことを知っ
lt:JuliaVineyard2006 onto:pairsWellWith my:spicyRoastedBeef . 

my:spicyRoastedBeef a onto:RedMeat . 
lt:JuliaVineyard2006 a lt:PinotNoir . 

これは、あなたがそのすべてのLTのピノ・ノワールを知っている知識ベースをご希望の状況ですすべての赤身の肉料理とよく調和します。これはOWLでも言えますが、it's not trivialです。幸いなことに、レーン・タナーの知識ベースはそのワインについてのこれらの公理があります

SELECT ?wine WHERE { 
    ?wine onto:pairsWellWith my:spicyRoastedBeef . 
} 

は、データソースの正しい組み合わせを照会し、右推論を適用する:

ex:r1 a owl:ObjectProperty . 
ex:r2 a owl:ObjectProperty . 
onto:pairsWellWith owl:propertyChainAxiom (ex:r1 ex:r2) . 
ex:a a owl:Thing . 
lt:PinotNoir a owl:Class; 
    rdfs:subClassOf [ 
     a owl:Restriction; 
     owl:onProperty ex:r1; 
     owl:someValuesFrom [a owl:Class; owl:oneOf (ex:a)] 
    ] . 
onto:RedMeat a owl:Class; 
    rdfs:subClassOf [ 
     a owl:Restriction; 
     owl:onProperty [owl:inverseOf ex:r2]; 
     owl:someValuesFrom [a owl:Class; owl:oneOf (ex:a)] 
    ] . 

アシスタントは、単純に依頼することがあります。あなたの食事に適したすべてのワインを地下貯蔵庫から手に入れることができます。また、隣の店から購入することもできます。 OPのコメントの後

編集:

はオントロジーはあまり表情豊かにするために、それは単にそうのように、すべての赤肉とよくワインのペアと言って(赤肉に、個々のワインを関連付けることが可能であろうあなたは赤肉とよくペア、すべてのワインでこれをしなければならないでしょう
onto:RedMeat a owl:Class; 
    rdfs:subClassOf [ 
     a owl:Restriction; 
     owl:onProperty onto:pairsWellWith; 
     owl:hasValue lt:JuliaVineyard2006 
    ] . 

あなたは、これはまだあまりにも表情豊かだと思う場合は、明示的にも明示的にすべてのペア(ワイン、食事)がペアを追加することができます一緒に、消費者の視点からは効率的ですが、 "f ** kセマンティクス "とパブリッシャーの側に多くのオーバーヘッドを置く。

また、OWLをすべて無視して、ルールベースの推論などの他の手法と同等の意味を提供することもできます。規則交換(RIF)の標準があります。ルールオンオントロジーを世界と共有することができますが、RIFは採用にはあまり成功していないため、ほとんどの人/システムはそれを無視します。 SWRL、SPIN、n3など、ルールを定義する標準以外の方法が存在します。ルールは、と表現した理由がかなり簡単である:

?x a lt:PinotNoir . 
?y a onto:RedMeat . 
---------------------------- 
?x onto:pairsWellWith ?y . 

例えばowl:AnnotationProperty又はpunningとを使用するなどクラスに個々に関連する他の方法が存在します。しかし、これらの技術のどれも、あなたが望む正しいセマンティクスを伝えないでしょう。

+0

ご迷惑をおかけしていただきありがとうございます。私はこれを「ロールアップ」と認識していると思います。これは、あるクラスのすべてのインスタンス( 'PinotNoir')を別のクラス(' RedMeat')のすべてのインスタンスに関連付けるので、実際には1つのノッチで自分の要件の複雑さを上げています。私は概念的に転位を理解することができますが、Protegeでは特定の個人をどのようにクラスに関連付けるかという(より簡単な)問題に悩まされています。 –

+0

はい、そうです、それはオントロジをかなり複雑にします。しかし、それはロールアライメントではありません。詳細が必要な場合は、私の答えにリンクしている論文をチェックしてください。 –

関連する問題