0


【Neo4j与知识图谱】Neo4j的常用语法与一个简单知识图谱构建示例

在这里插入图片描述

文章目录

一、Cypher基本语法

Neo4j是一种基于图形结构的NoSQL数据库,它采用了Cypher查询语言来查询和操作图形数据。下面是Neo4j中语法知识的详细总结和示例:

1.创建节点和关系

在Neo4j中,可以使用CREATE语句来创建节点和关系。下面是创建一个节点的示例:

  1. CREATE (n:Person {name: 'John', age: 30})

这将创建一个标签为Person、属性为name和age的节点。

下面是创建一个关系的示例:

  1. MATCH (a:Person {name: 'John'}), (b:Person {name: 'Jane'})
  2. CREATE (a)-[:FRIENDS]->(b)

这将创建一个FROM节点a到TO节点b的FRIENDS关系。

2.查询节点和关系

在Neo4j中,可以使用MATCH语句来查询节点和关系。下面是查询所有节点的示例:

  1. MATCH (n)
  2. RETURN n

这将返回所有节点。

下面是查询两个节点之间关系的示例:

  1. MATCH (a:Person {name: 'John'})-[r:FRIENDS]->(b:Person {name: 'Jane'})
  2. RETURN r

这将返回FROM节点a到TO节点b的FRIENDS关系r。

3.更新节点和关系

在Neo4j中,可以使用SET语句来更新节点和关系的属性。下面是更新节点属性的示例:

  1. MATCH (n:Person {name: 'John'})
  2. SET n.age = 35

这将将节点n的age属性更新为35。

下面是更新关系属性的示例:

  1. MATCH (a:Person {name: 'John'})-[r:FRIENDS]->(b:Person {name: 'Jane'})
  2. SET r.since = '2022-01-01'

这将将FRIENDS关系r的since属性更新为2022年1月1日。

4.删除节点和关系

在Neo4j中,可以使用DELETE语句来删除节点和关系。下面是删除节点的示例:

  1. MATCH (n:Person {name: 'John'})
  2. DELETE n

这将删除所有名为John的Person节点。

下面是删除关系的示例:

  1. MATCH (a:Person {name: 'John'})-[r:FRIENDS]->(b:Person {name: 'Jane'})
  2. DELETE r

这将删除FROM节点a到TO节点b的所有FRIENDS关系。

二、小示例

使用Neo4j创建一个包含10个用户和20个商品以及它们之间的购买关系的知识图谱,并进行查询、修改等操作。

2.1 准备数据和创建实体和关系

我们需要准备好数据。我将用以下的CSV文件作为示例数据:

注意下面所有的文件都要放在数据库对应位置,如下图
在这里插入图片描述

users.csv

  1. userID,name
  2. user1,John Doe
  3. user2,Jane Doe
  4. user3,Bob Smith
  5. user4,Emily Jones
  6. user5,David Lee
  7. user6,Samantha Brown
  8. user7,Alice Johnson
  9. user8,Michael Davis
  10. user9,Kate Johnson
  11. user10,Ryan Wilson

products.csv

  1. productID,name,category,price
  2. product1,iPhone,Electronics,999
  3. product2,iPad,Electronics,599
  4. product3,MacBook,Electronics,1299
  5. product4,Kindle,E-Books,89
  6. product5,Harry Potter Book,Books,10
  7. product6,Game of Thrones Book,Books,12
  8. product7,MacBook Pro,Electronics,1499
  9. product8,Samsung TV,Electronics,799
  10. product9,Sony Camera,Electronics,599
  11. product10,Canon Printer,Electronics,199
  12. product11,Lenovo Laptop,Electronics,799
  13. product12,Microsoft Surface,Electronics,999
  14. product13,Fitbit Watch,Wearable,149
  15. product14,Apple Watch,Wearable,399
  16. product15,Sony Headphones,Electronics,299
  17. product16,Samsung Monitor,Electronics,199
  18. product17,Nintendo Switch,Electronics,299
  19. product18,Playstation 5,Electronics,499
  20. product19,Xbox Series X,Electronics,499
  21. product20,Bose Speakers,Electronics,349

其中,每个用户具有

  1. userID

  1. name

两个属性,每个商品具有

  1. productID

  1. name

  1. category

  1. price

四个属性。

现在,我们将使用Neo4j的Cypher语言来创建这个知识图谱。首先,我们需要使用

  1. LOAD CSV

命令将数据加载到Neo4j中。

  1. LOAD CSV WITH HEADERS FROM "file:///users.csv" AS row
  2. CREATE (:User {userID: row.userID, name: row.name})
  3. phpCopy codeLOAD CSV WITH HEADERS FROM "file:///products.csv" AS row
  4. CREATE (:Product {productID: row.productID, name: row.name, category: row.category, price: toFloat(row.price)})

接下来,我们将创建40条购买关系。我们可以使用

  1. MATCH

  1. CREATE

