Re: How to query properly

Hello Remo,

On Mon, Jun 03, 2013 at 10:51:15PM +0200, Remo Liechti wrote:
> <fh:Runways rdf:parseType="Collection">
> <fh:runway>
> <fh:callSign1>14</fh:callSign1>
> <fh:callSign2>32</fh:callSign2>
> </fh:runway>
> <fh:runway>
> <fh:callSign1>10</fh:callSign1>
> <fh:callSign2>28</fh:callSign2>
> </fh:runway>
> <fh:runway>
> <fh:callSign1>16</fh:callSign1>
> <fh:callSign2>34</fh:callSign2>
> </fh:runway>
> </fh:Runways>

See 

http://www.w3.org/TR/2004/REC-rdf-mt-20040210/#collections
http://www.w3.org/TR/REC-rdf-syntax/#section-Syntax-parsetype-Collection

This should generate the following triples:

... fh:Runways _:a

_:a rdf:first _:b
_:a rdf:rest _:c
_:b rdf:type fh:runway
_:b fh:callSign1 "14"
_:b fh:callSign2 "32"

_:c rdf:first _:d
_:c rdf:rest _:e
_:d rdf:type fh:runway
_:d fh:callSign1 "10"
_:d fh:callSign2 "28"

_:e rdf:first _:f
_:e rdf:rest rdf:nil
_:f rdf:type fh:runway
_:f fh:callSign1 "16"
_:f fh:callSign2 "34"

You can query all runways (or more general - all items of an RDF collection)
with SPARQL 1.1 property paths:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX fh: <http://swt.ffhs.ch>
SELECT ?name  (COUNT(?r) as ?runways)
WHERE {
  ?a rdf:type fh:airport.
  ?a fh:name ?name.
  ?a fh:Runways ?collection.
  ?collection rdf:rest*/rdf:first ?r.
  ?r rdf:type fh:runway.
}
group by ?name

Regards,

Michael Brunnbauer

-- 
++  Michael Brunnbauer
++  netEstate GmbH
++  Geisenhausener Straße 11a
++  81379 München
++  Tel +49 89 32 19 77 80
++  Fax +49 89 32 19 77 89 
++  E-Mail brunni@netestate.de
++  http://www.netestate.de/
++
++  Sitz: München, HRB Nr.142452 (Handelsregister B München)
++  USt-IdNr. DE221033342
++  Geschäftsführer: Michael Brunnbauer, Franz Brunnbauer
++  Prokurist: Dipl. Kfm. (Univ.) Markus Hendel

Received on Tuesday, 4 June 2013 15:09:07 UTC