Returns key-value facts specific to a time-limited space (project, initiative, campaign, or event) for display on its page: its date and, if available, its location. Values are read from the space's latest non-invalidated definition nanopub. The date row shows the start and end dates; when both fall on the same day, it shows the day with the start and end times (and the timezone offset); when the end date is absent, only the start date is shown. The location row shows the location URI as a link and is omitted when no location is given. Both columns use the '_noheader' convention so the redundant header row is dropped.
prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> prefix dct: <http://purl.org/dc/terms/> prefix np: <http://www.nanopub.org/nschema#> prefix npa: <http://purl.org/nanopub/admin/> prefix npx: <http://purl.org/nanopub/x/> prefix gen: <https://w3id.org/kpxl/gen/terms/> prefix schema: <http://schema.org/> select distinct ?Property_noheader ?Property_label ?Value_multi_val_noheader ?Value_label_multi where { values ?_resource_multi_iri {} graph npa:graph { ?np npx:introduces ?_resource_multi_iri ; npa:hasValidSignatureForPublicKeyHash ?pubkey ; np:hasAssertion ?a . filter not exists { ?inv npx:invalidates ?np ; npa:hasValidSignatureForPublicKeyHash ?pubkey . } } graph ?a { ?_resource_multi_iri a gen:Space ; schema:startDate ?startDate . } optional { graph ?a { ?_resource_multi_iri schema:endDate ?endDate . } } optional { graph ?a { ?_resource_multi_iri schema:location ?location . } } bind(coalesce(substr(str(?startDate), 1, 10), str(?startDate)) as ?sDay) bind(coalesce(substr(str(?endDate), 1, 10), "") as ?eDay) bind(coalesce(substr(str(?startDate), 12, 5), "") as ?sTime) bind(coalesce(substr(str(?endDate), 12, 5), "") as ?eTime) bind(coalesce(replace(substr(str(?startDate), 17), "^(:[0-9][0-9](\\.[0-9]+)?)?", ""), "") as ?tzRaw) bind(if(?tzRaw = "Z", "UTC", if(?tzRaw != "", concat("UTC", ?tzRaw), "")) as ?tzDisp) bind( if(?eDay != "", if(?sDay = ?eDay, if(?sTime != "" && ?eTime != "", concat(?sDay, ", ", ?sTime, "\u2013", ?eTime, if(?tzDisp != "", concat(" (", ?tzDisp, ")"), "")), ?sDay), concat(?sDay, " \u2013 ", ?eDay)), ?sDay) as ?dateVal) values (?key ?Property_noheader ?Property_label) { ('Date' schema:startDate 'Date:') ('Location' schema:location 'Location:') } bind(if(?key = 'Date', ?dateVal, str(?location)) as ?Value_multi_val_noheader) filter(bound(?Value_multi_val_noheader)) bind('' as ?Value_label_multi) } order by (if(?key = 'Date', 1, 2))