オントロジーでプロパティを定義するとき、このプロパティの範囲が「空白」ノードであることをどのように定義しますか? たとえばhasPhoneNumber
、 domain でプロパティを定義したいとしますPerson
。人が複数の電話番号を持つことができることを私が知っているよりも、のインスタンスはプロパティにPerson
接続された空白ノードを持ち、次にこの空白ノードに電話番号が接続されます。hasPhoneNumber
1 に答える
要するに、これはできません。空白のノードは、別のタイプのリソースです。空白ノードは RDF の存在変数として機能します。グラフで空白ノードを使用すると、何らかのリソースが存在し、他のリソースと特定の関係にあることを示します。たとえば、グラフ (空白ノードなし):
:x :hasPhoneNumber :phoneNumberList .
:phoneNumbeList rdf:value "phone number 1", "phone number 2" .
次のグラフが含まれます (空白のノードを含む)。
:x :hasPhoneNumber [ rdf:value "phone number 1", "phone number 2" ] .
この処理の詳細については、1.5 を参照してください。W3C 勧告RDF Semanticsからの存在変数としての空白のノード。
RDF および RDFS レベル (ドメインとプロパティの範囲を定義する場所) で、リソースが URI リソースか空白ノードかを区別します。可能であれば、それが何を意味するのかは明確ではありません。と言う事で
:p rdfs:domain :C ;
rdfs:range :D .
あなたが言っているのは:p
、たとえば、の使用を見るたびに、
:a :p :b .
次のトリプルをグラフに追加できます。
:a rdf:type :C .
:b rdf:type :D .
rdfs:domain
とはグラフにさらにトリプルを追加するためのものであるため、 (この場合はと) を使用するトリプルの主語と目的語が空白ノードであるか URI ノードrdfs:range
であるかは問題ではありません。:p
:a
:b
1 人の人に複数の電話番号が必要な場合は、複数のトリプルを使用して、次のようにすることができます。
:p :hasPhoneNumber :phoneNumber1 , :phoneNumber2, :phoneNumber3 .
これは 3 つのトリプルです。
:p :hasPhoneNumber :phoneNumber1 .
:p :hasPhoneNumber :phoneNumber2 .
:p :hasPhoneNumber :phoneNumber3 .
あるいは、人が電話番号のコレクションを持つことができることをモデル化したい場合は、RDF コンテナーを使用できます。例rdf:List
:
:p :hasPhoneNumber ( :phoneNumber1 :phoneNumber2 :phoneNumber3 ) .
次のように完全に書くことができます
:p :hasPhoneNumber [ rdf:first :phoneNumber1 ;
rdf:rest [ rdf:first :phoneNumber2 ;
rdf:rest [ rdf:first :phoneNumber3 ;
rdf:rest rdf:nil ] ] ] .