1

私はいくつかの検索を行っており、SPARQL についてさらに学習していますが、SQL のように簡単ではありません。クエリが重複する理由とその修正方法を知りたいだけです。これは私の SPARQL クエリです。

PREFIX OQ:<http://www.owl-ontologies.com/Ontology1364995044.owl#>

SELECT ?x ?ys ?z ?Souhaite
WHERE {
  ?y OQ:hasnameactivite ?x.
  ?y OQ:AttenduActivite ?Souhaite.
  ?y OQ:SavoirDeActivite ?z.
  ?y OQ:hasnamephase ?ys.
  ?y OQ:Activitepour ?v.
  ?ro OQ:hasnamerole ?nr.
  ?y OQ:avoirrole ?ro.
  FILTER regex (?nr ,"Concepteur").
  FILTER regex (?v,"Voiture").
}

これにより、次の結果が得られます。

ここに画像の説明を入力

期待される結果は次のとおりです。

ここに画像の説明を入力

4

1 に答える 1

5

あなたの質問を最初に読んだときSELECTに、クエリを変更してSELECT DISTINCTDISTINCT修飾子を使用して)重複した結果を削除できると答えようとしていました。ただし、結果セットを見ると、実際には重複した回答はありません。各行は一意に見えます。?xsとの値は?ysたまたま同じですが、 と の組み合わせによって?z?Souhaiteが異なります。結果は本質的に製品{ xs1 } × { ys1 } × { z1, z2, z3 } × { S1, S2, S3 }であり、重複は含まれていません。

クエリと表示されている結果をもう少し詳しく調べたところ、いくつかの不一致があります。たとえば、結果には名前付きの変数?xsがありますが、クエリではそのような変数は使用されません。私はそれ?xが想定されていると仮定します?xs。また、変数名?xs?ys?z、および?Souhaiteはあまり説明的ではありません。これらが結果にどのような役割を果たしているのかわからない場合、これらについて話すのは難しい.

あなたが期待している結果については、?xs実際?ysには各行にバインドする必要があります。たとえば、目的の結果の 2 行目には と がありますが、?zとはありませんが、対応すると?Souhaiteがなければおそらく意味がありません。正しいですか? そのため、2 番目と 3 番目の行でこれらの列が空白になっているという問題に対処しようとはしません。空白にしないでください。?xs?ys?xs?ys

期待される結果では、 や などの多くの組み合わせを含む行が削除されてい?z/?Souhaiteます。これらはデータに含まれているため、結果に表示されます。これらが存在しないようにデータをクリーンアップするための支援が必要な場合は、データを確認し、そのデータがどこから来たのかを知る必要があります。"Besoins …" "Schemas …""Volume …" "Fourchette …"

于 2013-05-25T15:29:37.957 に答える