CSV到RDF-将日期解析为有效的xsd:DateTime格式

时间:2018-11-01 00:20:53

标签: csv datetime xsd sparql rdf

我正在使用Tarql将一些CSV数据转换为rdf。 CSV包含一列日期,格式为“ 09/21/2017 12:15:00 AM”。

我正在使用下面的SPARQL where子句将此列中的日期转换为有效的xsd:DateTime格式。

SELECT ?date
WHERE {
    BIND ("([0-9][0-9]?)/([0-9][0-9]?)/([0-9][0-9][0-9][0-9])\\s*([0-9][0-9]):([0-9][0-9]):([0-9][0-9])\\s*([A-Z][A-Z])" AS ?DateRegex)
    BIND (REPLACE(?Date, ?DateRegex, "$1") AS ?month)
    BIND (REPLACE(?Date, ?DateRegex, "$2") AS ?day)
    BIND (REPLACE(?Date, ?DateRegex, "$3") AS ?year)
    BIND (REPLACE(?Date, ?DateRegex, "$4") AS ?hours)
    BIND (REPLACE(?Date, ?DateRegex, "$5") AS ?mins)
    BIND (REPLACE(?Date, ?DateRegex, "$6") AS ?sec)
    BIND (REPLACE(?Date, ?DateRegex, "$7") AS ?clockPeriod)
    BIND (STRDT(CONCAT(?year, "-", ?month, "-", ?day, "T", IF(?clockPeriod = "PM", IF(?hours >= 1 && ?hours < 12, xsd:string(xsd:integer(?hours) + 12), ?hours), IF(?hours = 12, "00" , ?hours)), ":", ?mins, ":" , ?sec), xsd:dateTime) AS ?date)
}

当由于12个小时到24个小时的时钟而不需要更改小时数时,此方法很好用,但是当需要更改小时数时,不会生成日期。我假设在IF的最后一个子句中有问题。

任何人都可以指出问题所在吗?

0 个答案:

没有答案