我正在使用在 Blazegraph 上下载并加载的公共图表。 我现在熟悉该图上的 SELECT 和 CONSTRUCT 请求。 我不知道这是否重要,但该图包含多个前缀:
@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/> .
....
我现在想要另一个包含内部数据的图表(例如用户帐户),因为将存在与公共图的链接(例如用户是否“喜欢”公共图的节点);
我想将这两个图分开,例如:
如何做到这一点? 有好的做法吗?
我想到了几个解决方案。
可以在单个图形数据库中将数据分割成子图(正式称为命名图)。这允许您在逻辑上分离查询。例如,
INSERT DATA {
GRAPH <http://example/my_public_graph> {
subject pred obj .
}
}
SPARQL 规范有更多关于从它们查询的信息。
另一个解决方案是运行两个 Blazegraph 实例,每个实例具有不同类型的数据。您可以将查询从一个查询联合到另一个查询以执行数据并集
Blazegraph 对于所有实用目的来说已经死了。更现代的 DBMS 将允许您在同一实例上运行多个图形。例如,GraphDB 或 Stardog。