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).
}
即转换成功。
这可能是在最新文字类型之间进行转换的不成熟方法,但这是我想出的解决问题的方法。
任何建议表示赞赏。
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).
}
即转换成功。 这可能是在最新文字类型之间进行转换的不成熟方法,但这是我想出的解决问题的方法。 任何建议表示赞赏。