- From: Andreas Langegger <al@jku.at>
- Date: Thu, 11 Sep 2008 00:36:58 +0200
- To: "Seaborne, Andy" <andy.seaborne@hp.com>
- 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>
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 UTC