iTQL evaluation


No one asked for this; but iTQL[1] hasn't been mentioned here before
(or much, anyway), so I thought I'd take a look at it. But I've only
used it briefly; I welcome comments, clarifiations, amplifications.

Kendall Clark


An Evaluation of Kowari's iTQL 

[itql+] iTQL supports the requirement or design objective
[itql-] iTQL does not support the requirement or design objective
[itql?] iTQL's support is unclear or underterminable by me

(Here I'm collapsing the server, its protocols for data access, and
the query language per se into the single term "iTQL", which is,
speaking precisely, the query language only.)

In general, iTQL looks like this:

select <columns> from <models> where <constraints> order by
<variables> limit <count> offset <count>;

Query Exemplar (optionally formatted for legibility):

     $title $link $description 
      $article <> $title  
      $article <> $link 
      $article <> $description;


[itql+] 3.1 RDF Graph Pattern Matching
      $article <> $title  

[itql+] 3.2 Variable Binding Results
      $title $link $description

[itql-] 3.3 Extensible Value Testing 

[itql-] 3.4 Subgraph Results

[itql+] 3.5 Local Queries 
  URIs in the from clause can be of the type file:// and the Kowari
  driver is decoupled from the various means -- RMI, SOAP, Beans -- of
  remote access.

[itql-] 3.6 Optional Match

[itql+] 3.7 Limited Datatype Support
  Supports < and > on doubles; 'before' and 'after' for xsd:date &
  xsd:dateTime typed literals.

[itql-] 3.8 Bookmarkable Queries
  I've seen no method for expressing an iTQL query as a URI.

[itql+?] 3.9 Bandwidth-effificent Protocol
  Depends on whether you think RMI is efficient. But see next item.

[itql+] 3.10 Result Limits

  "order by" specifies a sort order of the results as one or more
  variables. Not a protocol feature, per se, but could be construed as
  making results easier to handle in bandwidth-constrained use cases,
  I suppose.

  "limit" takes a positive integer that represents the maximum number
  of solutions in the query result. Recommends use of order by with
  limit, but both are optional.

  "offset" takes a positive integer that represents "the number of
  leading rows to skp at the beginning of the query result"; also
  recommended to be used with order by.

[itql-] 4.1 Human-friendly Syntax
  IMO, of course. Warts:
      - lower case keywords are hard to read
      - unclear how to shorten URIs, if possible at all
      - seem to be some builtin qnames which use visually-busy <> delimiters
      - "$" variable prefix is more Perlish than the more common "?" prefix.
      - visual looseness of the where clause bits very hard to read, though 
      	optional parens help a bit here

[itql-] 4.2 Provenance

[itql-] 4.3 Non-existent Triples 

[itql+] 4.4 Aggregate Query
  In spades. Tutorial worth quoting at length --

     Because models are sets of statements, it's meaningful to compose
     them using set operations. The FROM clause permits set union
     using the or operator and set intersection using the and
     operator, with parentheses used to control association. For

     ... from <rmi://> and
     <rmi://> and

     would query only statements appearing in all three
     models. Distributed queries are expressed by composing models
     from different servers, for example:

     ... from <rmi://> or
     <rmi://> ...

     would query the combined statements of two models at different
     sites. Note that distributed queries require much more network
     traffic than queries to a single server, and are consequently

     ... from <rmi://> xor
     <rmi://> ...

     in parallel would query two models at different sites forming a
     single result set. Assumes each site is capable of resolving all
     contraints delcared in the WHERE clause.

[itql-] 4.6 Additional Semantic Information

Received on Friday, 4 June 2004 17:07:46 UTC