私は 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 ) はありません。