Hi Andy, Thx for the elaboration. Just wondering how others are using the ARQ api. What I want to accomplish in the end is to write a dynamic Apache Cocoon generator that takes a SPARQL query as input and builds a Map from either (all request parameters / sitemap parameters) and injects that map as a QuerySolution (binding parameters from the query). If I get this working I can do some pretty slick stuff ;-)
Robby -----Original Message----- From: Andy Seaborne [mailto:andy.seaborne.apa...@gmail.com] On Behalf Of Andy Seaborne Sent: Thursday, August 16, 2012 5:01 PM To: users@jena.apache.org Subject: Re: how to parameterize a date in a parametrized query? The problem is Java's idea of "date" or "Calendar" is not an xsd:date - it's an xsd:dateTime. Hence when converted to Java, you get a dateTime. In practice, the java<->xsd mapping is a touch fraught for dates/calendars. It's a bit fragile for even numbers - whether to use xsd:int or xsd:integer when that may matter (in TDB it looses the distinction and is more value-based). For example, in your data there is no timezone. So it is safer to take control and make an RDF literal with carefully controlled XSD date. Your solution is the right one. ARQ's helper code is in: com.hp.hpl.jena.sparql.util.Utils You'll see it does it's own SimpleDateFormat because the Jena datatype comes from Xerces and is value-based, which likes to make it all Z. If the lexical form matters, See also javax.xml.datatype.XMLGregorianCalendar while there is no helper code for that (it's quite new), it is at least XSD-ish. Andy On 16/08/12 15:42, Robby Pelssers wrote: > I noticed that this will get the job done but does that mean there is no > shortcut to just inject a java.util.Date and handle it properly? > > parQuery.setLiteral("productStatusDate", "2012-01-03", XSDDatatype.XSDdate); > > Robby > > -----Original Message----- > From: Robby Pelssers [mailto:robby.pelss...@nxp.com] > Sent: Thursday, August 16, 2012 4:29 PM > To: users@jena.apache.org > Subject: how to parameterize a date in a parametrized query? > > Hi all, > > Still having a bit of difficulty getting the sparql query to use a xs:date > instead of xs:dateTime > > In RDF we defined a productStatusDate as follows: > <nxp:productStatusDate > rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2011-10-28</nxp:productStatusDate> > > > I have following query and from Java I want to filter out all products > having a specific productStatusDate > > #Query showcasing how to select typenumber and preflabel for all products > #having a specific productStatusDate > PREFIX nxp: <http://purl.org/nxp/schema/v1/> > SELECT ?typeNumber > WHERE > { > ?x nxp:typeNumber ?typeNumber; > nxp:productStatusDate ?productStatusDate . > } > > > I only noticed a setLiteral for Calendar but that does not seem to get the > job done: > > ParameterizedSparqlString parQuery = new > ParameterizedSparqlString(sQuery); > Calendar calendar = Calendar.getInstance(); > calendar.set(2011, 10, 28, 0, 0, 0); //2011-10-28 > parQuery.setLiteral("productStatusDate", calendar); > Query query = parQuery.asQuery(); > System.out.println(query.toString()); > > I printed the query which looks like this: > > PREFIX nxp: <http://purl.org/nxp/schema/v1/> > > SELECT ?typeNumber > WHERE > { ?x nxp:typeNumber ?typeNumber . > ?x nxp:productStatusDate > "2011-11-27T23:00:00.663Z"^^<http://www.w3.org/2001/XMLSchema#dateTime> > } > > > How can I switch to using date ?? > > Thx in advance, > Robby >