Sparql 按数据类型筛选

Sparql 按数据类型筛选,sparql,dbpedia,virtuoso,Sparql,Dbpedia,Virtuoso,我试图在DBpedia中按数据类型进行筛选。例如: SELECT * WHERE {?s ?p ?o . FILTER ( datatype(?o) = xsd:integer) } LIMIT 10 但是我没有得到任何结果,当然还有整数值。我使用Virtuoso从其他端点获得相同的结果,但我确实从其他端点获得结果。有什么问题吗?如果Virtuoso没有正确地实现这个SPARQL函数,那么使用什么来代替呢?这是一个昂贵的查询,因为它必须遍历所有的三元组(?s?p?o.)。查

我试图在DBpedia中按数据类型进行筛选。例如:

SELECT *
WHERE {?s ?p ?o .
    FILTER ( datatype(?o) = xsd:integer) 
    } 
LIMIT 10

但是我没有得到任何结果,当然还有整数值。我使用Virtuoso从其他端点获得相同的结果,但我确实从其他端点获得结果。有什么问题吗?如果Virtuoso没有正确地实现这个SPARQL函数,那么使用什么来代替呢?

这是一个昂贵的查询,因为它必须遍历所有的三元组(
?s?p?o.
)。查询的执行时间超过了为位于的DBpedia SPARQL端点提供服务的实例配置的最长时间

如果不使用
timeout
参数,则会出现超时错误(
Virtuoso S1T00错误SR171:事务超时
)。当您对DBpedia端点使用
timeout
(默认设置为
30000
)时,您将得到不完整的结果,其中将包含如下HTTP头:

X-SQL-State: S1TAT
X-SQL-Message: RC...: Returning incomplete results, query interrupted by result timeout.  Activity:  1.389M rnd  5.146M seq      0 same seg   55.39K same pg    195 same par      0 disk      0 spec disk      0B /      0 me
因此,空结果可能是不完整的,它不需要指示DBpedia中没有
xsd:integer
文本。可以找到有关《大师》部分结果的相关讨论

作为查询的解决方案,您可以从加载DBpedia并在本地对其进行分析


作为旁注,您的查询在语法上是无效的,因为它缺少
xsd
前缀的名称空间。您可以通过检查SPARQL查询的语法。您可以使用找到常用前缀的名称空间。提供DBpedia SPARQL端点的Virtuoso忽略了
xsd
前缀缺少的名称空间,但是为了更好的互操作性,坚持使用语法有效的SPARQL查询是一个很好的做法。

这是一个昂贵的查询,因为它必须遍历所有三元组(
?s?p?o.
)。查询的执行时间超过了为位于的DBpedia SPARQL端点提供服务的实例配置的最长时间

如果不使用
timeout
参数,则会出现超时错误(
Virtuoso S1T00错误SR171:事务超时
)。当您对DBpedia端点使用
timeout
(默认设置为
30000
)时,您将得到不完整的结果,其中将包含如下HTTP头:

X-SQL-State: S1TAT
X-SQL-Message: RC...: Returning incomplete results, query interrupted by result timeout.  Activity:  1.389M rnd  5.146M seq      0 same seg   55.39K same pg    195 same par      0 disk      0 spec disk      0B /      0 me
因此,空结果可能是不完整的,它不需要指示DBpedia中没有
xsd:integer
文本。可以找到有关《大师》部分结果的相关讨论

作为查询的解决方案,您可以从加载DBpedia并在本地对其进行分析


作为旁注,您的查询在语法上是无效的,因为它缺少
xsd
前缀的名称空间。您可以通过检查SPARQL查询的语法。您可以使用找到常用前缀的名称空间。提供DBpedia SPARQL端点的Virtuoso忽略了
xsd
前缀缺少的名称空间,但是为了更好的互操作性,坚持使用语法有效的SPARQL查询是一个很好的做法。

这似乎不太可能是您实际想要的查询,我想您可能正在处理一个,解决这些问题可能不会让你更接近最终的成功。通常最好是提供一个关于你真正在做什么的想法,这样建议就更相关了。是的,这不是我真正的问题。对于我的实际问题,我想用DBpedia给出一个类似的例子,因为我的端点不是公共的。当我这么做的时候,我发现了这个问题,我觉得这个问题很严重,我很想找到解决办法。(我的实际问题是,
过滤器(?year>…)
当我绑定(year(?x)as?year)其中?x是xsd:dateTime时,会出现错误,但我将单独询问。)这似乎不太可能是您实际想要的查询,我认为您可能正在进行一个解决方案,它可能不会让您离最终成功更近。通常最好是提供一个关于你真正在做什么的想法,这样建议就更相关了。是的,这不是我真正的问题。对于我的实际问题,我想用DBpedia给出一个类似的例子,因为我的端点不是公共的。当我这么做的时候,我发现了这个问题,我觉得这个问题很严重,我很想找到解决办法。(我的实际问题是,
FILTER(?.year>…)
当我绑定(year(?.x)as?year)其中?x是xsd:dateTime时,给出了错误,但我将单独询问。)我已经在使用和不使用
xsd
前缀的情况下对它进行了测试,到目前为止,在所有Virtuoso端点上,只要我使用声明的前缀(例如dbpedia)结果没有差异。正如@jindrichm详细讨论的那样,这似乎不是问题,@IvoVelitchkov也证实了这一点:主要问题在于部分结果,而不是缺少前缀。感谢您在中提到默认名称空间声明。我没有意识到这个特性。我已经测试过它是否有
xsd
前缀,到目前为止,在所有Virtuoso端点上,只要我使用声明的前缀(例如dbpedia),结果就没有差异。正如@jindrichm详细讨论的,这似乎不是问题,正如@IvoVelitchkov所证实的:主要问题在于部分结果,而不是缺少前缀。感谢您在中提到默认名称空间声明。我不知道这个功能。