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: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] ] On Behalf Of Ricardo Almeida
Sent: 09 September 2008 15:15
To: [email protected]
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




Reply via email to