3

MyExperiment というサービスの SparQL エンドポイントを使い始めたところです。私はセマンティック Web にまったく慣れていません。

サービス エンドポイントの URL は次のとおりです: http://rdf.myexperiment.org/sparql

基本的に、基本的なクエリの実行方法を理解しました。以下のクエリでワークフローの例としていくつかのオブジェクトをリストするように:

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

2 に答える 2

4

SparqlクエリのWHERE句は、変数または空白ノードを介して接続された1つまたは複数のトリプレットで構成されるグラフパターンです(値が使用されていない/重要でない場合)。このグラフは、使用された変数をバインドして結果セットを返すことを試みて、トリプルストアに対してチェックされます。

WHERE-clauseは、特定のインスタンスが結果セットに表示されるために満たす必要のあるトリプレットsubject-predicate-objectステートメントのセットと考えてください。

あなたの最初の質問について。これは、グラフでパスを見つけるタスクです。両方の概念が単一または関連する(たとえば参照される)整形式オントロジーに属する場合、次のようなクエリを試してみることでいくつかのヒントを与えることができます(提供された例をベースとして):

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

その中で、ワークフローの概念で利用可能なすべての個別の述語(プロパティとして扱われる場合があります)とその範囲をリストするように求めます。Rangeは、プロパティ値のタイプを定義します(OWL仕様を参照)。範囲を必要なタイプと比較することにより、2つの概念を相互に関連付けるプロパティを見つけることができます。ただし、この公理は常に定義されているわけではありませんが、定義されている場合は、最も単純なケースで、ある概念に別の概念に関連するプロパティがあるかどうかを確認するために使用できます。また、プロパティパスは、任意の長さのパスを追跡するために使用できますが、これはまだ進行中であり、すべてのrdfストレージでサポートされているわけではありません(リンクを参照)。

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

2番目の質問について。WHERE句でいくつかのトリプレットパターンを使用するだけです。次の例を検討してください。

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

プロパティhasNameを持つコンセプトBookを含むライブラリオントロジーに基づく架空のグラフを求めています。hasAuthorの範囲は、作成者の概念のインスタンスです。また、著者の概念には、小説家の名前を示すプロパティhasNameがあります。このようなクエリは、作家の名前を持つすべての本のリストを返します。これがあなたのケースに例を適用するのに役立つことを願っています。

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

于 2012-04-16T18:38:27.447 に答える
1

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

SELECT ?domain ?property ?range
WHERE{  
       ?property rdf:type owl:ObjectProperty .
       ?property rdfs:range ?range .
       ?property rdfs:domain ?domain
     }
于 2016-01-27T11:57:13.173 に答える