基于Neo4j的RDF存储模式

基于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

Share