- From: Patrick Stickler <patrick.stickler@nokia.com>
- Date: Thu, 3 Jul 2003 10:54:12 +0300
- To: "ext Derrish Repchick" <drepchick@intellidimension.com>, <www-rdf-interest@w3.org>
----- Original Message ----- From: "ext Derrish Repchick" <drepchick@intellidimension.com> To: <www-rdf-interest@w3.org> Sent: 02 July, 2003 16:13 Subject: 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. Cool. Patrick
Received on Thursday, 3 July 2003 03:54:43 UTC