我在两个不同的引擎中尝试了一个SPARQL查询:
虽然查询是相同的,但这两个工具返回的结果是不同的。
我尝试了如下所示的DESCRIBE查询:
DESCRIBE ?x
WHERE { ?x :someproperty "somevalue"}参与者的结果给出了以?x为主语/对象的元组,而来自耶拿的元组仅以?x为主语。
我的问题是:
DESCRIBE像在抗议者中一样工作,我应该在耶拿做什么?发布于 2014-01-22 03:14:42
要回答第一个问题,是的,SPARQL语法是统一的,因为您在这两个工具中都使用了相同的查询。然而,我认为您实际上要问的是,这两种工具的结果是否不同?即SPARQL的语义是否是一致的?
在DESCRIBE的情况下,是的,SPARQL规范显式地允许结果不同,也就是说,SPARQL的语义不一致,但这只是在DESCRIBE的情况下。
参见SPARQL规范的第16.4节(内容丰富),该规范声明如下:
查询模式用于创建结果集。
DESCRIBE表单接受解决方案中标识的每个资源以及任何由IRI直接命名的资源,并通过获取一个可以来自任何可用信息(包括目标RDF数据集)的“描述”来组装一个RDF图。描述由查询服务确定。
其中的重要部分是最后几个句子,这些句子说描述是由查询服务决定的。这意味着,抗议者和耶拿的答案都是正确的,因为他们可以选择如何形成描述。
更改耶拿描述处理
要回答问题的第二部分,您可以通过实现自定义的DESCRIBE和相关的DescribeHandlerFactory来改变Jena处理DescribeHandlerFactory查询的方式。然后,您需要按以下方式注册工厂:
DescribeHandlerRegistry.get().set(new YourDescribeHandlerFactory());https://stackoverflow.com/questions/21273303
复制相似问题