2012-04-16 6 views
2

MyExperimentというサービスのSparQLエンドポイントの作業を開始しました。 と私はセマンティックウェブの全く新しいです。 http://rdf.myexperiment.org/sparqlSparQLのrdfで関係を見つける

は基本的に私は、基本的なクエリを実行する方法を考え出した:

サービスエンドポイントのURLはこれです。以下のクエリでワークフローなどのオブジェクトを一覧表示することもできます。

BASE <http://www.myexperiment.org/> 
PREFIX myexp: <http://www.myexperiment.org/> 
PREFIX mecontrib: <http://rdf.myexperiment.org/ontologies/contributions/> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
SELECT ?workflow WHERE { ?workflow rdf:type mecontrib:Workflow} 

私には2つの質問があります。

  1. RDFのさまざまな概念間の関係を見つける必要があります。私は、RDFに「ワークフロー」という概念があり、別のRDFに「ユーザー」という概念があることを知っていますが、どうすればこれらの2つの関係を見つけることができますか?

  2. 2つ以上の概念を組み合わせるためのクエリを作成するにはどうすればよいですか。私が作成したユーザー名を持つワークフローのリストを表示したい、またはユーザーが作成したワークフローを探したいのですか?

答えて

4

SPARQLクエリのWHERE句は、(値/使用しない重要でない場合)、変数またはブランクノードを介して接続された1つのまたはいくつかのトリプレットからなるグラフパターンです。このグラフは、使用された変数をバインドして結果セットを返そうとするトリプレットストアに対してチェックされます。

WHERE句は、特定のインスタンスが結果セットに現れるようにするために必要な3つ組のサブジェクト - 述語 - オブジェクト文の集合であると考えてください。

あなたの1番目の質問について。これは、グラフ内のパスを見つける作業です。両方の概念は、単一のまたは関連に属している(例えば呼ぶ)整形オントロジー場合は、いくつかのヒントは、このようなクエリで遊んで与えることができる(ベースとしてご提供された例を取る):それは

SELECT DISTINCT ?prop, ?range WHERE { ?workflow a mecontrib:Workflow . 
             ?workflow ?prop ?value . 
             ?prop rdfs:range ?range } 

たちその範囲でワークフローのコンセプトの利用可能なすべての明確な述語(プロパティとして扱うことができる)を一覧表示するよう依頼する。範囲はプロパティ値のタイプを定義します(OWL specを参照)。範囲を必要なタイプと比較することによって、2つの概念を互いに関連付ける特性を見つけることができる。しかし、この公理は必ずしも定義されているわけではありませんが、それが最も単純な場合には、ある概念に別の概念を関連付ける性質があるかどうかを確認するために使用できます。 また、property pathesは任意の長さのパッシブを追跡するために使用できますが、これはまだ進行中であり、すべてのRDFストレージでサポートされていない可能性があります(link参照)。

したがって、最も簡単な方法は、一般的な解決策を見つけるのではなく、特定のケースの回答を見つけるために取り組んでいるオントロジーを分析するようです。

2番目の質問について。 WHERE句では、いくつかのトリプレットパターンを使用するだけです。私たちは、プロパティhasNameとコンセプトブックが含まれて図書館オントロジーに基づいた架空のグラフを求めている

SELECT ?book, ?authorName FROM <http://myrdfgraph> 
WHERE { ?book a Book . 
     ?book hasAuthor ?author 
     ?author hasName ?authorName } 

次の例を考えてみましょう。 hasAuthorの範囲はAuthor概念のインスタンスです。著者の概念には、小説家の名前を表すプロパティhasNameがあります。このようなクエリは、ライターの名前を持つすべての書籍のリストを返します。これがあなたの事例での例を適用するのに役立つことを願っています。

また、SPARQL specsから学ぶことを検討してください。

1

RDFグラフにすべての関係を得るためにSPARQLクエリは次のとおりです。

SELECT ?domain ?property ?range 
WHERE{ 
     ?property rdf:type owl:ObjectProperty . 
     ?property rdfs:range ?range . 
     ?property rdfs:domain ?domain 
    } 
関連する問題