我是sparql领域的初学者。我已经写了这个查询:为什么下面的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
我运行它对guttenberg项目的数据。数据的形式为:
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
所以没有笛卡尔产品 like for SQL。
这是Virtuoso或功能中的错误吗?
请注意,片段?ID1 ?p ?autor1.
中的?p
存在,因为数据中没有“作者实名”属性。加滕伯格只给出了这样的字符串:http://www.w3.org/1999/02/22-rdf-syntax-ns#_1
1-ST作者,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
,并没有其他的三部曲(标题,作者1作者2)为“神秘”一书。
问题复制在http://answers.semanticweb.com/questions/26498/why-sparql- does-not-give-cartesian-product –