Re: Scope

Hi dan, libby, et al,

I'll go next...

We've developed a query and inference server for RDF that runs on Win32
called RDF Gateway. For those of you who haven't seen it, it's an rdf-based
deductive database with a SQL-like query language. It supports rules,
transactions, federated queries against multiple triple tables and external
data sources (rdf files, web sites, etc through an external data service
interface), supports simultaneous connections, users with role-based
security, and lots of other cool stuff. It's in-memory and provides
persistence through sql backends (tested with ms sql server and oracle).
It's accessed by clients via a socket-based protocol, win32 client libs,
ADO, or JDBC( this last one's alpha quality). We've also written to go along
with it a scriptable crawler, a query tool, and a nice management app. A 2nd
beta was recently released an is available for download at
www.intellidimension.com if you're interested in checking it out.

We'd originally prototyped the server on top of SWI prolog, but switched to
our own custom implementation of a deductive database when we found we
couldn't get the performance we wanted. The set-at-a-time vs.
tuple-at-a-time of the ddb vs prolog and simple comparison vs unification
seem to make a big difference (especially if you have a lot of recursively
inferred values).

We type values internally (either Uri or Literal at this point) and type the
return values as well. We'll likely add to those in the future (I'm watching
the datatype discussions of the core wg with great interest.) We have a
pretty good collection of functions - math, datetime, string (including
regex), and a few aggregation functions (eg count). We support either
triples or quads (pso + statement/context id). We support AND, OR, NOT
(negation as failure), = (label and type only), and misc other operators.
Our inference languages is pretty straight forward -allows you to infer a
triple from what is syntactically equivalent to a select - for example:

    infer {[rdfs:subClassOf] ?a ?c} from {[rdfs:subClassOf] ?a ?b} and
{[rdfs:subClassOf] ?b ?c}

We currently give no explicit control over variable quantification. We do
some level of query optimization but plan to do more. We make some attempt
to resolve stratification issues but you can definitely break things (i.e.
get incorrect results) with too much use of negation and aggregation
functions.

I'll stop...probably already more than you wanted to know :)

Regards,

Geoff Chappell

Received on Wednesday, 7 November 2001 20:22:22 UTC