2016-04-19 4 views
1

私は現在、センサーデータを扱うプロジェクトのためのオントロジを作成しています。 PythonでRDFLibを使ってRDFグラフを作成しました。そして、Jena TDBデータベースを使ってグラフを保存しました。今私はSPARQLを使用してデータベースを照会したいが、正直なところどこから始めるべきか分からない。例えばSPARQLでプレフィックス名を使ってRDFグラフをクエリ

私はすでに知って語彙を使用してメートルならば、私は単純に、このようなクエリの何かを実行することになると私は私が必要なものを取得しますフレンド(FOAF)の友達に言うことができます:

SELECT ?name 
WHERE { 
    ?person foaf:name ?name . 
} 

しかし、以来、私は私の目的は、このクエリを実行し、すべてのデータが関係し得ることです異なるオントロジーを使用して(センサオントロジーを)私のRDFを作成しています:

devは、デバイス名です
SELECT * {?dev ?lon ?lat} 

lonが経度でありますデバイスが配置されていて、latが緯度です。これらのデータはすべてグラフ内で提供されますが、まだクエリされるようには定義されていません。要約する

が可能RDFLibにラベルを割り当てることができます(... DEV、デバイス)、私はクラスのための接頭辞付きの名前を把握しようとしているというように、例えばクラスのデバイスは、で表すことができます解決策または質問をするための語彙を開発する必要がありますか?

+2

一般に、照会しているデータセットを理解する必要があります。これはオントロジーに準拠しており、単にそのオントロジーの述語とクラスをクエリに使用します。たとえば、URI http:// something.org/sensor/hasLightnessValueで明度値を取得する述語があるとすると、あなたのデバイスの明度値はhttp://何かを得ることができます。 ?value'という接頭辞は、人間にとってクエリをより読みやすくするためのものです。 –

+1

実際にオントロジーについて調べてデータセットを理解するために何かを知る必要はありません。 'LIMIT'を使って'?s?p?o'クエリを実行すると、どのデータが存在するかを見つけ出し、プロパティやクラスなどがどのように定義されて使用されているかを見つけるために、SPARQLを使用します。 – scotthenninger

答えて

1

RDFトリプルは、サブジェクト、オブジェクト、述語構造を持つデータを表すように設計されています。

<http://example.org/FalaG> foaf:name "FalaG"^^xsd:string 

... foaf:name<http://xmlns.com/foaf/0.1/name>に展開プレフィックスのQNameです:たとえば、次はトリプルRDFです。

SPARQLは基本的に上記のトリプルと同じです(これはタートルテキストシリアライゼーションです)。ただし、プレフィックスの付いた変数は?です。 SPARQLはデータ内の一致を見つけ、各一致の変数をバインドします。

変数の名前には、変数名以外の固有の意味はありません。私は意図的に変数名には固有の意味がないことを概説することはナンセンス変数名に置かれている

SELECT ?p 
WHERE { 
    ?p foaf:name ?o 
} 

注:だから次は一致し、とりわけ、上記のトリプルを見つけるだろう。

URIを検索するために、SPARQLを使用してリポジトリ内のどの値が検出されたかを検出できます。前のクエリの構築、あなたは、他の情報は、以下でFalaGのリポジトリにあるものを見つけることができます。

SELECT ?person ?p ?o 
WHERE { 
    ?person foaf:name "FalaG"^^xsd:string . 
    ?person ?p ?o 
} 

他のプロパティのURIを検出するには、など、次を使用します。

SELECT ?s ?p ?o 
WHERE { 
    ?s ?p ?o 
} LIMIT 

3つの変数を持つトリプルパターンがすべて個のトリプルを要求しているため、サーバがタイムアウトまたはクラッシュする可能性があるため、LIMITが重要です。しかし、限界を設定することによって、データがどのようにモデル化されているかを知ることができ、?s、 '?and?o`などの値を置き換えて、データの特定の部分を詳細に調べることができます。

また、RDFとSPARQLの詳細については、多くの情報源があります。

+0

あなたの答えをありがとう – raeX

関連する問題