-2

我想使用 SPARQL 选择一个三元组。为此,我正在使用以下查询:

SELECT count (*)
WHERE {?s ?p ?o}
FILTER (?s=http://kjkhlsa.net && ?p=http://lkasdjlkjas.com && ?o=Test)

作为答案,我得到了完全错误的三重:(主题不等于“ http://kjkhlsa.net ”,谓词不等于“ http://lkasdjlkjas.com ”,对象也不等于“测试”。可以有人解释我,我做错了什么:(

edit1:我已将查询放入 php 文件:

    $inst_query = 'SELECT * { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test"}';
    echo $inst_query;

回声的答案是“SELECT * {“Test”}”。然后我用 WHERE 试了一下:

    $inst_query = 'SELECT * WHERE { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test"}';
    echo $inst_query;

这是答案 "SELECT * WHERE { "Test"}" ...所以,我缺少 URI,但这对我来说似乎是 php 问题而不是 sparql 问题。

编辑2:我已将查询放入 SPARQL 查询编辑器,我得到响应“无结果”....但我敢肯定,我有这个三元组。

4

3 回答 3

2

以目前的形式,这个问题不是很清楚(见我上面的评论)。

由于您实际上是在尝试获得与模式匹配的三元组,因此使用图形模式而不是FILTER. 许多 SPARQL 实现首先通过图形模式匹配候选三元组,然后才应用FILTER表达式。本质上,使用?s ?p ?o图形模式,您正在对所有三元组进行线性扫描。

所以,这里有一些应该起作用的东西,使用图形模式而不是 FILTER。

SELECT * { <http://kjkhlsa.net> <http://lkasdjlkjas.com> "Test" }

注意:我没有包括COUNT(*)不是标准的 SPARQL。<>围绕 URI。""围绕字面。

于 2009-06-08T07:48:05.183 回答
0

尝试使用这个:

SELECT count (*) as ?count
WHERE {
    ?s ?p ?o
FILTER (?s=<http://kjkhlsa.net> && ?p=<http://lkasdjlkjas.com> && ?o=Test)
}
于 2014-03-28T11:04:26.820 回答
0

以下查询使用 count 函数计算返回给 ?s 变量的不同 URI 的数量。

 SELECT ?s (COUNT (DISTINCT ?s) as ?count)
    WHERE {?s ?p ?o}
    FILTER (?o="Test")
于 2017-01-03T16:52:08.053 回答