0

私の仕事は、フクロウで 2 つのクラスを構築することです。Base クラスは、p1、p2、p3 などの複数のプロパティを含むリソースを記述します。もう 1 つのクラスである Sub は、Base クラスと同様のリソースを記述しますが、そのプロパティの 1 つ (p1 など) を含まず、p2 と p3 のみを含むという制限があります。たとえば、クラス Car は、いくつかのプロパティを含む車両を記述し、そのうちの 1 つが「hasMotor」です。クラス Bicycle は、モーターを持たないという制限のある車両についても記述します。

カーディナリティ制限を使用して、そのようなクラスを定義します。

@prefix : <http://sample.org/test#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix xml: <http://www.w3.org/XML/1998/namespace> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@base <http://sample.org/test> .

<http://sample.org/test> rdf:type owl:Ontology ;                         
                         owl:versionInfo "0.2"^^xsd:string .


:p1 rdf:type owl:DatatypeProperty .
:p2 rdf:type owl:DatatypeProperty .
:p3 rdf:type owl:DatatypeProperty .

:Base rdf:type owl:Class ;
      rdfs:subClassOf [ rdf:type owl:Restriction ;
                        owl:onProperty :p3 ;
                        owl:someValuesFrom xsd:string
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :p2 ;
                        owl:someValuesFrom xsd:string
                      ] ,
                      [ rdf:type owl:Restriction ;
                        owl:onProperty :p1 ;
                        owl:someValuesFrom xsd:string
                      ] .


:Sub rdf:type owl:Class ;

     owl:equivalentClass [ rdf:type owl:Class ;
                           owl:intersectionOf ( :Base
                                                [ rdf:type owl:Restriction ;
                                                  owl:onProperty :p1 ;
                                                  owl:qualifiedCardinality "0"^^xsd:nonNegativeInteger ;
                                                  owl:onDataRange xsd:string
                                                ]
                                              )
                         ] .

しかし、Sub クラスは、Pellet reasoner によって Nothing と同等であると結論付けられます。上記の 2 つのクラスは、フクロウでどのように記述されるべきですか?

4

1 に答える 1

4

公理の意味は…</h2>

しかし、ペレット推論器による推論結果が理解できません。プロパティの存在の制限は機能していないようです。そのようなクラスを定義するにはどうすればよいですか?

Pellet の推論結果がどのようなものであるかについては言及されていないので、具体的に説明するのは難しいです。しかし、私たちはあなたの公理が何を言っているのかをまだ見ることができます. OWL クラスは実際にはセットに似ており、定義している制限は、それらのセットの要素に関するアサーションを作成しています。と言うとき、例えば、

ベース ⊑ ∃prop.String

あなたが言っているのはそれです

1. xBase場合prop(x,s)ようなString がいくつかあります

これで、さらに 2 つの公理ができました。

サブ ⊑ ベース
サブ ⊑ =0 prop.String

これらは言う

2.一部のxSubである場合xBaseです。 3.一部のxSubである場合prop(x,s) のStringsは正確にゼロです。

…そして、Subが他のすべてのサブクラスである理由。

さらに、Sub クラスが ObjProp のサブクラスであると推論される理由を説明してください。

オントロジーに一貫性はありませんが、クラスの 1 つであるSubがメンバーを持つことができないという、通常は望ましくない状態になっています。これはなぜですか?さて、いくつかのxSubであるとします。次に、xSubであるため、文字列はまったくありません。もちろん、すべてのSubBaseであるため、xBaseです。これはBaseであるため、少なくとも 1 つの文字列が必要です。ゼロと少なくとも 1 つを持つことはできないため、実際にはSubのインスタンスを持つことはできません。Subは空のクラスなので(つまり、 owl:Nothingと同等です))他のすべてのクラスのサブクラスです。

于 2014-02-06T21:03:12.847 に答える