I need to represent electronic health records in RDF. This kind of data is time dependent. So, I want to represent them as events. I want to use something similar to a Datomic database. Datomic uses triples with an added transaction field. This extra field is time stamped and can have user-defined metadata. I want to use named graphs to record transaction/time data.
For instance, in the query below, I only search triples of graphs from a certain editor created on a certain date:
SELECT ?name ?mbox ?date
WHERE {
?g dc:publisher ?name ;
dc:date ?date .
GRAPH ?g
{ ?person foaf:name ?name ; foaf:mbox ?mbox }
}
Queries like this one would solve my problem. My concerns are:
- I will end up with millions of named graphs. Will they make the SPARQL queries too slow?
- The triple store I am using, Blazegraph, has support for inference (entailments) but states that: "Bigdata does not support inference in the quads mode out of the box." Which triple stores do support inference using quads (named graphs)?
- Is there a better way to represent this kind of data in RDF? Some kind of best practices guideline?