2011-09-02 7 views
5

これは非常に初心者に聞こえますが、RDFに関するW3の学校のチュートリアルを読んでプライマリを読んだ後でも、単純な主語 - 述語 - オブジェクトrdfの関係がXMLでどのように表現されているかはわかりません。初心者の質問:rdfとの関係を表現する方法は?

私は車を持っている:

のは、私はこのような考え方を持っているとしましょう。 私の車にはGPS受信機があります。 車の現在のGPS座標はX緯度、Y経度です。

<RDF> 
<Owner Name="me"> 
    <has>car</has> 
<car> 
    <has>gpsreceiver</has> 
    <has><cordinates X="somevalue", Y="somevalue"></has> 
</car> 
</Owner> 
</RDF> 

はそれが書かれてどのようにこのされているように私はこれを表していますか?私が理解するのが難しいのは、サブジェクト、オブジェクト、述語がどのように要素と属性にマップされるかです。

一度これをソートしたら、 "car"を独自のスキーマにしたいので、その名前空間を参照して、 "私はABCナンバープレートDEFを所有しています。今12.34の座標で」。

光を放してください。私のウィット末端に、私の周りの誰もが、私は(名前空間の供述を無視して)書きます

答えて

5

私は、XML構文について心配するべきではないと他の回答者に同意しますが、私はトリプルについてもすぐに考えてみません。最初にモデリングしようとしていることを明確に考え始めると、トリプルがより明白になります。

だから、あなたの車は、車の一種です。一般的にどんな種類の車でも、特にあなたの車であるということは、2つの異なる考え方です。したがって、すべての車のクラスとあなたの車のインスタンスを表すために、RDFがリソースと呼ぶ2つの別々の名前が必要です。同様に、GPSの一般的なもの、特に車内のGPSがあります。次いで、適切な名前空間を想定:

:car127 rdf:type :Car . 
:gps99 rdf:type :GPS. 

所与車(被写体car127)は(述語rdf:type)すべての車のクラス(オブジェクトCar)のメンバーであることを発現する三重だと同様にGPSのための1つすなわち。

あなたの車は、ニナが所有しています。だから、2人の関係、ニーナが人であることを言って1、および(車を識別し、再使用して同じリソースによる)ニーナは、その特定の車を所有している一つです:

:nina rdf:type foaf:Person. 
:nina foaf:name "Nina". 
:car127 :ownedBy :nina. 

(OK、私は余分なトリプルを追加しましたリソースURI :ninaを名前Ninaに関連付ける)。

:car127 :containsComponent :gps99. 

今、私たちはGPSが与えられた緯度と長い位置を「持っている」ことを非公式に言う:

特定のGPSは、特定の車の部品です。明らかにこれらは時間の経過とともに変化する(そうでなければ、新しい車を得る:)。これをモデル化するには、xとyの述語をGPSリソースに直接アタッチし、モデルの値を繰り返し更新します。しかし、あなたのGPSが特定の時間に一連の読み取り値を与えていると考えるなら、それはちょっと明瞭で説明力があるようです。我々が説明することができますが、そのアイデンティティ私たちは知っていないかを気にしない - 関係 -

:gps99 :reading [ 
    rdf:type :Reading; 
    :lat 51.14276; 
    :long -2.71619; 
    :at "2011-09-02T123400"^^xsd:dateTime 
]. 

角括弧[...]は、その特性が新しいリソースを導入するの短手の方法です:その後、我々は持っています。技術的には、匿名ノードまたはbNodeと呼ばれていますが、これは現在心配する細部ではありません。 GPSデバイスからタイプ:Readingのリソース(「大文字のR」に注意してください - それは他の種類のリソースからクラスを識別するリソースを区別するための規則です)との関係(「読書」)があることに留意すれば十分です。この読み込みリソースには、型、観測された緯度と経度、および読み込み時間という4つのプロパティがあります。私たちが望むならば、他のポイントの読みを追加して、トラックのモデリングを構築することもできますが、それは別の議論です!

+0

ありがとうございます。最初はrdfトリプルの有向グラフを描き、次にw3schools.comのオンラインRDFチュートリアルの例に従おうとしました。あなたが投稿した構文は私には新しく、今はさらに質問があります:トリプルを書くこの構文と、どの名前空間を使うべきですか?私はあなたがfoafとxsdを使ったのを見ます。必要な関連する名前空間を簡単に見つけることができる場所かURLがありますか? –

+0

構文はタートルと呼ばれます。たとえば、http://en.wikipedia.org/wiki/Turtle_%28syntax%29 –

+0

を参照してください。名前空間については、使用する語彙を説明するドキュメント(FOAF、DCなど)に名前が付けられています。しかし、接頭辞を一緒に収集する良いリファレンスポイントはhttp://接頭辞です。cc –

0

:-(私を啓発するために、RDFやオントロジーを知っていないようにみえ

<rdf:RDF > 
<!-- about 'me' --> 
<my:Owner rd:about="http://example.com/me"> 
    <my:has rdf:resource="http://example.com/thecar"/> 
</my:Owner> 

<!-- about the car --> 
<my:Car rdf:about="http://example.com/thecar"> 
    <my:hasPosition> 
    <my:Gpsreceiver> 
     <my:X>somevalue</my:X> 
     <my:Y>somevalue</my:Y> 
     </my:Gpsreceiver> 
    </my:hasPosition> 
</my:Car> 
</rdf:RDF> 

あなたがであなたのRDFを検証することができますhttp://www.w3.org/RDF/Validator/

+0

RDFを表示/教えるための最もひどい構文RDF –

2

私は仕様は、私が試してみて、トリプルでそれについて思うので、同じ情報をシリアル化する複数の方法を可能にし、これまでにあなたがXMLのように見えるために必要なものについて考えないようにしようとするだろう。

だからあなたのために例:

:Me :owns :MyCar . 
:MyCar :hasPart :GpsReceiver . 
:MyCar :hasXPosition "x" . 
:MyCar :hasYPosition "y" . 

これはかなり基本的な表現方法であり、ピエールが提案したような選択肢があります。

RDFのすべてがトリプルで表されるので、トリプルでデータを表現する方法を考えてから、使用可能なライブラリ/ツールを使用してRDF/XMLなどのシリアル化を生成します。

+0

+1醜いRDF/XMLを表示しないように+1;) –

+0

説明をいただきありがとうございます。私はちょうどあなたの上の答えに答えて、 XMLについて考えることなく、RDFトリプルを「書く」ことをさらに深く掘り下げる必要があります。どのように私がそれらについて学ぶことができるかに関するオンラインの記事はありますか? –

+0

また、XMLシリアル化を生成するために使用可能なライブラリとツールについても言及しています...私が使用できるいくつかの例を提供できますか?私は基本的にubuntuとMac OS Xで動作します。ありがとう –