Spinrdf sp:now 函数未返回任何内容

Spinrdf sp:now function is not returning anything

SPIN is a way to represent a wide range of business rules.

这是旋转的官方单行说明 (spinrdf)。 Spin 使用户能够在本体中使用 sparqls 表示他们的规则。

由于没有 spinrdf 标签,我需要进行这些描述。

我已经使用 spin 大约一个星期来编写一些规则。现在我正在编写一些函数来简化规则中的 sparqls。我写了一个简单的日期比较函数compareDates。当我使用以下 sparql 调用该函数时,没有错误并给出了预期的结果。

SELECT ?result
WHERE {
 BIND(:compareDates("2015-03-03"^^xsd:date, "2015-06-09"^^xsd:date) as ?result)
}

我想使用sp:now自带的旋转功能。当我使用以下 sparql 时,我没有输出。

SELECT ?result
WHERE {
 BIND(:compareDates("2015-03-03"^^xsd:date, sp:now()) as ?result)
}

然后我尝试了以下方法,但没有成功:

SELECT ?result
WHERE {
 BIND(sp:now() as ?now)
 BIND(:compareDates("2015-03-03"^^xsd:date, ?now) as ?result)
}

然后我决定查看 sp:now returns 并且我已经 运行ned 以下 sparql 结果为空。这让我得出一个结论,我将无法 运行 这个功能。

SELECT ?now
WHERE {
 BIND(sp:now() as ?now)
}

我想使用该功能或​​类似功能,但我不明白问题所在。任何意见表示赞赏。

更新 1

如下截图所示,函数不包含任何主体!这将是问题所在,但是,为什么它被放置在相关的 ontology 中,如果不起作用。

经过一些研究,我发现了两种具有现在日期时间的替代方法。事实上,here 中记录了 now() 函数的 sparql 实现。

SELECT ?now
WHERE {
    BIND(now() as ?now).
}

此 sparql 将 return 以下内容:

[now]
2015-03-24T22:12:29.183+02:00

自旋中有另一种方法ontology; afn:now() 位于 spl:MiscFunctions class 之下。此函数将给出相同的结果。

顺便说一句,我一直在使用 xsd:date 作为我的函数参数,但现在这两个函数都替代了 returns xsd:dateTime 文字。 将这些转换为 xsd:date 是另一回事。 存在一些转换函数,但它们只转换类型而不转换 trim xsd:dateTime 的小时部分,这导致我的比较失败。 因此提出了以下sparql,它使用间接方法将 xsd:dateTime 转换为 xsd:date

SELECT ?nowDateTime ?nowDate 
WHERE {
 BIND(now() as ?nowDateTime). 
 BIND(spif:cast(spif:dateFormat(?nowDateTime, "yyyy-MM-dd"), xsd:date) as ?nowDate).
}

即转换成功。 这可能是在最新文字类型之间进行转换的不成熟方法,但这是我想出的解决问题的方法。 任何建议表示赞赏。