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

Re: SPARQL query - Construct

From: Andreas Langegger <al@jku.at>
Date: Thu, 11 Sep 2008 00:36:58 +0200
Cc: Ricardo Almeida <ralmeida@dei.isep.ipp.pt>, "public-sparql-dev@w3.org" <public-sparql-dev@w3.org>
Message-Id: <2983500D-B6D5-4354-AAA5-9B8885C543AB@jku.at>
To: "Seaborne, Andy" <andy.seaborne@hp.com>
or better LET ( ?var := ... ) right? ;-)
                      ^^

This is great, so I can use

SELECT DISTINCT(?dt) WHERE {
?s ?p ?o .
LET (?dt := datatype(?o))
}

to get a simple list of all datatypes used for typed literals, at  
least when using ARQ Syntax.

good hint, thanks

AndyL

On Sep 10, 2008, at 11:41 PM, Seaborne, Andy wrote:

> In SPARQL, the only way a variable can get a value is from a basic  
> graph pattern match – everything builds up from there – and only RDF  
> terms in the graph can be bound so only RDF terms that occur in the  
> graph can be returned and then used in the CONSTRUCT.
>
> In ARQ, in the extended syntax, there is assignment:
>
> {
>    …
>    ?s ont:firstName ?firstName .
>    ?s ont:lastName ?lastName .
>    LET ( ?name = fn:concat(?firstName, “ “, ?lastName)  )
> }
>
> Where fn:concat [1][2] is the XQuery/XPath Function to concatenate  
> strings.
>
> There are other ways to achieve assignment; subqueries with SELECT  
> expressions; property functions, that give an enhanced view of the  
> data within strict SPARQL syntax.
>
> A property function is custom code, made to fit into the SPARQl  
> syntax, that called at query execution time
>
> PREFIX apf:     <http://jena.hpl.hp.com/ARQ/property#>
> prefix  ont:        <http://www.owl-ontologies.com/Ontology1200929459.owl 
> >
> SELECT *
> {
>    ?s ont:firstName ?firstName .
>    ?s ont:lastName ?lastName .
>     ?name apf:concat (?firstName “ “ ? lastName)
> }
>
> Will bind ?name to the result of concatenting str(?firstName) the  
> space and str(?lastName)
>
>                 Andy
>
> [1] http://www.w3.org/TR/xpath-functions/
> [2] Only in SVN : in checking this reply, I found it was wrongly  
> named and fixed that.
>
> From: public-sparql-dev-request@w3.org [mailto:public-sparql-dev-request@w3.org 
> ] On Behalf Of Ricardo Almeida
> Sent: 09 September 2008 15:15
> To: public-sparql-dev@w3.org
> Subject: SPARQL query - Construct
>
> I,
>
> I’m using sparql with Jena, to make some queries. I have two  
> ontologies (src1 and tgt), and two rdf files were I have my  
> instances, according to this ontologies.
>
> <image002.png>src1:
> <image010.png>         person: Set of
> <image011.png>                          personId
> <image012.png><image013.png>                          name
>  addressId
>                           addressSrc: Set of
> <image014.png>                                                   
> adressIdSrc
> <image015.png>street
> <image016.png>                                                  pobox
> tgt:
> employee: Set of
>  employee:
>  employeeId
>  firstName
>  lastName
>  addressId
>        addressTgt: Set of
>           adressIdTgt
>           address
>
>
>
> I would like to use construct to obtain data from one ontology,  
> according to the other. Is it possible to make a concatenation (or a  
> split), with construct?
> I made the query described above and I obtain all the first names,  
> but what I really wanted was to obtain the concatenation of  
> firstName and lastName, of tgt as the name of src1.
>
>     private String QConstructSrcFromTgt =
>         "CONSTRUCT { ?s rdf:type <http://www.owl-ontologies.com/Ontology1200929461.owl#Person 
> > .." +
>         "            ?s <http://www.owl-ontologies.com/Ontology1200929461.owl#name 
> > ?firstName" +
>         "} FROM <http://www.owl-ontologies.com/ 
> Ontology1200929459.owl> WHERE {?s rdf:type ?o ." +
>          "               ?s <http://www.owl-ontologies.com/Ontology1200929459.owl#firstName 
> > ?firstName} ";
>         //"               ?s <http://www.owl-ontologies.com/Ontology1200929459.owl#lasttName 
> > ?lastName. "+
>         //"       FILTER regex(?lastName, \"Castro\")    } ";
>
> Thanks,
>
> Ricardo Gabriel Soares Fernandes de Almeida.
>
> -------------------------------------------------------------------------------
> Departamento de Engenharia Informática
> Instituto Superior de Engenharia
> Instituto Politécnico do Porto
>
> Rua Dr. António Bernardino de Almeida, 431
> 4200-072 Porto
> Portugal
> Tel.:(+351) 228 340 500 / Fax.: (+351) 228 021 159
>



Web of Data Practitioners Days / Oct 22-23 / Vienna
http://www.webofdata.info
----------------------------------------------------------------------
Dipl.-Ing.(FH) Andreas Langegger
Institute for Applied Knowledge Processing
Johannes Kepler University Linz
A-4040 Linz, Altenberger Straße 69
http://www.langegger.at
Received on Wednesday, 10 September 2008 22:40:37 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Wednesday, 10 September 2008 22:40:38 GMT