SWI RDF-DB (was SWI, XPCE, C and Python)

SWI RDF-DB (was SWI, XPCE, C and Python)

Post by Jan Wielem » Tue, 09 Feb 2010 22:57:14



Since a while, we had a lot of trouble generating a binary installer
that realised working X11 bindings. The ones for Snow Leopard are ok.
Since yesterday, the ones for Leopard might be ok as well.


Thanks. Applied.


Maybe not, but the combination of inreferencing and named graphs is not
very clear. Quite often, the schema information is in graph Y, while the
data is in graph X. Does querying graph X now produce the entailment
that can only be produced using triples from Y? Probably not, but at
least this means we must be able to query a set of graphs.

Graphs were added to the system for source-location administration. That
is useful. Using them in reasoning is a bit more tricky :-( At some
point I was thinking of a dependency(/import) protocol, where you can
specify that graph X imports graph Y. That would make such usage much
more meaningful. Unfortunately, the reasoning is much more complicated.

At the moment, one must already be aware that rdf/4 is merely
post-filtering over the indexed rdf/3 database. Full indexing is quite
feasible over 3 fields, but 4 doubles the indexes :-(

Cheers --- Jan
 
 
 

SWI RDF-DB (was SWI, XPCE, C and Python)

Post by William Wa » Wed, 10 Feb 2010 02:21:18


Good point, it's harder than it appears at first. I've developed the
habit from 4store of using named graphs for presentation, that is,
URI dereferencing. Ask the web server for http://www.yqcomputer.com/
it looks in the triplestore for a graph called that and returns
whichever triples it finds. This is much nicer (and computationally
much cheaper) than doing searches on the actual triple. Even so,
you are right, I would not normally have schema information in that
graph.


Which is related to one of the problems that led me to SWI-Prolog in
the first place: attribution and versioning. I suppose arbitrary atoms
and functors can be put in the line part of the graph:line context.

However probably a better place for that is in the transaction
journal,
though to be honest it isn't obvious to me how to query the journal,
how would one effeciently retrieve the log messages and timestamps
pertaining to a particular known triple, for example?


The other use case I had in mind was as a replacement for doing
forward reasoning (using a python package called FuXi) explicitly
by hand for mundane tasks like filling in backlinks. Something
like what you describe here would solve it. The alternative
since there is no index on the graph is to simply nail down the
subject where URIs are being dereferenced...

Or else use it offline to do the forward reasoning as I am doing
now with FuXi only better and more efficiently, basically to fill
out data that goes into 4store for "static" serving...

Cheers,
-w