- From: Kendall Clark <kendall@monkeyfist.com>
- Date: Fri, 4 Jun 2004 17:06:00 -0400
- To: public-rdf-dawg@w3.org
Peeps, 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. Best, Kendall Clark [1] http://www.kowari.org/ 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): select $title $link $description from <rmi://192.168.1.100/server1#sampledata> where $article <http://purl.org/rss/1.0/title> $title and $article <http://purl.org/rss/1.0/link> $link and $article <http://purl.org/rss/1.0/description> $description; Requirements ------------ [itql+] 3.1 RDF Graph Pattern Matching where $article <http://purl.org/rss/1.0/title> $title ...; [itql+] 3.2 Variable Binding Results select $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 example: ... from <rmi://site.domain.net/server1#model1> and <rmi://site.domain.net/server1#model2> and <rmi://site.domain.net/server1#model3> would query only statements appearing in all three models. Distributed queries are expressed by composing models from different servers, for example: ... from <rmi://site.domain.net/server1#model1> or <rmi://othersite.otherdomain.net/server2#model2> ... 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 slower. ... from <rmi://site.domain.net/server1#model1> xor <rmi://othersite.otherdomain.net/server2#model2> ... 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