NAME
RDF::Query::Functions::Buzzword::DateTime - plugin for buzzword.org.uk
datetime functions
SYNOPSIS
use RDF::TrineX::Functions -shortcuts;
use RDF::Query;
my $data = rdf_parse(<<'TURTLE', type=>'turtle', base=>$baseuri);
@prefix foaf: .
@prefix rdf: .
foaf:birthday "1980-06-01"^^ .
TURTLE
my $query = RDF::Query->new(<<'SPARQL');
PREFIX foaf:
PREFIX util:
PREFIX dt:
PREFIX xsd:
SELECT
(dt:now() AS ?now)
(dt:today() AS ?today)
?bday
(dt:format_duration(dt:difference(dt:now(), ?bday), "%Y years, %m months") AS ?age)
(dt:add(?bday, "P10Y"^^xsd:duration) AS ?tenthbday)
(dt:strtotime("yesterday morning"@en) AS ?yesterdaymorning)
(dt:strftime(?bday, "%a, %d %b %Y"@en) AS ?fmtbday)
(dt:strtodate("1/6/1980"@en-gb) AS ?guessbday)
WHERE
{
?person foaf:birthday ?bday .
}
SPARQL
print $query->execute($data)->as_xml;
DESCRIPTION
This is a plugin for RDF::Query providing a number of extension
functions for dates and times.
* http://buzzword.org.uk/2011/functions/datetime#add
Given an xsd:dateTime or xsd:date, and an xsd:duration, adds the
duration to the datetime. Returns an xsd:date if it was passed an
xsd:date and the xsd:duration didn't specify any hours, minutes or
seconds. Returns an xsd:dateTime otherwise.
* http://buzzword.org.uk/2011/functions/datetime#difference
Given two xsd:dateTime or xsd:date literals, returns an xsd:duration
representing the difference between them.
* http://buzzword.org.uk/2011/functions/datetime#format_duration
Given an xsd:duration and a literal formatting string, returns a
formatted duration. See DateTime::Format::Duration.
* http://buzzword.org.uk/2011/functions/datetime#now
Returns the current xsd:dateTime, with supposed nanosecond
precision. If called multiple times in the same SPARQL query, will
always return the same instant.
* http://buzzword.org.uk/2011/functions/datetime#strftime
Takes a xsd:datetime and a literal formatting string and returns a
formattted date. See DateTime.
* http://buzzword.org.uk/2011/functions/datetime#strtodate
Attempts to parse an arbitrary literal using natural language and
convert it into an xsd:date. Smart enough to tell the difference
between "1/6/1980"@en-us and "1/6/1980"@en-gb.
Can safely be passed an existing xsd:date or xsd:dateTime.
* http://buzzword.org.uk/2011/functions/datetime#strtotime
As per "strtodate" but returns an xsd:dateTime.
"add", "difference" and "strftime" all implicitly call "strtotime"
on their xsd:dateTime arguments, which means they don't need to be
given strict xsd:date/dateTime input.
* http://buzzword.org.uk/2011/functions/datetime#today
Like "now" but returns an xsd:date.
SEE ALSO
RDF::Query, RDF::Query::Functions::Buzzword::Util.
DateTime.
.
AUTHOR
Toby Inkster .
COPYRIGHT
Copyright 2011-2012 Toby Inkster
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.