- From: Libby Miller <Libby.Miller@bristol.ac.uk>
- Date: Wed, 13 Dec 2000 13:46:49 +0000 (GMT)
- To: Geoff Chappell <geoff@sover.net>
- cc: Libby Miller <Libby.Miller@bristol.ac.uk>, David Allsopp <dallsopp@signal.dera.gov.uk>, www-rdf-interest <www-rdf-interest@w3.org>
Hi Geoff On Wed, 13 Dec 2000, Geoff Chappell wrote: > I've been experimenting recently with a query language that takes queries of > the form: > > select ?age where {?x ?y {age JohnSmith ?age}} > > which behind the scenes results in a query: > > select ?age where {?x ?y ?z} and {rdf:type ?z rdf:Statement} and > {rdf:subject ?z JohnSmith} > and {rdf:predicate ?z age} and {rdf:object ?z ?age} That's a nice way of simplifying the syntax for reified queries. I guess I was confusing flattening the model somehow with making the syntax more intuitive for reified statements. This sort of thing would do the trick for me. > > Similarly, inner triples are assumed to refer to reified statements in > insert, delete, infer, and other commands. Additional nesting of triples is > allowed (i.e. he says she says such and such). This seems to be a pretty > natural representation and works well in practice. Sounds great! Are you thinking of making any papers / code public? I'm very interested in how people are tackling these problems. thanks, Libby > > rgds, > > Geoff Chappell > ----- Original Message ----- > From: "Libby Miller" <Libby.Miller@bristol.ac.uk> > To: "David Allsopp" <dallsopp@signal.dera.gov.uk> > Cc: <www-rdf-interest@w3.org> > Sent: Wednesday, December 13, 2000 7:46 AM > Subject: Re: Querying reified statements > > > > > > > > On Wed, 13 Dec 2000, David Allsopp wrote: > > > > > > > > But if I wanted a query along the lines of "What do people say John > > > Smith's age is?" I would need something like: > > > > > > select ?a where (?x rdf:type Statement)(?x rdf:subject JohnSmith)(?x > > > rdf:predicate age)(?x rdf:object ?a) > > > > > > which even for this trivial example is getting complex. I'd like a way > > > of 'drilling down' through reification, possibly through multiple layers > > > (A says that B says that John Smith is 42...). > > > > Hi David, > > > > You're right, this is a real nuisance, especially since queries like > > this also tend to be inefficient, because rdf:type statement, > > rdf:subject will be very common if you're dealing with a lot of reified > > statements. > > > > > > > > Perhaps the solution is to 'flatten' an RDF model containing reified > > > statements (applying filters according to the origin of the statements > > > or other criteria) to generate a model without any reifications, which > > > can be queried easily. > > > > I was trying to think around this problem, but I haven't bee able to > > work out how it can be done. If we have > > > > [bag1]-- 1 -- [Statement1] > > --- subject > > --- predicate > > --- object > > > > there's no obvious way to flatten it, because without reifying the > > statement there's no way to refer to the statement rather than its > > constituents. So it looks as if you can't connect parts of the model > > together unambiguously. > > > > I'd be very interested in any ideas you have about how to tackle this. > > > > On the plus side though, it does mean that you can have very general > > queries about a resource if you have lots of reified statements in a > > database, because e.g. > > > > select ?z, ?a where (?x rdf:type Statement)(?x rdf:subject > > JohnSmith)(?x rdf:predicate ?z)(?x rdf:object ?a) > > > > will get you all the predicate-object pairs with JohnSmith as the > > subject. > > > > cheers, > > > > > > Libby > >
Received on Wednesday, 13 December 2000 08:47:40 UTC