candidate requirement: boolean query

Folks,

I'm not wedded to this wording, but I think it at least hints at an
important requirement. Ideally I'd like some kind of first class
syntax for a boolean query -- SELECT BOOL or SELECT ? or ASK -- but
the requirement isn't as much about syntax as it is about being able
to query a graph and get back TRUE or FALSE.

3.x Boolean Query

  It must be possible for queries to return an explicit representation
  of TRUE if there is at least one way that the query can be satisifed
  by the queried graph or an explicit representation of FALSE if there
  is not at least one way that the query can be satisifed by the
  queried graph.

Additionally, I'd like a syntactic variant to distinguish this kind of
query, but that's not a necessary component of the requirement as
written.

In response to Simon's point about variable bindings being a
degenerate case of boolean result types, I can agree with that point
and still want *explicit* boolean return and query types. That is,
people would be perfectly free to implement Boolean Query by returning
explicit FALSE or explicit TRUE based on Simon's analysis. But his
analysis, at least as I understand it and these other issues, is
orthogonal to how we represent boolean query results on the wire.

Use cases and motivations: policy-driven RSS feed aggregators;
privacy-respecting FOAF server; efficiency in the absence of streaming
results; efficiency for some kinds of (mostly DL, tableau driven) DAWG
processors.

Interactions: I think this requirement interacts with 4.3 Non-existent
triples. Which is to say 4.3 doesn't specify whether, if you query for
a triple that is present in the queried graph, what is supposed to
happen -- return the triple? return a binding? return TRUE? Further, I
think that 3.x Boolean Query subsumes 4.3 Non-exisent Triples, but is
more useful. Sometimes a boolean query would just be a query for
whether a triple exists. Othertimes it will be more complex.

Best,
Kendall Clark

Received on Friday, 18 June 2004 07:59:59 UTC