- From: Seaborne, Andy <Andy_Seaborne@hplb.hpl.hp.com>
- Date: Mon, 2 Feb 2004 17:44:41 -0000
- To:
- Cc: www-rdf-interest@w3.org
Carsten, Querying the contents of a bag is tricky in RDQL: because the language only has triple patterns, the way RDF represents bags with rdf:_1, rdf:_2 is visible unfortunately. The first thing to consider is whether you need bags at all: you could have repeated properties: <rdf:Description> <dc:title>Practical digital libraries dbooks, bytes, and bucks</dc:title> <dc:creator> .... </dc:creator> <dc:subject>Libraries</dc:subject> <dc:subject>Special collections</dc:subject> <dc:subject> <unihi:hanke> <rdf:value/> <rdfs:label/> </unihi:hanke> </dc:subject> ... then the query part (?x, <dc:subject>, ?subj) will range over the multiple occurrences of subject. If you wish to pick the bag apart, you either ask for all properties and then sieve out the ones that match the RDF syntax for member properties (i.e. the property matches the regular expression /^http://www.w3.org/1999/02/22-rdf-syntax-ns#_\d+$/). The other way is to use RDFS inference. In an RDFS model, you should be able to query for rdfs:member. (Note: this isn't in default settings in building an RDFS inferencing model - you'll have to enable configure it - because it needs to check every property in the model for the container member property pattern and is expensive). See http://jena.sourceforge.net/inference/index.html#rdfs - - - - For the bNodes, you can tell them apart either by looking at their properties through the programmatic API (the objects returned in Jena for RDQL results are the same underlying objects as the rest of the Model API) or by additional parts to the query to distinguish the items. At the moment, the different bags al match the query pattern. You may find you need to ask more than one query if you wish to find items of different graph pattern. There is a mailing list for Jena-specific questions: jena-dev@groups.yahoo.com . Andy -------- Original Message -------- > From: carsten@spichal.com <mailto:carsten@spichal.com> > Date: 2 February 2004 13:57 > > Hi everybody! > > We are working with Jena 2.0. Right now we have some problems to > retrieve the content of a RDF-bag. The RDF-data is build like this: > > <?xml version="1.0"?> > <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > xmlns:dc="http://purl.org/dc/elements/1.1/" > xmlns:dcterms="http://purl.org/dc/terms/" > xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#" > xmlns:unihi="http://www.uni-hildesheim.de/~semweb/submodel.rdf#"> > <rdf:Description> > <dc:title>Practical digital libraries dbooks, bytes, and > bucks</dc:title> > <dc:creator> > <vCard:N> > <vCard:Family>Lesk</vCard:Family> > <vCard:Given>Michael</vCard:Given> > </vCard:N> > </dc:creator> > <dc:subject> > <rdf:Bag> > <rdf:li>Libraries</rdf:li> > <rdf:li>Special collections</rdf:li> > <rdf:li>Computer files</rdf:li> > <rdf:li>United States</rdf:li> > <rdf:li>Digital libraries</rdf:li> > <rdf:li>Elektronische Bibliothek</rdf:li> > </rdf:Bag> > </dc:subject> > <dc:subject> > <rdf:Bag> > <rdf:li> > <unihi:hanke> > <rdf:value/> > <rdfs:label/> > </unihi:hanke> > </rdf:li> > <rdf:li> > <unihi:pica> > <rdf:value>806.54</rdf:value> > <rdfs:label>Bibliotheksautomatisierung</rdfs:label> > </unihi:pica> > </rdf:li> > <rdf:li> > <unihi:sachgruppe> > <rdf:value>BUB 160</rdf:value> > <rdfs:label/> > </unihi:sachgruppe> > </rdf:li> > </rdf:Bag> > </dc:subject> > > We have two questions: > How can we retrieve a specific content of a bag? > > This is our query and the result! In line 6 of the query we try to > recall the first element of the first bag. This works so far, but we > would like to recall the whole bag. In the result we get also the b-node > of the second bag. But we would like to avoid this because we are > interested in retrieving the content of a specific bag (in this case the > first bag). > > > SELECT ?person,?title,?liste > WHERE (?x, <dc:title>, ?title), > (?x, <dc:creator>, ?name), > (?name, <vCard:Family>, ?person), > (?x, <dc:subject>, ?bag), > (?bag, <rdf:_1>, ?liste) > USING dc FOR <http://purl.org/dc/elements/1.1/>, > vCard FOR <http://www.w3.org/2001/vcard-rdf/3.0#>, > rdf FOR <http://www.w3.org/1999/02/22-rdf-syntax-ns#> > > person | title | liste > ======================================================================= > "Lesk" | "Practical digital ..." | "Libraries" > "Lesk" | "Practical digital ..." <15ac3c9:fa766df73b:-7ffc> > > And how can we distinguish between the two bags in the RDQL-Query? > It would be nice if you could help us! > > A lot of greetings from Hildesheim, Germany! > > Carsten!
Received on Monday, 2 February 2004 12:46:59 UTC