I’m curious about how you get your LDP to be SPARQLable. Here’s what I believe is true, but please fix my thinking
LDP is primarily a document store. The LDP infrastructure let’s me automate the browsing of that document store.
Virtuoso, God bless them, makes it possible to SPARQL over RDF documents that are POSTed or PUT into that store (as far as I can tell, this only works for Turtle? I have never successfully been able to SPARQL a JSON-LD document)
And here’s where my real questions begin
it seems to be possible to PATCH a document. This is very cool! … But that’s not a “normal” behavior for a document store!
every document, and every container, becomes a named graph. Love it!
when I create SPARQL queries that span multiple documents, they will often time-out UNLESS I split the query into separate pieces that use independent GRAPH ?g clauses… If I do that, the query response is almost instant! These are not complicated queries… If all of the triples were in a single triplestore, the query would answer almost immediately…
All of this leads me to believe that the documents in the LDP server are being consumed at query-time, rather than being constantly indexed in the back-end triplestore. Is that true?
this belief is further supported by the fact that I can only request a document in the format that it was originally POSTed (e.g. I cannot request an ntriples representation of a document that was POSTed in Turtle)… So it’s clear that you’re not absorbing that document into the triplestore, and then dynamically generating it based on it’s named graph… The document seems (behaviorally) to be a “physical” thing…
This is only important because it becomes necessary to know, a priori, what the data structure is, before you construct the query - i.e. I need to know which triples are in which graph. This is frustrating, though not a total blocker in most cases.
And if Virtuoso is storing documents, then what is the PATCH doing? Is it modifying the document? Or are the patches being applied at the time I download it from it’s URL?
So many questions