我正在使用 C-SPARQL,我想查询从流中接收到的三元组。但是,在使用要匹配精确字符串文字的查询时,我遇到了一个问题。我通常会通过查询得到结果(数据来自字符串),但是当我为文字的字符串值添加完全匹配时,我总是没有得到任何结果。好像没有找到匹配项。但是,如果我查看从我的流中收到的所有三元组,就会有与我的字符串文字匹配的条目。
这是我的查询示例:
REGISTER QUERY LogStream AS
PREFIX person: <http://vocab/Person#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?s
FROM STREAM <ws://localhost:8124/tw/stream> [RANGE 5s STEP 1s]
WHERE {
?s person:name "Huber" .
}
我还尝试使用以下两个示例的过滤器和正则表达式:
REGISTER QUERY LogStream AS
PREFIX person: <http://vocab/Person#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?s ?o
FROM STREAM <ws://localhost:8124/tw/stream> [RANGE 5s STEP 1s]
WHERE {
?s person:name ?o FILTER ( ?o = "Huber" ) .
}
REGISTER QUERY LogStream AS
PREFIX person: <http://vocab/Person#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?s ?o
FROM STREAM <ws://localhost:8124/tw/stream> [RANGE 5s STEP 1s]
WHERE {
?s person:name ?o FILTER (regex(?o, '^Huber$')) .
}
没有一个查询给我任何结果,就好像没有匹配一样。
如果我只是执行以下查询,我会得到很多 name = Huber 的结果:
REGISTER QUERY LogStream AS
PREFIX person: <http://vocab/Person#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?s ?o
FROM STREAM <ws://localhost:8124/tw/stream> [RANGE 5s STEP 1s]
WHERE {
?s person:name ?o .
}
我不确定 C-SPARQL 是否支持 SPARQL 的所有功能。我在另一篇文章中读到,C-SPARQL 不支持 round()。由于精确字符串的匹配是一项基本功能,至少在我看来,我不确定我是否会做错什么,或者我是否错过了一些细节。我尝试了 SPARQL 中的查询,查询三元存储,并且所有查询都可以正常工作。
所以,我有点困惑为什么字符串匹配在 C-SPARQL 中不起作用。有没有人有一些提示或建议?
编辑(有关我的数据外观的更多信息):
我尝试使用 C-SPARQL 查询的数据是来自 Web 流的 JSON-LD 条目。流是通过Triplewave创建和发布的。
下面是一个 JSON-LD 的小例子:
[
{
"@id": "http://Stream/d7e4e816-0931-42ce-a21a-cbfaa552855d",
"http://www.w3.org/ns/prov#generatedAtTime": [
{
"@value": "2018-11-14T07:08:45.182Z"
}
],
"@graph": [
{
"@id": "http://schema.org/Person#1234",
"http://schema.org/name": [
{
"@value": "Huber"
}
]
},
{
"@id": "http://schema.org/Job#1234",
"http://schema.org/title"": [
{
"@value": "Professor"
}
]
}
]
}
]
没有类型信息或任何语言标签。
为了使用C-SPARQL查询我的 web 流,我实现了一个 RdfStream,它通过 websocket 接收 JSON-LD 数据,并在我的图中创建了所有条目的 RdfQuadruple 并将其放入 RdfStream。
RdfQuadruple 的一个例子是:
http://schema.org/Person#1234 http://schema.org/name Huber .