GraphDB
→ 返回图数据库
Ontotext 开发的 RDF 三元组存储(Triplestore),支持 OWL 推理和 SPARQL 查询。在知识图谱、生物医学、出版等领域有实际工业应用,是 Protege 建模后的典型运行时存储。
核心概念
| 概念 | 说明 |
|---|---|
| 三元组(Triple) | 主语 - 谓语 - 宾语,如 Alice - knows - Bob |
| 具名图(Named Graph) | 带名称的三元组集合,用于数据分区和版本管理 |
| Repository | 存储三元组的仓库,类似数据库实例 |
| 推理(Inference) | 根据 OWL/RDFS 规则自动推断隐含三元组 |
| 连接器(Connector) | 与 Elasticsearch、Lucene 集成全文检索 |
推理级别
| 级别 | 说明 |
|---|---|
empty | 无推理,纯存储 |
rdfs | RDFS 规则(subClassOf、subPropertyOf) |
owl-horst | OWL Horst 规则,平衡性能与表达力 |
owl-rl | OWL RL,规则推理,适合大规模数据 |
owl2-rl | OWL 2 RL,完整支持 |
SPARQL 查询
PREFIX ex: <http://example.org/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
-- 基础查询
SELECT ?s ?p ?o
WHERE { ?s ?p ?o }
LIMIT 10
-- 模式匹配
SELECT ?person ?name
WHERE {
?person rdf:type ex:Person .
?person ex:hasName ?name .
}
-- 推理查询(owl-horst 下自动推断子类实例)
SELECT ?student
WHERE {
?student rdf:type ex:Person . -- 会自动包含 Student(子类)的实例
}
-- 具名图查询
SELECT ?s ?p ?o
FROM NAMED <http://example.org/graph1>
WHERE {
GRAPH <http://example.org/graph1> { ?s ?p ?o }
}数据导入导出
# REST API 导入 Turtle 文件
curl -X POST \
-H "Content-Type: text/turtle" \
--data-binary @data.ttl \
"http://localhost:7200/repositories/myrepo/statements"
# 导出为 Turtle
curl "http://localhost:7200/repositories/myrepo/statements" \
-H "Accept: text/turtle" > export.ttl支持格式:Turtle、RDF/XML、N-Triples、N-Quads、JSON-LD
与 Neo4j 对比
| 维度 | GraphDB | Neo4j |
|---|---|---|
| 数据模型 | RDF 三元组 | 属性图(节点+关系) |
| 查询语言 | SPARQL | Cypher |
| OWL 推理 | 原生支持 | 不支持 |
| 标准互操作 | 完整 W3C 标准 | 私有格式 |
| 适用场景 | 语义 Web、本体驱动 | 关系密集业务图 |
| 学习曲线 | 较陡(需了解 RDF/OWL) | 较平缓 |
与 Protege 的关系
Protege(建模)→ 导出 OWL/Turtle → GraphDB(存储+推理+查询)
Protege 负责本体设计,GraphDB 负责运行时存储和 SPARQL 端点服务。