【问题标题】:Does ARQ support SPARQL 1.1 Date and Time Functions?ARQ 是否支持 SPARQL 1.1 日期和时间函数?
【发布时间】:2015-03-13 16:47:19
【问题描述】:

我一直在尝试对日期/时间值进行一些格式化,以使它们在结果中显示为字符串文字。我正在使用来自 apache-jena-2.11.0 的 Jena ARQ。

PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>

SELECT ?activity  ?agent ?time ?time (YEAR(?time) as ?year )   WHERE {
     ?activity prov:endedAtTime ?time ;
            prov:wasAssociatedWith ?agent .

}

ARQ 将日期时间报告为

"2015-02-20T13:07:53+00:00:00"^^<xsd:dateTime>  to me.

这是属性在 RDF 中作为 TTL 的外观:

<http://www.w3.org/ns/prov#endedAtTime>
    "2014-08-04T15:35:09+01:00:00"^^<xsd:dateTime> ;

这是使用 Jena API 创建的:

resource.addProperty(PROVO.endedAtTime,
                model.createTypedLiteral(date, "xsd:dateTime"));

也许我使用的 API 有误?

【问题讨论】:

    标签: java rdf sparql jena arq


    【解决方案1】:

    是的,Jena 支持所有 SPARQL 1.1 功能。

    你有问题是因为

    "2015-01-07T15:22:53+00:00:00"^^<xsd:dateTime> 
    

    不是日期时间。

    "2015-01-07T15:22:53+00:00:00"^^http://www.w3.org/2001/XMLSchema#dateTime> 
    

    "2015-01-07T15:22:53+00:00:00"^^xsd:dateTime 
    

    &lt;xsd:dateTime&gt;是一个完全不同的URI,URI方案名称“xsd”。

    【讨论】:

    • 谢谢安迪。还是有点不确定。我添加了一些关于我如何使用 Jena API 的信息。是我的使用导致属性的类型错误吗?
    • 在创建字面量时放入URI:model.createTypedLiteral(date, "http://www.w3.org/2001/XMLSchema#dateTime")
    • @Interition 更明确地说,string "xsd:dateTime" 是您传递给 createTypedLiteral 的内容。 Jena 需要一个实际的 URI 字符串。请注意,TTL 包括"..."^^&lt;xsd:dateTime&gt;&lt;&gt; 围绕字符串xsd:dateTime。当您使用实际的 URI 时,您将获得具有正确 URI 的 "..."^^xsd:dateTime
    • 啊,我明白了。谢谢。 Jena API 中是否有“w3.org/2001/XMLSchema#dateTime”API 中的常量?必须显式提供这样的字符串似乎有点不整洁。
    • XSDDatatype 满足您所有的 XSD 需求。那么你根本不必使用字符串形式,而是使用类型化常量。
    猜你喜欢
    • 1970-01-01
    • 2015-12-15
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2021-12-11
    相关资源
    最近更新 更多