2016-09-27 8 views
1

私は、user、url、time、およびipという値を持つ単純なRDFデータセットを持っています。特定のプロパティを持つすべてのデータを取得するSPARQL

SELECT DISTINCT * WHERE { ?s ?p ?o } 

しかし、すべてのデータを特定のユーザーでリストする必要があります。クエリのデータが上記のクエリのデータと同じ形式であるが、必要でない場合は非常に感謝します。
私はこれまで、このといくつかの変更をしようとしたが、それがどれも動いていないようにみえ:

SELECT DISTINCT * WHERE { ?s ?p ?o. ?u foaf:user username. } 

私はイエナとSPARQLで動作するように始めていますし、任意のヘルプははるかに高く評価されます。前もって感謝します。

編集:@AKSW foaf:userfoafは私が定義した接頭辞です。私はクエリの作業に苦労し、私が何をしているのか分かりませんでした。これは私がまだきれいにしていなかったものです。
あなたが提案したクエリSELECT DISTINCT * WHERE {?u foaf:name USER_NAME_LITERAL . ?u ?p ?o . }を使用してしまったので、ありがとうございます。あなたが回答として投稿した場合は、それを受け入れたものとしてマークします。あなたのデータセットを想定し

+1

RDF内のリソースはURIによって識別されるため、ユーザーも同様です。 'DISTINCT * WHERE {?p?}'を選択してください。 – AKSW

+1

SPARQLクエリは、トリプルパターンが接続され、一般的にグラフを作成するように変数名を再利用します。 2番目のクエリは2つの接続されていないトリプルパターンから成ります。 – AKSW

+1

'foaf:user'は何をすべきか分かりませんが、FOAFではそのようなプロパティはありません。 'foaf:name'は一般的なプロパティです:http://xmlns.com/foaf/spec/ – AKSW

答えて

1

はフィールド:user:url:time:ipを持つクラス:Recordのレコードで構成されています

SELECT * { ?r ?p  ?o; 
       a  :Record; 
       :user ?u. 
      ?u :name "your user name". 
      } 

あるいは、ユーザーのURIがあることを知っていると仮定:user123:

SELECT * { ?r ?p  ?o; 
       a  :Record; 
       :user :user123. 
      } 

注:これはAKSWのコメントの要約です。 foaf:の代わりにデフォルトプレフィックス:を使用します。これは、すでに存在するfoafの「友人の友人」の語彙の一部であると仮定して他の人につながる可能性があります。この場合、WHEREキーワードは常に省略することができ、同じトリプルが複数のグラフに含まれているなどの特殊な状況を避けて、DISTINCTキーワードは不要です。

+0

あなたの答えをありがとう、それはいくつかのより多くの洞察を私に提供したので、非常に有用だった。私の例の中の 'foaf'のことは、SPARQLについて学び始めたばかりのことです。現在のバージョンでは修正されています。私がAKSWソリューションを使用していたとき、私は彼が答えとして自分のコメントを投稿することを決めるのを待っていますが、もし私が持っていた問題が既に解決されていたとしても、あなたよりももう一度。 – lsrom

関連する問題