NIHVIVO-1665 Fix query for core:dateTimeInterval to allow for incomplete data

This commit is contained in:
rjy7 2011-01-18 02:16:14 +00:00
parent 31cb81dec6
commit 2fbc6c22ca
3 changed files with 21 additions and 12 deletions

View file

@ -9,16 +9,21 @@
PREFIX core: <http://vivoweb.org/ontology/core#> PREFIX core: <http://vivoweb.org/ontology/core#>
PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#> PREFIX afn: <http://jena.hpl.hp.com/ARQ/function#>
SELECT DISTINCT ?dateTimeStart (afn:localname(?dateTimePrecisionStart) AS ?precisionStart) SELECT DISTINCT ?dateTimeInterval (afn:localname(?dateTimeInterval) AS ?intervalName)
?dateTimeEnd (afn:localname(?dateTimePrecisionEnd) AS ?precisionEnd) WHERE { ?valueStart (afn:localname(?valueStart) AS ?valueStartName)
?dateTimeStart
(afn:localname(?dateTimePrecisionStart) AS ?precisionStart)
?valueEnd (afn:localname(?valueEnd) AS ?valueEndName)
?dateTimeEnd
(afn:localname(?dateTimePrecisionEnd) AS ?precisionEnd) WHERE {
GRAPH ?g1 { ?subject ?property ?dateTimeInterval } GRAPH ?g1 { ?subject ?property ?dateTimeInterval }
OPTIONAL { GRAPH ?g2 { ?dateTimeInterval core:start ?dateTimeStartValue . OPTIONAL { GRAPH ?g2 { ?dateTimeInterval core:start ?valueStart }
?dateTimeStartValue core:dateTime ?dateTimeStart ; OPTIONAL { GRAPH ?g3 { ?valueStart core:dateTime ?dateTimeStart } }
core:dateTimePrecision ?dateTimePrecisionStart . } OPTIONAL { GRAPH ?g4 { ?valueStart core:dateTimePrecision ?dateTimePrecisionStart } }
} }
OPTIONAL { GRAPH ?g3 { ?dateTimeInterval core:end ?dateTimeEndValue . OPTIONAL { GRAPH ?g5 { ?dateTimeInterval core:end ?valueEnd }
?dateTimeEndValue core:dateTime ?dateTimeEnd ; OPTIONAL { GRAPH ?g6 { ?valueEnd core:dateTime ?dateTimeEnd } }
core:dateTimePrecision ?dateTimePrecisionEnd . } OPTIONAL { GRAPH ?g7 { ?valueEnd core:dateTimePrecision ?dateTimePrecisionEnd } }
} }
} }
</query> </query>

View file

@ -4,5 +4,9 @@
<#import "lib-datetime.ftl" as dt> <#import "lib-datetime.ftl" as dt>
${dt.dateTimeIntervalLong("${statement.dateTimeStart!}", "${statement.precisionStart!}", <#if ! statement.valueStart?? && ! statement.valueEnd??>
<a href="${profileUrl(statement.dateTimeInterval)}">${statement.intervalName}</a> (incomplete date/time interval data)
<#else>
${dt.dateTimeIntervalLong("${statement.dateTimeStart!}", "${statement.precisionStart!}",
"${statement.dateTimeEnd!}", "${statement.precisionEnd!}")} "${statement.dateTimeEnd!}", "${statement.precisionEnd!}")}
</#if>

View file

@ -6,7 +6,7 @@
<#-- No core:dateTime data property assigned. Display a link to the core:DateTimeValue object --> <#-- No core:dateTime data property assigned. Display a link to the core:DateTimeValue object -->
<#if ! statement.dateTime??> <#if ! statement.dateTime??>
<a href="${profileUrl(statement.dateTimeValue)}">${localName(statement.dateTimeValue)}</a> (incomplete data) <a href="${profileUrl(statement.dateTimeValue)}">${dateTimeValueName}</a> (incomplete date/time data)
<#else> <#else>
${dt.formatXsdDateTimeLong(statement.dateTime, statement.precision!)} ${dt.formatXsdDateTimeLong(statement.dateTime, statement.precision!)}
</#if> </#if>