基于Neo4j的RDF存储模式
Neo4j Demo
三元组如下:
军长 发出 命令
军长 属于 部队
部队 subclass 国防部
发出 属于 Property
命令 属于 class
部队 属于 class
国防部 属于 class
构建语句如下:
create (person:Person{name:"军长"})
match (person:Person) where person.name='军长' return person
match (person:Person) where person.name='军长'
create (command:Command{name:"命令"}),
(army:Army{name:"部队"}),
(defense:Defense{name:"国防部"}),
(class:Class{name:"class"}),
(person)-[:发出]->(command),
(person)-[:属于]->(army),
(army)-[:属于]->(class),
(defense)-[:属于]->(class),
(command)-[:属于]->(class),
(army)-[:subClassOf]->(defense)
生成的图如下所示,不得不说Neo4j的可视化做的真不错
主要实现了如下的查询语句:
//查询command的关系
match (command:Command)-[]-(n) return command,n
//查询person满足关系“发出”和“属于”的所有三元组
match (person:Person)-[:发出]-(n),(p)-[:属于]-(q) return person,n,q,p
//查询name=军长的所有三元组
match (person:Person{name:"军长"})-[]-(n) return person,n
//查询name=军长的三元组
match m = (person:Person{name:"军长"})-[]-(n) return m
//查询name="军长",满足关系“属于”和“subClassOf”的三元组
match (person:Person)-[:属于]-(m)-[:subClassOf]-(e) where person.name="军长" return person,m,e
整个Demo请查看本人的GitHub:zhuguocheng29