Stream C-SPARQL查询-匹配精确字符串文字
我正在使用C-SPARQL,我想查询从流接收的三元组。但是,在使用要匹配精确字符串文字的查询时遇到了一个问题。我通常通过查询得到一个结果(数据来自字符串),但是当我为一个文本添加一个字符串值的精确匹配项时,我总是得不到任何结果。好像没有找到匹配项。然而,如果我查看从我的流接收到的所有三元组,就会发现有一些条目与我的字符串文本相匹配 以下是我的查询示例:Stream C-SPARQL查询-匹配精确字符串文字,stream,sparql,rdf,semantic-web,triples,Stream,Sparql,Rdf,Semantic Web,Triples,我正在使用C-SPARQL,我想查询从流接收的三元组。但是,在使用要匹配精确字符串文字的查询时遇到了一个问题。我通常通过查询得到一个结果(数据来自字符串),但是当我为一个文本添加一个字符串值的精确匹配项时,我总是得不到任何结果。好像没有找到匹配项。然而,如果我查看从我的流接收到的所有三元组,就会发现有一些条目与我的字符串文本相匹配 以下是我的查询示例: REGISTER QUERY LogStream AS PREFIX person: <http://vocab/Person#>
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" .
}
没有类型信息或任何语言标记
为了使用查询我的web流,我实现了一个RdfStream,该RdfStream通过websocket接收JSON-LD数据,并创建了我的图中所有条目的RDFQuadRule,并将其放入RdfStream中
RdfQuadruple的一个示例如下:
http://schema.org/Person#1234 http://schema.org/name Huber .
STR(value)
函数解决了我的问题。
我必须事先将值转换为字符串
因此,以下查询有效:
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 ( str(?o) = "Huber" ) .
}
将查询日志流注册为
前缀person:
前缀xsd:
选择?s?o
来自流[范围5s步骤1s]
何处{
人员:姓名?o过滤器(str(?o)=“Huber”)。
}
谢谢您的建议。您确定这些文字不是
rdf:langString
s,例如Huber@de“
?您是否尝试了过滤器(str(?o)=“Huber”)
?或者只是使用了一个可能的语言标记,即?s person:name“Huber”@en
?我不知道你的数据怎么了?这些对象是不是xsd:string
s(然后它应该是一个bug)?或者它们是带有语言标记的字符串(比如Huber
@en)?或者可能是URI(比如
)@斯坦尼斯拉夫克拉林:好问题。这就是为什么我还建议了两个选项,即FILTER(str(?o)=“Huber”)
和的person:name“Huber”@en
,因为我不知道数据,我在“编辑”之后的第一篇文章中添加了一些关于by data的进一步解释。我希望这能澄清你的问题。
[
{
"@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"
}
]
}
]
}
]
http://schema.org/Person#1234 http://schema.org/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 ( str(?o) = "Huber" ) .
}