0

我正在研究非时间 SPARQL 查询,我对 RDF 三元组的概念有点困惑。

比如说,我想找到所有取消工作然后选择完成他们取消的相同工作的员工。那么如何存储他们取消工作的日期和他们选择做同样工作的日期呢?

下面的工作吗?

SELECT ?emp
    WHERE
    {
      ?emp :cancelledJob ?job
      ?emp :dateCancelled ?date1 
      ?emp :selectedJob ?job 
      ?emp :dateSelectedJob ?date2 
      FILTER(?date1 < ?date2) 
    }
4

1 回答 1

2

如果?date1?date2的值与标准中定义的<相当,或者您使用的特定实现扩展了<运算符来处理它们,则您的查询将起作用。SPARQL 的运算符映射在标准17.3 Operator Mapping中给出。标准规定的数据类型及其映射是:

numeric         op:numeric-less-than(A, B)
simple literal  op:numeric-equal(fn:compare(A, B), -1)
xsd:string      op:numeric-equal(fn:compare(STR(A), STR(B)), -1)
xsd:boolean     op:boolean-less-than(A, B)
xsd:dateTime    op:dateTime-less-than(A, B)

因此,如果您的日期是这些类型中的任何一种,那么您的查询将起作用。一些实现也可能处理其他类型。

于 2017-03-31T12:58:56.710 回答