RDF Query in Javascript demo
Status of this document: this is early access to a work
in progress, released in current form for feedback/comments from the RDF
Interest Group. See changes log below for recent changes
and the disclaimer below for more
warnings, apologies etc if the demo fails in your browsing
environment.
Nearby in the Web: Inkling, An SquishQL RDF Query
implementation, RDFdb at
SourceForge
This demonstration accompanies the WWW Proposal
in RDF document, and shows (in some Javascript-enabled browsers) how
the combination of URI identifiers and the RDF data model allows us to
query information structures similar to those represented in the figure from the WWW
proposal.
Authors: This document, examples and rdfquery.js
glue code: Dan Brickley; based on Javascript prolog
engine by Jan Grant.
Examples
This query lists all pairs of nodes connected by an 'rdf:type' arc
Query Results (textual log)
(See also HTML table view of results in separate window)
Explanation
What exactly is going on here? When the demo works, the 'results'
textarea and a separate HTML browser window are used to display the
results of RDF queries. These are run locally in Javascript; the only role
played by the server is fileserving. See the files prolog.js and rdfquery.js
for the implementation. The latter file (and some crude edits to
prolog.js) allow Javascript code in this document to send queries, data
and rules to the core prolog.js system. The query language shown here is
an ad-hoc Prolog derrivative. Capital letters denote variables; query results
consist of a series of sets of variable to resource/literal bindings.
The syntax is an extended form of Prolog which uses
URIs (indicated by {curly-braces} and "quoted strings". Although not shown
here, the system also supports the expression of simple inference
rules; see Jan Grant's Prolog
in Javascript page for examples of this. To augment the ruleset and
database, simply edit the large textarea at the foot of this page.
RDF Database
Note that the above queries are over the RDF
statements listed below. An interactive version of
this demo is in development (not always available) that allows multiple
networked RDF datasources and description services to be consulted.
Since we do not have access to an RDF or XML parser within the current Javascript
application, the query system instead consumes an alternative
'triples'-based representation of RDF. This is trivial to emit from
server-based RDF parser. It would also be nice to explore XSL-to-RDF
translations of 'colloquial' XML data...
The data shown below is in the form {predicate} ( {subject}, {object} ).
One RDF statement per line.
Recent Changes
- 1999-11-20: Fixed IE-5 compatibility (reworked rdfquery.js to avoid using 'push' method on Array objects)
Disclaimer: this demo uses clientside Javascript to
demonstrate an RDF Query prototype implementation. There are known
problems with some Javascript implementations. For non-JS environments,
see the RDF pages for a number of other logic and
query systems applicable to RDF. Note that a query with 0 results will
currently result in an error; this is due to danbri's code in rdfquery.js
and not a failing in Jan Grant's prolog engine!
Known bugs: some problems on Macintosh (Netscape Navigator) at least,
possibly to do with line ending characters. Javascript errors in Win32
Navigator 4.06.
Please note, these pages do not currently validate
properly; this will be fixed as soon as this document's author learns enough Javascript to Do The
Right Thing and fix the use of the 'NAME' attribute.
$Id: rdfqdemo.html,v 1.2 2001/07/28 01:06:29 danbri Exp $