一個典型的SPARQL查詢指定的圖形可能是這樣的:針對兩個圖表運行sparql查詢?
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c}}
這將告訴我AliceIRI所有的三元組,其中「富」是一個主題。如果我想在兩個不同的圖表看,是我做的一個UNION唯一的選擇:
SELECT ?b ?c WHERE {{ GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c}}
UNION
{ GRAPH <http://BobIRI> {
<http://local.virt/foo> ?b ?c}}}
或者是有一些速記,讓我更方便地寫這篇文章,是這樣的:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> + <http://BobIRI> {
<http://local.virt/foo> ?b ?c}
順便說一句我在Virtuoso 6.01.3127。
更新1
爲了澄清,我真的很想能夠運行:
SELECT ?b ?c WHERE { GRAPH <http://AliceIRI> + <http://BobIRI> {
<http://local.virt/foo> ?b ?c .
<http://local.virt/bar> ?b ?c}}
,並有這場比賽?b
和?c
這樣<http://local.virt/foo> ?b ?c
在<http://AliceIRI>
和<http://local.virt/bar> ?b ?c
是<http://BobIRI>
。僅僅考慮<http://AliceIRI>
(單獨)和<http://BobIRI>
(單獨)中的匹配的聯合將不能實現這一點。
爲了進一步澄清:我已經意識到,如果FOOS都屬於愛麗絲和所有屬於鮑勃吧,然後我可以寫
SELECT ?b ?c WHERE {
GRAPH <http://AliceIRI> {
<http://local.virt/foo> ?b ?c } .
GRAPH <http://BobIRI> {
<http://local.virt/bar> ?b ?c}}
(實際上是我需要什麼我的應用程序) - 但至少對於「學術興趣」來說,是否存在一種語法上好的方式來針對圖的聯合運行查詢(而不是針對多個圖,然後聯合結果)的問題仍然存在。
如果這只是工會橫跨圖的結果,而不是允許從各種圖形繪製三元三重模式,那麼這是一個有點遲鈍的手段。您能否澄清這是否是唯一可用的工具(請參閱上面的更新1)。 – 2013-03-11 19:20:31
@JoeCorneli我已經更新了我的答案,是的,你可以做一個稍微不同的查詢 – RobV 2013-03-11 21:16:37
精彩,謝謝你的增加。 – 2013-03-12 13:52:35