GraphGists

在出版物和内容管理系统(CMS)领域,关于不同文章、作者、期刊和其他实体的元数据非常明显地适合用图来建模。这个示例仅模拟了该领域一个虚构域的小部分。

准备模式,使 Person 唯一

CREATE CONSTRAINT ON (p:Person) ASSERT p.handle IS UNIQUE

插入一些基本数据

CREATE
  (JM_DE:Publication{name:'Java Magazin', language:'DE'}),
  (JM_DE)<-[:ISSUE_OF]-(JMNov2013{month:11, title:'Java Magazin 11/2013'})-[:IN_YEAR]->(_2013{year:2013}),
  (Neo4j20Tutorial:Content{title:'Neo4j 2.0 Tutorial'}),
  (SnS:Publisher{name:'S&S Media'})-[:PUBLISHES]->(JM_DE),
  (JMNov2013)-[:CONTAINS]->(Neo4j20Tutorial),
  (Olli:Reader{name:'Oliver Meyer',handle:'@olli'})-[:RATED{rating:4}]->(Neo4j20Tutorial),
  (MH:Author:Reader{name:'Michael Hunger',handle:'@mesirii'})-[:AUTHORED]->(Neo4j20Tutorial),
  (Neo4j20Tutorial)-[:RELATED_TO]->(Neo4j20Rel:Content{title:'Neo4j 2.0-M05 released'})-[:TAGGED]->(NoSQL:Tag{name:'NOSQL'}),
  (Neo4j20Tutorial)-[:TAGGED]->(NoSQL),
  (Neo4j20Tutorial)-[:TAGGED]->(:Tag{name:'tutorial'}),
  (Neo4j20Tutorial)-[:TAGGED]->(:Tag{name:'Neo4j'})

查找2013年所有标记为 NOSQL 的文章

MATCH
  (year)<-[:IN_YEAR]-(issue)-[:ISSUE_OF]->(pub:Publication),
  (issue)-[:CONTAINS]->(content:Content)-[:TAGGED]->(nosql:Tag)
WHERE
  year.year = 2013 AND
  nosql.name='NOSQL'
RETURN
  content.title as Title, issue.title as Issue, pub.name as Publication
© . All rights reserved.