Re: Intellidimension RDF Gateway Package for URI Query Agent (URIQA) Specification

> >
> > > I've got a few preliminary comments/questions (more sure to be
coming):
> > >
> > > 1. One thing I noted when going through the online documentation for
> your
> > > URIQA package, in the definition
> > >
> > > function Package_OnPutDescription()
> > > {
> > >     if (Request.serverVariables["HTTP_URI_RESOLUTION_MODE"] !=
> > > "Description")
> > >     {
> > >         Response.statusCode = 501;
> > >         return; // Not a URIQA request
> > >     }
> > >
> > >     // Get the URI of the resource from the request
> > >     var id = new Resource(Request.serverVariables["REQUEST_URL"]);
> > >
> > >     // Read the resource description from the request and parse the
> > contents
> > >     // as RDF/XML using the Inet data service.
> > >     var data = Request.binaryRead();
> > >
> > >     var ds = new DataSource("inet?parsetype=rdf&src=" +
> > > Server.urlEncode(data));
> > >
> > >     // Add only the statements about the resource to the description
> > table.
> > >     var rs = (INSERT {?p ?s ?o} INTO uriqa USING #ds RULEBASE uriqa
> > >         WHERE (?s=#id OR getAnon(#id, ?s)) AND {?p ?s ?o});
> > >
> > >     Response.addHeader("URI-Resolution-Mode", "Description");
> > > }
> > >
> > > your implementation would fail to commit any reifications or
> > > statements about any anonymous node values.
> > > Ideally, there would exist as part of the URIQA package, a generic
> > > method akin to getDescription() in my Java implementation, which
> > > given a URI and a knowledge base, would extract a concise bounded
> > > description of the resource from the knowledge base. The input RDF/XML
> > > could then be parsed and loaded into a temporary knowledge base, the
> > > description extracted, and then committed to the persistent knowledge
> > > base. Of course, that same function would find use throughout all of
> > > the URIQA defined behavior of the package, for the other methods as
> well.
> > >
> >
> > The implementation above makes use of two tables. The first table "ds"
is
> a
> > local in-memory table that is loaded by parsing the posted RDF/XML. The
> > second table "uriqa" is a global disk-based table that acts as the
> > application's knowledge repository. The INSERT command shown above
copies
> > all of the statements about the request URI ("id") from the request into
> the
> > repository. This command makes use of an inference rule "getAnon" (see
> > below) that recursively returns the uri's of all embedded anonymous
nodes.
> > This ensures that all statements about the anonymous node are also
> inserted
> > into the knowlege repository.
> >
> > INFER getAnon(?s, ?anon) FROM ({?p ?s ?anon} AND (substr(?anon, 0,
> > 5)="guid:") OR getAnon(?s, ?anon));
>
> Right. Missed that.
>
> OK then for anonymous nodes. How about reifications? ;-)
>

What are you looking for w.r.t reifications, statements by the URI or about
the URI or both? The answer either way would be to use inference rules*.

*I should say to use the correct inference rules, the one shown above is
incorrect (so much for my logic programming). I will fix the rules with the
addition reification and update the URIQA sample package on our site.

Received on Wednesday, 2 July 2003 09:07:47 UTC