命令来实现这一点。例如,以下命令创建了用户1购买了商品1的关系:

  1. MATCH (u:User {userID: "user1"}), (p:Product {productID: "product1"})
  2. CREATE (u)-[:PURCHASED]->(p)

我们可以重复执行上述命令,为每个用户和商品创建购买关系。例如,以下命令创建了用户2购买了商品3的关系:

  1. MATCH (u:User {userID: "user2"}), (p:Product {productID: "product3"})
  2. CREATE (u)-[:PURCHASED]->(p)

也可以使用CSV文件直接导入:

假设我们有一个名为

  1. user_product.csv

的 CSV 文件,其中包含了用户和商品之间的购买关系。文件格式如下:

  1. UserID,ProductID
  2. user1,product1
  3. user1,product2
  4. user1,product3
  5. user2,product1
  6. user2,product2
  7. user2,product4
  8. user3,product2
  9. user3,product3
  10. user3,product4
  11. user4,product3
  12. user4,product4
  13. user4,product5
  14. user5,product1
  15. user5,product3
  16. user6,product2
  17. user6,product3
  18. user6,product4
  19. user7,product1
  20. user7,product3
  21. user8,product2
  22. user8,product3
  23. user8,product5
  24. user9,product1
  25. user9,product3
  26. user9,product4
  27. user10,product2
  28. user10,product5
  29. user1,product11
  30. user1,product12
  31. user1,product13
  32. user2,product11
  33. user2,product12
  34. user2,product14
  35. user3,product12
  36. user3,product13
  37. user3,product14
  38. user4,product13
  39. user4,product14
  40. user4,product15
  41. user5,product11
  42. user5,product13
  43. user6,product20
  44. user6,product13
  45. user6,product14
  46. user7,product11
  47. user7,product13
  48. user8,product20
  49. user8,product13
  50. user8,product15
  51. user9,product10
  52. user9,product13
  53. user9,product14
  54. user10,product12
  55. user10,product15
  56. user1,product9
  57. user1,product7
  58. user1,product3
  59. user2,product19
  60. user2,product17
  61. user2,product18
  62. user3,product16
  63. user3,product15
  64. user3,product13
  65. user4,product17
  66. user4,product20
  67. user4,product10
  68. user5,product7
  69. user5,product9
  70. user6,product8
  71. user6,product10
  72. user6,product16
  73. user7,product17
  74. user7,product18
  75. user8,product20
  76. user8,product3
  77. user8,product5
  78. user9,product10
  79. user9,product9
  80. user9,product7
  81. user10,product8
  82. user10,product6

现在我们要将这些关系导入到 Neo4j 中,我们可以使用

  1. LOAD CSV

命令来实现:

  1. LOAD CSV WITH HEADERS FROM "file:///user_product.csv" AS row
  2. MATCH (u:User {userID:row.userID})
  3. MATCH (p:Product {productID:row.productID})
  4. CREATE (u)-[:PURCHASED]->(p);

上述命令首先使用

  1. LOAD CSV

加载

  1. user_product.csv

文件,然后使用

  1. MATCH

命令将用户和商品节点匹配,并最终使用

  1. CREATE

命令创建购买关系。

2.2 进行查询修改等操作

  1. 查询商品

为了查询我们的商品,我们可以使用以下Cypher语句:

  1. MATCH (p:Product)
  2. RETURN p

这将返回所有的商品节点。
在这里插入图片描述

  1. 查询用户

为了查询我们的用户,我们可以使用以下Cypher语句:

  1. MATCH (u:User)
  2. RETURN u

这将返回我们所有的用户节点。

  1. 查询购买关系

为了查询我们的购买关系,我们可以使用以下Cypher语句:

  1. MATCH p=()-[r:PURCHASED]->() RETURN p

这将返回所有的购买关系。
在这里插入图片描述

接下来,让我们看一下如何修改我们的知识图谱中的数据。

  1. 修改商品名称

为了修改商品的名称,我们可以使用以下Cypher语句:

  1. MATCH (p:Product)
  2. WHERE p.productID = 'product1'
  3. SET p.name = 'New_product1'
  4. RETURN p

这将修改ID为“product1”的商品的名称,并返回修改后的节点。
在这里插入图片描述

删除购买关系

为了删除购买关系,我们可以使用以下Cypher语句:

  1. MATCH (u:User)-[p:PURCHASED]->(pr:Product)
  2. WHERE u.userID = 'user1' AND pr.productID = 'product2'
  3. DELETE p

这将删除用户ID为“user1”和商品ID为“product2”的购买关系。

image-20230318112032419

上面就是一个知识图谱创建的知识和示例了,期待后面更多内容。
最后欢迎关注公众号【智能建造小硕】(分享计算机编程、人工智能、智能建造、日常学习、科研和写作经验等,欢迎大家关注交流。)


本文转载自: https://blog.csdn.net/QH2107/article/details/129658674
版权归原作者 智能建造小硕 所有, 如有侵权,请联系我们删除。

“【Neo4j与知识图谱】Neo4j的常用语法与一个简单知识图谱构建示例”的评论:

还没有评论