1

私は sparql 分野の初心者です。私はこのクエリを書きました:

prefix pp: <http://purl.org/dc/elements/1.1/>
select ?title,?autor1, ?autor2
from <http://gutenberg.lib>
where {
      ?s pp:title ?title.
      ?s pp:creator ?ID1.
      ?ID1 ?p ?autor1.
      optional{ ?s pp:creator ?ID2.
                ?ID2 ?p ?autor2.
              }
} order by ?s

グッテンベルグ プロジェクトのデータに対して実行します。データの形式は次のとおりです。

 S1 pp:title "TITLE11"
 S1 pp:creator "CREATOR11"
 S1 pp:creator "CREATOR12"
 S2 pp:title "TITLE21"
 S2 pp:creator "CREATOR21"
 S2 pp:creator "CREATOR22"
 S2 pp:creator "CREATOR23"

私はそのようなものを得ると期待しています:

 TITLE11, CREATOR11, CREATOR11
 TITLE11, CREATOR11, CREATOR12
 TITLE11, CREATOR12, CREATOR11
 TITLE11, CREATOR12, CREATOR12

しかし、私はそのようなものを得ました:

 TITLE11, CREATOR11, CREATOR11
 TITLE11, CREATOR12, CREATOR12

したがって、SQL のようなデカルト積はありません。

それは Virtuoso のバグですか、それとも機能ですか?

データ内に「著者の実名」プロパティがないため?p、フラグメントにあることに注意してください。?ID1 ?p ?autor1.グッテンベルクはそのような文字列のみを与えます:第http://www.w3.org/1999/02/22-rdf-syntax-ns#_1一著者、http://www.w3.org/1999/02/22-rdf-syntax-ns#_2第二著者など.


たとえば(実際のデータを使用)、次のようになります。

The Mystery     http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag  http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag

The Mystery     White, Stewart Edward, 1873-1946    White, Stewart Edward, 1873-1946

The Mystery     Adams, Samuel Hopkins, 1871-1958    Adams, Samuel Hopkins, 1871-1958

"The Mystery" book には他のトリプル ( title, author1 author2 ) はありません。

4

1 に答える 1