2016-04-02 8 views
2

タートルでRDFグラフのテキスト表現を作成したいと思います。一例として、スパイダーマンとグリーンゴブリンの関係。 「スパイダーマン」とロシア語の単語間の意味ここで参照カンマ(,を)何https://www.w3.org/TR/turtle/RDFのカメとの表現

@base <http://example.org/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix rel: <http://www.perceive.net/schemas/relationship/> 

<#green-goblin> 
    rel:enemyOf <#spiderman> ; 
    a foaf:Person ; # in the context of the Marvel universe 
    foaf:name "Green Goblin" . 
<#spiderman> 
    rel:enemyOf <#green-goblin> ; 
    a foaf:Person ; 
    foaf:name "Spiderman", "Человек-паук"@ru . 

参照してください?

もうひとつ重要なのは、都市と国で時間をかけてどうすればいいのですか?例:ライプツィヒは1990年までDDRに属していました。現在、ライプツィヒはドイツの都市です。

+1

時間とともに都市と国をどのようにすることができますか?あなたが何をしているか、あなたの「他の質問」があなたのスパイダーマンとグリーンゴブリンの例とどう関係しているかは、あまり明確ではありません。 –

答えて

3

ここでは2つの非常に別々の質問のようです。構文の1つとモデリングの1つ。

構文の問題については、Turtle - Terse RDF Triple Languageを参照することをお勧めします。タートルはトリプルを指定します。トリプルの仕様には3つのエンティティが必要です。 .は、トリプルの終了を指定します。ショートカットとして、;は、現在のサブジェクトが次のトリプル仕様に引き継がれることを意味します。したがって、述語とオブジェクトのみを指定する必要があります。 ,は、件名およびオブジェクトが次のトリプルに繰り越されることを意味します。したがって、

<#spiderman> foaf:name "Spiderman", "Человек-паук"@ru . 

指定2つのトリプル:

<#spiderman> foaf:name "Spiderman" . 
<#spiderman> foaf:name "Человек-паук"@ru . 

一つのモデリング質問、fromDateの性質を持っているようisMemberOfCountryとして、プロパティを指定し、時間の異なるエポックでライプツィヒの異なるnationalizationsを指定しますおよびtoDate。国のメンバーシップの各インスタンスは、移入されます:

@prefix ex: <http://example.org/geoex/> 
ex:Leipzig 
    ex:isMemberOfCountry [ 
     ex:country ex:DDR ; 
     ex:fromDate 1945 ; 
     ex:toDate 1990 ; 
    ] ; 
    ex:isMemberOfCountry [ 
     ex:country ex:Germany ; 
     ex:fromDate 1990 ; 
    ] . 

Bnodesは、名前それがない場合、オブジェクトにBNODEの代わりに使用することを指定し、(問題ではない可能性があり、オブジェクトのデータセット全体で一意の名前を確実に使用されています)。次に、現在の国を照会するために使用します。

SELECT ?country 
WHERE { 
    ex:Leipzig ex:isMemberOfCountry ?member . 
    ?member ex:country ?country . 
    FILTER NOT EXISTS { 
     ?member ex:toDate ?d 
    } 
} 

そして、特定の年の間にメンバーシップを見つけるためには、以下を使用します。1990年まで?dateを結合する二つの結果をもたらすだろうということ

SELECT ?country 
WHERE { 
BIND("1991"^^xsd:integer AS ?date) #placeholder - ?date should be passed into the query 
    ex:Leipzig ex:isMemberOfCountry ?member . 
    ?member ex:country ?country . 
    ?member ex:fromDate ?fdate . 
    OPTIONAL {?member ex:toDate ?td} 
    BIND(IF(bound(?td), ?td, year(now())) AS ?edate) 
    FILTER (?date >= ?fdate && ?date <= ?edate) 
} 

注意しましたこの例のモデルでは日付の代わりに年が使用されていることを前提としています。

+0

これは大いに役立ちます、詳細な情報に感謝します。 isMemberOfCountryやcountryなどのタグや単語は自由に定義されたタグです。論理的に使用すべきか? – Mchoeti

+2

これらの単語は「単語」ではなく、URI-オブジェクトです。上記の接頭辞の定義を仮定すると、ex:isMemberOfCountryはに展開されます。 RDF/Turtleドキュメントのいくつかの調査では、この両方を公開しています。 – scotthenninger

+1

タートルはW3C勧告であることに注意してください:https://www.w3.org/TR/turtle/(あなたのリンクは古いドラフトにあります) – unor