I'm using a public graph that I download and load on Blazegraph. I'm now familiar with SELECT and CONSTRUCT requests on this graph. I don't know if that matters, but the graph includes multiple prefixes:
@prefix schema: <http://schema.org/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix olo: <http://purl.org/ontology/olo/core#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .
....
I would now like to have another graph with internal data (e.g. user accounts) given that there will be links with the public graph (e.g. whether a user "liked" a node of the public graph);
I would like to keep these two graphs separate, for example to:
- replace the public graph with a new version when it's updated
- save a backup of my internal graph
- ...
How to do that ? Are there good practices ?
A couple solutions come to mind.
Solution 1: Named Graphs
It's possible to, in a single graph database, segment your data into subgraphs (formally known as named graphs). This allows you to logically separate your queries. For example,
The SPARQL spec has more information on querying from them.
Solution 2: Separate Blazegraph Instances With Federated Queries
Another solution is to have two Blazegraph instances running, each with different types of data. You can federate your queries from one to the other to perform a union of the data
Solution 3: Move off Blazegraph
Blazegraph is for all practical purposes, dead. More modern DBMS will allows you to run multiple graphs on the same instance. For example, GraphDB or Stardog.