- From: Seaborne, Andy <andy.seaborne@hp.com>
- Date: Thu, 11 Sep 2008 09:10:23 +0000
- To: "al@jku.at" <al@jku.at>
- CC: Ricardo Almeida <ralmeida@dei.isep.ipp.pt>, "public-sparql-dev@w3.org" <public-sparql-dev@w3.org>
> -----Original Message-----
> From: Andreas Langegger [mailto:al@jku.at]
> Sent: 10 September 2008 23:37
> To: Seaborne, Andy
> Cc: Ricardo Almeida; public-sparql-dev@w3.org
> Subject: Re: SPARQL query - Construct
>
> or better LET ( ?var := ... ) right? ;-)
> ^^
Yes - plain text is safer! I promise the cut-and-paste original did work and had := (and the right quotes as well).
>
> 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.
Yes - it's any expression that can appear in a FILTER so built-ins are OK.
You have to declare you want extended SPARQL when the query string is parsed - strict SPARQL is the default.
Andy
>
>
> 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 Thursday, 11 September 2008 09:12:08 UTC