- From: Derrish Repchick <drepchick@intellidimension.com>
- Date: Wed, 2 Jul 2003 09:13:09 -0400
- To: <www-rdf-interest@w3.org>
> > > > > 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