- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Mon, 28 Jun 2004 19:43:42 +0100
- To: public-rdf-dawg@w3.org
An Evaluation of Algae (or Algae2) [algae+] supports a requirement or design objective [algae-] does not support it [algea?] unknown or undeterminable Algae is described at http://www.w3.org/2004/05/06-Algae/ and is used in the W3C Annotea Server and implemented in Perl. In general Algae looks like: ns rss=<<http://purl.org/rss/1.0/> ns prose=<http://example.org/proseInfo#> read <http://example.org/some-data> () read <file:mydata.rdf> (inputlang=\"rdf\") ask ( ?article <http://purl.org/rss/1.0/title> ?title . ?article <http://purl.org/rss/1.0/link> ?link . ?article <http://purl.org/rss/1.0/description> ?description ?article prose:wordCount ?words { ?words < 1000 }. ) collect (?title ?link ?description ?words) The execution is done in the order specified in the file so that multiple read(...) ask(...) etc. can be performed, extending the query graph as well as supplementing the results. There are other keywords not described here, such as attach for connecting to a store (in a SQL database). Requirements ------------ [algae+] 3.1 RDF Graph Pattern Matching ?article <http://purl.org/rss/1.0/title> ?title [algae+] 3.2 Variable Binding Results collect (?title ?link ?description ?words) [algae-] 3.3 Extensible Value Testing an extensibility declaration "requires" exists but not for value testing. [algae-] 3.4 Subgraph Results [algae+] 3.5 Local Queries the default is local/in-memory and can also read from file URIs, databases. [algae+] 3.6 Optional Match The ~ term inside ask(..) allows optional matches such as: ~?article foaf:mbox ?mbox . which are declared to be analogous to SQL outer joins, and implemented as such. [algae+] 3.7 Limited Datatype Support Integers, floating point literals, strings, datatyped strings and a variety of common numeric, boolean and comparison operators. ?article prose:wordCount ?words { ?words < 1000 }. [algae?] 3.8 Bookmarkable Queries [algae-] 3.10 Result Limits The document claims limits are implemented in the core profile but the language does not seem to have a way to use them. [Typo? "required features" or "requires features" the doc has both] [algae-] 3.11 Iterative Query [algae+] 3.12 Streaming Results Design Objectives ----------------- [algae-] 4.1 Human-friendly Syntax IMHO of course: - terse keywords ('ns', 'slurp') [although 'namespace' is also legal] - lispy brackets in an XML world :) - '.' triple separator versus more typical ',' and ';' - many operators - unfamiliar graph operators || |& |- [algae+] 4.2 Provenance After reading the explanation in http://lists.w3.org/Archives/Public/public-rdf-dawg/2004AprJun/0519 algae provides this by %ATTRIB and can be constrained or assigned to variables in a clause after a triple: ?an a:body ?body { %ATTRIB == <http://example.com/a1.rdf> } This is also used for constraining literal datatypes, languages and XML encodings (%DATATYPE, %LANG and %ENCODING) [Typo? document says %ATTRIB, email says %PROV] [algae-] 4.3 Non-existent Triples [algae-] 4.4 User-specifiable Serialization [algae+] 4.5 Aggregate Query Conjunction, shortcut disjunction, union disjunction and merged union disjunction are present. [algae-] 4.6 Additional Semantic Information [algae-] 4.7 Bandwidth-efficient Protocol [algae-] 4.8 Literal Search [algae-] 4.9 Boolean Query But I find this design objective difficult to understand, as written.
Received on Monday, 28 June 2004 14:45:34 UTC