如何使用 SPARQL 中的 MONTH() 函数提取 rdf4j 中日期的月份?
How to use the MONTH() function from SPARQL to extract the month of a date in rdf4j?
如何使用 rd4j 从 java 中的 SPARQL 复制以下过滤器?
FILTER(?endDate > NOW() && ?startDate < NOW() && MONTH(?endDate) = MONTH(NOW()))
我已经为 MONTH()
和 NOW()
初始化了如下表达式,以及图形模式 pattern
,但不知道如何使用它们从变量 ?endDate
和 NOW()
函数
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, ****)
这与您设置其他表达式的方式没有什么不同。您希望在两个值表达式(我们称它们为 leftArg
和 rightArg
)之间进行相等比较操作,因此:
Expression monthEquals = Expressions.equals(leftArg, rightArg);
你的 leftArg
和 rightArg
也是函数,都只有一个操作数。 leftArg
有一个简单的变量作为它的函数操作数:
Expression leftArg = Expressions.function(SparqlFunction.MONTH, endDate);
rightArg
有一个NOW()
函数作为它的操作数:
Expression rightArg = Expressions.function(SparqlFunction.MONTH,
Expressions.function(SparqlFunction.NOW));
只要把它们放在一起就大功告成了。
如何使用 rd4j 从 java 中的 SPARQL 复制以下过滤器?
FILTER(?endDate > NOW() && ?startDate < NOW() && MONTH(?endDate) = MONTH(NOW()))
我已经为 MONTH()
和 NOW()
初始化了如下表达式,以及图形模式 pattern
,但不知道如何使用它们从变量 ?endDate
和 NOW()
函数
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, ****)
这与您设置其他表达式的方式没有什么不同。您希望在两个值表达式(我们称它们为 leftArg
和 rightArg
)之间进行相等比较操作,因此:
Expression monthEquals = Expressions.equals(leftArg, rightArg);
你的 leftArg
和 rightArg
也是函数,都只有一个操作数。 leftArg
有一个简单的变量作为它的函数操作数:
Expression leftArg = Expressions.function(SparqlFunction.MONTH, endDate);
rightArg
有一个NOW()
函数作为它的操作数:
Expression rightArg = Expressions.function(SparqlFunction.MONTH,
Expressions.function(SparqlFunction.NOW));
只要把它们放在一起就大功告成了。