Re: [ANN] Nemo (i.e. why I wrote Nemo)


James Cerra wrote:
> Wow, thank's for the skinnny on 3Store and
> Triplestore.  It seems very impressive (more than
> anything I'd come up with).  Your stylesheet was also
> pretty insightful.

Thanks, it's not much, just an iteration on the XML output of
Triplestore, queried with RDQL via HTTP.

The fact that Triplestore returns triples as XML and not as RDF/XML
ease the processing with XSL.
> To answer your question, the other well-known programs
> to query arbitrary RDF datastores include:
>   * RDF Twig 
>   * Treehugger
> There has been more work done; however most of the
> other approaches only transform a subset or
> "normalized" form of RDF/XML 

However normalized would be the RDF/XML, is not the real thing (RDF),
playing with the RDF as RDF/XML with XSL might be risky (ie. like
playing XML with Regexp and not a XML parser).

Also using an external/real RDF store may promote some useful inference.
> IMHO, there are a few issues with the design of
> Treehugger and RDF Twig (and Triplestore, from an
> initial look):
>   * I don't think that XPath by itself should be used
> to query RDF.  It was designed for searching trees and
> not arbitrary graphs.  So RDF Twig, Treehugger, and
> others reserialize the graph into documents that are
> easier to use with XPath.  However, this makes it hard
> to construct queries if you don't know the details of
> the initial serialization.  (i.e. Should I query for
> ./@rdf:resource or ./rdf:resource?)

XPath is handy, but any `RDF/XPath' would be synthetizable by RDQL; as
long there is a method to convert on the fly a `RDF/XPath' to RDQL, I
think everybody will be happy.

BTW, check also RxPath [1]

>   * The results are returned as another XML document
> or XML fragment.  This means that another tree has to
> be built - isn't that inefficient?  If there are a lot
> of nodes queried, this could mean a lot of memory is
> used.

Yes, but is the only solution when you query `remote' stores and
especially when you want to keep the XSL portable.

My toy was intended to be able to query a remote RDF store even if the
XSL was applied by a browser. I also intend to add `functions' (via
xsl:template) to resemble the RDFlib API [2].

>   * They seem to concentrate on quereies stored in
> seperate files.  For my purposes, it is more
> advantageous to query rdf data that is embedded in a
> file.

hmmm, having external metadata for the processed resource seems to be
more widespread?

> Nemo also returns the results of a query as an
> iterator that lazily evaluates each query only when
> the XSLT processor uses it.  This saves resources (I
> hope) when accessing large datastores.

On large result set, more important would be to handle multiple
queries on the same graph without parsing it at every query and I see
that you already did that :)

> Furthermore, Nemo allows rdf/xml to be retrieved from
> a branch of the XML document rather than a seperate
> document.  This is important, since I plan on
> embedding RDF data directly into my documents.
> That's why I wrote Nemo.

Very nice work.

[1] RxPath
[2] RDFlib
Laurian Gridinoc
Chief Developer

Received on Tuesday, 30 November 2004 19:58:17 UTC