如何使用SPARQL中的Month()函数来提取rdf4j中日期的月份? [英] How to use the MONTH() function from SPARQL to extract the month of a date in rdf4j?

查看:0
本文介绍了如何使用SPARQL中的Month()函数来提取rdf4j中日期的月份?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何使用rd4j从Java中的SPARQL复制以下筛选器?

FILTER(?endDate > NOW() && ?startDate < NOW() && MONTH(?endDate) = MONTH(NOW()))

我有如下MONTH()NOW()的初始化表达式,以及一个图形模式pattern,但不知道如何使用它们从变量?endDateNOW()函数中提取月份

    Expression<?> nowFunc = Expressions.function(SparqlFunction.NOW );
    Expression<?> month = Expressions.function(SparqlFunction.MONTH);
    
    Expression<?> endDateGreaterThan = Expressions.gt(endDate, nowFunc);
    Expression<?> startDateLessThan = Expressions.lt(startDate, nowFunc);

到目前为止,我的查询如下所示,但我不知道如何将筛选器的最后部分(*)实现到查询中。

SelectQuery query = Queries.SELECT().prefix(ex).select(letter).where(pattern.filter(Expressions.
and(endDateGreaterThan, startDateLessThan, ****)

推荐答案

它与您设置其他表达式的方式没有什么不同。您需要两个值表达式之间的等于比较运算(让我们称它们为leftArgrightArg),因此:

Expression monthEquals = Expressions.equals(leftArg, rightArg);
您的leftArgrightArg都是函数,都只有一个操作数。leftArg有一个简单变量作为其函数操作数:

Expression leftArg = Expressions.function(SparqlFunction.MONTH, endDate);

rightArg具有NOW()函数作为其操作数:

Expression rightArg = Expressions.function(SparqlFunction.MONTH,
        Expressions.function(SparqlFunction.NOW));

只需将它们放在一起,您就完成了。

这篇关于如何使用SPARQL中的Month()函数来提取rdf4j中日期的月份?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