为什么我必须在SPARQL查询中过滤图形URI?

时间:2015-05-05 12:28:34

标签: syntax rdf sparql virtuoso triplestore

要从我的triplestore(OpenLink Virtuoso v6.1)中的命名图中获取所有三元组,我编写了SPARQL查询:

SELECT ?s ?p ?o
WHERE {
    GRAPH eg:myGraph {
        ?s ?p ?o.
    }
}

但似乎我无法在GRAPH声明中定义图形URI;查询不返回任何三元组。

如果我使用中间变量?g而不是我的图表的URI,则请求有效:

SELECT ?s ?p ?o
WHERE {
    FILTER(?g = eg:myGraph).
    GRAPH ?g {
        ?s ?p ?o.
    }
}

我没有看到两个查询之间的区别。

我的第一个语法是错误的查询吗?这是Virtuoso的精妙之处吗?

1 个答案:

答案 0 :(得分:0)

你可以尝试运行

SELECT ?s ?p ?o
FROM NAMED eg:myGraph
WHERE {
    GRAPH eg:myGraph {
        ?s ?p ?o.
    }
}

SELECT ?s ?p ?o
FROM eg:myGraph
WHERE {
        ?s ?p ?o.
    }