一、Cypher基本語法
Neo4j是一種基于圖形結(jié)構(gòu)的NoSQL數(shù)據(jù)庫,它采用了Cypher查詢語言來查詢和操作圖形數(shù)據(jù)。下面是Neo4j中語法知識的詳細(xì)總結(jié)和示例:
1.創(chuàng)建節(jié)點和關(guān)系
在Neo4j中,可以使用CREATE語句來創(chuàng)建節(jié)點和關(guān)系。下面是創(chuàng)建一個節(jié)點的示例:
CREATE (n:Person {name: 'John', age: 30})
這將創(chuàng)建一個標(biāo)簽為Person、屬性為name和age的節(jié)點。
下面是創(chuàng)建一個關(guān)系的示例:
MATCH (a:Person {name: 'John'}), (b:Person {name: 'Jane'})
CREATE (a)-[:FRIENDS]->(b)
這將創(chuàng)建一個FROM節(jié)點a到TO節(jié)點b的FRIENDS關(guān)系。
2.查詢節(jié)點和關(guān)系
在Neo4j中,可以使用MATCH語句來查詢節(jié)點和關(guān)系。下面是查詢所有節(jié)點的示例:
MATCH (n)
RETURN n
這將返回所有節(jié)點。
下面是查詢兩個節(jié)點之間關(guān)系的示例:
MATCH (a:Person {name: 'John'})-[r:FRIENDS]->(b:Person {name: 'Jane'})
RETURN r
這將返回FROM節(jié)點a到TO節(jié)點b的FRIENDS關(guān)系r。
3.更新節(jié)點和關(guān)系
在Neo4j中,可以使用SET語句來更新節(jié)點和關(guān)系的屬性。下面是更新節(jié)點屬性的示例:
MATCH (n:Person {name: 'John'})
SET n.age = 35
這將將節(jié)點n的age屬性更新為35。
下面是更新關(guān)系屬性的示例:
MATCH (a:Person {name: 'John'})-[r:FRIENDS]->(b:Person {name: 'Jane'})
SET r.since = '2022-01-01'
這將將FRIENDS關(guān)系r的since屬性更新為2022年1月1日。
4.刪除節(jié)點和關(guān)系
在Neo4j中,可以使用DELETE語句來刪除節(jié)點和關(guān)系。下面是刪除節(jié)點的示例:
MATCH (n:Person {name: 'John'})
DELETE n
這將刪除所有名為John的Person節(jié)點。
下面是刪除關(guān)系的示例:
MATCH (a:Person {name: 'John'})-[r:FRIENDS]->(b:Person {name: 'Jane'})
DELETE r
這將刪除FROM節(jié)點a到TO節(jié)點b的所有FRIENDS關(guān)系。
二、小示例
使用Neo4j創(chuàng)建一個包含10個用戶和20個商品以及它們之間的購買關(guān)系的知識圖譜,并進(jìn)行查詢、修改等操作。
2.1 準(zhǔn)備數(shù)據(jù)和創(chuàng)建實體和關(guān)系
我們需要準(zhǔn)備好數(shù)據(jù)。我將用以下的CSV文件作為示例數(shù)據(jù):
注意下面所有的文件都要放在數(shù)據(jù)庫對應(yīng)位置,如下圖
users.csv
userID,name
user1,John Doe
user2,Jane Doe
user3,Bob Smith
user4,Emily Jones
user5,David Lee
user6,Samantha Brown
user7,Alice Johnson
user8,Michael Davis
user9,Kate Johnson
user10,Ryan Wilson
products.csv
productID,name,category,price
product1,iPhone,Electronics,999
product2,iPad,Electronics,599
product3,MacBook,Electronics,1299
product4,Kindle,E-Books,89
product5,Harry Potter Book,Books,10
product6,Game of Thrones Book,Books,12
product7,MacBook Pro,Electronics,1499
product8,Samsung TV,Electronics,799
product9,Sony Camera,Electronics,599
product10,Canon Printer,Electronics,199
product11,Lenovo Laptop,Electronics,799
product12,Microsoft Surface,Electronics,999
product13,Fitbit Watch,Wearable,149
product14,Apple Watch,Wearable,399
product15,Sony Headphones,Electronics,299
product16,Samsung Monitor,Electronics,199
product17,Nintendo Switch,Electronics,299
product18,Playstation 5,Electronics,499
product19,Xbox Series X,Electronics,499
product20,Bose Speakers,Electronics,349
其中,每個用戶具有userID
和name
兩個屬性,每個商品具有productID
、name
、category
和price
四個屬性。
現(xiàn)在,我們將使用Neo4j的Cypher語言來創(chuàng)建這個知識圖譜。首先,我們需要使用LOAD CSV
命令將數(shù)據(jù)加載到Neo4j中。
LOAD CSV WITH HEADERS FROM "file:///users.csv" AS row
CREATE (:User {userID: row.userID, name: row.name})
phpCopy codeLOAD CSV WITH HEADERS FROM "file:///products.csv" AS row
CREATE (:Product {productID: row.productID, name: row.name, category: row.category, price: toFloat(row.price)})
接下來,我們將創(chuàng)建40條購買關(guān)系。我們可以使用MATCH
和CREATE
命令來實現(xiàn)這一點。例如,以下命令創(chuàng)建了用戶1購買了商品1的關(guān)系:
MATCH (u:User {userID: "user1"}), (p:Product {productID: "product1"})
CREATE (u)-[:PURCHASED]->(p)
我們可以重復(fù)執(zhí)行上述命令,為每個用戶和商品創(chuàng)建購買關(guān)系。例如,以下命令創(chuàng)建了用戶2購買了商品3的關(guān)系:
MATCH (u:User {userID: "user2"}), (p:Product {productID: "product3"})
CREATE (u)-[:PURCHASED]->(p)
也可以使用CSV文件直接導(dǎo)入:
假設(shè)我們有一個名為 user_product.csv
的 CSV 文件,其中包含了用戶和商品之間的購買關(guān)系。文件格式如下:
UserID,ProductID
user1,product1
user1,product2
user1,product3
user2,product1
user2,product2
user2,product4
user3,product2
user3,product3
user3,product4
user4,product3
user4,product4
user4,product5
user5,product1
user5,product3
user6,product2
user6,product3
user6,product4
user7,product1
user7,product3
user8,product2
user8,product3
user8,product5
user9,product1
user9,product3
user9,product4
user10,product2
user10,product5
user1,product11
user1,product12
user1,product13
user2,product11
user2,product12
user2,product14
user3,product12
user3,product13
user3,product14
user4,product13
user4,product14
user4,product15
user5,product11
user5,product13
user6,product20
user6,product13
user6,product14
user7,product11
user7,product13
user8,product20
user8,product13
user8,product15
user9,product10
user9,product13
user9,product14
user10,product12
user10,product15
user1,product9
user1,product7
user1,product3
user2,product19
user2,product17
user2,product18
user3,product16
user3,product15
user3,product13
user4,product17
user4,product20
user4,product10
user5,product7
user5,product9
user6,product8
user6,product10
user6,product16
user7,product17
user7,product18
user8,product20
user8,product3
user8,product5
user9,product10
user9,product9
user9,product7
user10,product8
user10,product6
現(xiàn)在我們要將這些關(guān)系導(dǎo)入到 Neo4j 中,我們可以使用 LOAD CSV
命令來實現(xiàn):
LOAD CSV WITH HEADERS FROM "file:///user_product.csv" AS row
MATCH (u:User {userID:row.userID})
MATCH (p:Product {productID:row.productID})
CREATE (u)-[:PURCHASED]->(p);
上述命令首先使用 LOAD CSV
加載 user_product.csv
文件,然后使用 MATCH
命令將用戶和商品節(jié)點匹配,并最終使用 CREATE
命令創(chuàng)建購買關(guān)系。
2.2 進(jìn)行查詢修改等操作
- 查詢商品
為了查詢我們的商品,我們可以使用以下Cypher語句:
MATCH (p:Product)
RETURN p
這將返回所有的商品節(jié)點。
- 查詢用戶
為了查詢我們的用戶,我們可以使用以下Cypher語句:
MATCH (u:User)
RETURN u
這將返回我們所有的用戶節(jié)點。
- 查詢購買關(guān)系
為了查詢我們的購買關(guān)系,我們可以使用以下Cypher語句:
MATCH p=()-[r:PURCHASED]->() RETURN p
這將返回所有的購買關(guān)系。
接下來,讓我們看一下如何修改我們的知識圖譜中的數(shù)據(jù)。
- 修改商品名稱
為了修改商品的名稱,我們可以使用以下Cypher語句:
MATCH (p:Product)
WHERE p.productID = 'product1'
SET p.name = 'New_product1'
RETURN p
這將修改ID為“product1”的商品的名稱,并返回修改后的節(jié)點。
刪除購買關(guān)系
為了刪除購買關(guān)系,我們可以使用以下Cypher語句:
MATCH (u:User)-[p:PURCHASED]->(pr:Product)
WHERE u.userID = 'user1' AND pr.productID = 'product2'
DELETE p
這將刪除用戶ID為“user1”和商品ID為“product2”的購買關(guān)系。
文章來源:http://www.zghlxwxcb.cn/news/detail-442591.html
上面就是一個知識圖譜創(chuàng)建的知識和示例了,期待后面更多內(nèi)容。
最后歡迎關(guān)注公眾號【智能建造小碩】(分享計算機(jī)編程、人工智能、智能建造、日常學(xué)習(xí)、科研和寫作經(jīng)驗等,歡迎大家關(guān)注交流。)文章來源地址http://www.zghlxwxcb.cn/news/detail-442591.html
到了這里,關(guān)于【Neo4j與知識圖譜】Neo4j的常用語法與一個簡單知識圖譜構(gòu)建示例的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!