Stream 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#>

我正在使用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" .
}
没有类型信息或任何语言标记

为了使用查询我的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" ) .
}