W3C home > Mailing lists > Public > public-sparql-dev@w3.org > April to June 2008

RE: SPARQL query modification with ARQ API

From: Seaborne, Andy <andy.seaborne@hp.com>
Date: Sat, 17 May 2008 10:50:17 +0000
To: Ahmad Iqbal <Ahmad.Iqbal@nicta.com.au>
CC: "public-sparql-dev@w3.org" <public-sparql-dev@w3.org>
Message-ID: <38CBA1F6A350B044AF785E63AAC3C6776497E25E88@G5W0276.americas.hpqcorp.net>
Ahmad,

As I understand it, you wanted to modify the query to change from matching using one property to use another.  If this is saying that, for the purposes of the application, you want to make one property the same as the other, then, instead of changing the query, you could make a new view of the data using rules.

You don't define the rule in ARQ - what you do is make a new Jena model which is backed by a rules-based inference as well as the base data.  Then query the model using ARQ in the same way.

Documentation:
http://jena.sourceforge.net/inference/index.html


        Andy

> -----Original Message-----
> From: Ahmad Iqbal [mailto:Ahmad.Iqbal@nicta.com.au]
> Sent: 15 May 2008 18:15
> To: Seaborne, Andy
> Cc: public-sparql-dev@w3.org
> Subject: RE: SPARQL query modification with ARQ API
>
> Thanks Andy,
>
> I am able to access individual triple pattrens in the query. But I am also
> interested to follow ur this suggestion;
>
> > Completely different solution: use the rules engine to assert
> > <http://data.semanticweb.org/ns/swc/ontology#affiliation>
> > for every
> > <http://data.semanticweb.org/ns/swc/ontology#worksIn>
> > If they mean the same for the purpose of the application.  Then the query
> > is fine as is.
>
> how can I define such rules using ARQ API or If I need to map full URI such
> that all those URIs can be treated as the same URI?
>
> --
> Ahmad
>
>
>
>
> On Sat, 10 May 2008 11:40:00 +0000, "Seaborne, Andy" <andy.seaborne@hp.com>
> wrote:
> > Questions specific to Jena and ARQ are usually answered on the mailing list
> > jena-dev@groups.yahoo.com.
> >
> >> -----Original Message-----
> >> From: public-sparql-dev-request@w3.org [mailto:public-sparql-dev-
> >> request@w3.org] On Behalf Of Ahmad Iqbal
> >> Sent: 09 May 2008 11:44
> >> To: public-sparql-dev@w3.org
> >> Subject: SPARQL query modification with ARQ API
> >>
> >>
> >> Hi All,
> >>
> >> I have the following question on working with ARQ API:
> >>
> >> If I have an object of com.hp.hpl.jena.sparql.syntax.Element class,
> >> containing four triple pattren as follows;
> >> { ?artical   <http://swrc.ontoware.org/ontology#author>  ?person .
> >>   ?person  <http://data.semanticweb.org/ns/swc/ontology#affiliation>
> > ?org ;
> >>            <http://www.w3.org/2000/01/rdf-schema#label>  ?name .
> >>   ?artical   <http://purl.org/dc/elements/1.1/title>  ?title .
> >> }
> >>
> >> code displays above graph pattren:
> >> System.out.println(element); // where element is an object of Element
> > class.
> >
> > (Context: Elements are the root class for patterns in the abstract syntax
> > tree)
> >
> >>
> >> I have the following questions. Please write a small piece of code.
> >> Question 1: How can I replace 2nd triple with
> >> ?person  <http://data.semanticweb.org/ns/swc/ontology#worksIn>  ?org
> >
> > You can either use the visitor pattern supported by Element or check and
> > directly cast to an ElementGroup.  Then you can access the BGP (it's a
> > group of one BGP) and manipulate the triples.  Good design is to build a
> > new structure, leaving the original untouched.
> >
> > But it is better to work on the algebra form anyway because "Element" etc
> > are just the surface syntax.
> >
> > Completely different solution: use the rules engine to assert
> > <http://data.semanticweb.org/ns/swc/ontology#affiliation>
> > for every
> > <http://data.semanticweb.org/ns/swc/ontology#worksIn>
> > If they mean the same for the purpose of the application.  Then the query
> > is fine as is.
> >
> >>
> >> Question 2: How can I remove 3rd triple pattren?
> >
> > As before - cast to ElementGroup, get the first element (the BGP) and
> > manipulate.
> >
> > In the algebra expression below you seem to have aquery that starts with
> >
> > SELECT ?name ?org ?title
> >
> > So removing the 3rd triple will leave ?name unbound.
> >
> >>
> >>
> >> Question 3: If I have algebra expression as given below (in an object
> > of
> >> class com.hp.hpl.jena.sparql.algebra.Op), how can I add and remove a
> > triple
> >> pattren in this algebra expression? Please mention a short code.
> >> (project (?name ?org ?title)
> >>   (order (?org)(BGP
> >>       (triple ?artical <http://swrc.ontoware.org/ontology#author>
> > ?writer)
> >>       (triple ?writer
> >> <http://data.semanticweb.org/ns/swc/ontology#affiliation> ?org)
> >>       (triple ?writer <http://www.w3.org/2000/01/rdf-schema#label>
> > ?name)
> >>       (triple ?artical <http://purl.org/dc/elements/1.1/title> ?title)
> >>     )))
> >
> > The algebra part of ARQ also supports the visitor pattern but also a
> > transform pattern for rewriting one algebra expression into another
> > (transform actually builds on visitor).  Subclass TransformCopy and add
> > your manipulation of BGPs; use class Tranformer to apply your transform.
> > It's a bottom-up rewrite of the algebra form.  This is the better way to
> > manipulate queries - ARQ uses itself for some optimizations, and uses the
> > visitor pattern for reference evaluation and serialization into SSE as in
> > your example.
> >
> > (ARQ supports turning most algebra expressions back into SPARQL syntax,
> > where the algebra expression has a SPARQL syntax form that would generate
> > the algebra expression.  Some algebra expression do not lead to a direct
> > SPARQL query string.)
> >
> >         Andy
> >
> >>
> >> Thanks in advance,
> >>
> >> --
> >> Ahmad Ali Iqbal
> >> Visiting Scholar (Februry 15 to July 22, 2008)
> >> Semantic Information Systems and Language Engineering Group
> >> Digital Enterprise Research Institute (DERI)
> >> Galway, Ireland.
> >> Email: ahmad.iqbal at deri.org
> >> Tel: +353 8782 11402
> >>
> >> Ph.D. Research Scholar
> >> School of Electrical Engineering and Telecommunications
> >> University of New South Wales (UNSW)
> >> National ICT Australia Ltd
> >> Bay 15, Locomotive Workshop, Australian Technology Park
> >> Eveleigh, NSW 1430
> >> Email: ahmad.iqbal at {student.unsw.edu.au, nicta.com.au}
> >> Tel: +61 2 8374 5543, Fax: +61 2 8374 5531
> >>
> >>
> >>
> >
>
> Ahmad Ali Iqbal
> Visiting Scholar (Februry 15 to July 22, 2008)
> Semantic Information Systems and Language Engineering Group
> Digital Enterprise Research Institute (DERI)
> Galway, Ireland.
> Email: ahmad.iqbal at deri.org
> Tel: +353 8782 11402
>
> Ph.D. Research Scholar
> School of Electrical Engineering and Telecommunications
> University of New South Wales (UNSW)
> National ICT Australia Ltd
> Bay 15, Locomotive Workshop, Australian Technology Park
> Eveleigh, NSW 1430
> Email: ahmad.iqbal at {student.unsw.edu.au, nicta.com.au}
> Tel: +61 2 8374 5543, Fax: +61 2 8374 5531
>

Received on Saturday, 17 May 2008 10:51:45 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Saturday, 17 May 2008 10:51:45 GMT