【问题标题】:Virtuoso SPARQL Bug with BINDVirtuoso SPARQL Bug 与 BIND
【发布时间】:2019-10-31 13:19:36
【问题描述】:

我想我在 Virtuoso 中发现了 SPARQL 的 BIND 函数的错误。我在http://dbpedia.org/snorql/ 运行这个

考虑以下代码:

SELECT DISTINCT ?label ?companyShort
WHERE{
        ?org rdf:type dbo:Company ;
            rdfs:label ?label .        
        #BIND (UCASE(SUBSTR(?label,1,3)) as ?companyShort)
        filter langMatches( lang(?label), "EN" )
        filter(?label="About.com"@en)
}

这符合预期。现在删除BIND 上的评论,poof 结果消失了。如果我将一些字符串操作绑定到另一个变量,为什么结果会消失?

【问题讨论】:

  • 您的报告不是关于 SPARQL,而是关于 Virtuoso,DBpedia 背后的 SPARQL 处理器。这需要进一步分析。我鼓励您提出issue to the Virtuoso project on GitHub。 (请注意,您的第一个 FILTER 是多余的,因为您的第二个 FILTER 包含 @en langtag。)

标签: sparql rdf dbpedia virtuoso


【解决方案1】:

其他人可能会提供此行为的原因,但您可以通过将标签过滤器更改为 str(?label)="About.com" 来修复它,因此查询如下所示:

SELECT DISTINCT ?label ?companyShort
WHERE{
        ?org rdf:type dbo:Company ;
            rdfs:label ?label .        
        BIND (UCASE(SUBSTR(?label,1,3)) as ?companyShort)
        filter langMatches( lang(?label), "EN" )
        filter(str(?label)="About.com")
}

【讨论】:

  • 有趣的是,它实际上看起来像是 Virtuoso 中的一个错误。刚刚在 GraphDB 上进行了测试,原始查询在那里没有任何问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多