[Neo4j系列四]Neo4j的python操作庫py2neo之一

2021-03-02 Python與知識圖譜

   前面三篇文章分別介紹Neo4j的安裝、導入RDF數據、Cypher查詢語言,Neo4j是基於Java開發的圖資料庫,有非常友好的Java API,當然現在也已經支持python操作使用。本文主要介紹python中適配Neo4j的庫py2neo的關於節點、關係、子圖基本內容。

1. py2neo的安裝

pip install py2ne

pip install git+https://github.com/nigelsmall/py2neo.git#egg=py2neo

2. Node、Relationships、Properties

>>> from py2neo import Node, Relationship

>>> a = Node("Person", name="Alice")

>>> b = Node("Person", name="Bob")

>>> ab = Relationship(a, "KNOWS", b)

>>> ab

(alice)-[:KNOWS]->(bob)

新建兩個節點a、b,分別具有一個name屬性值,還新建a與b之間有向關係ab,ab的label為KNOWS。

class Node(*labels, **properties) 新建node可以指定label和屬性

hash(node) 返回node的ID的哈希值

node[key] 返回node的屬性值,沒有此屬性就返回None

node[key] = value 設定node的屬性值

del node[key] 刪除屬性值,如果不存在此屬性報KeyError

len(node) 返回node屬性的數量

dict(node) 返回node所有的屬性

walk(node) 返回一個生成器且只包含一個node

labels() 返回node的標籤的集合

has_label(label) node是否有這個標籤

add_label(label) 給node添加標籤

remove_label(label) 刪除node的標籤

clear_labels() 清楚node的所有標籤

update_labels(labels) 添加多個標籤,注labels為可迭代的

class Relationship(start_node, type, end_node, **properties) 

class Relationship(start_node, end_node, **properties)

class Relationship(node, type, **properties)

class Relationship(node, **properties)

新建關係可以指定起止node,type或屬性值

>>> c = Node("Person", name="Carol")

>>> class WorksWith(Relationship): pass

>>> ac = WorksWith(a, c)

>>> ac.type()

'WORKS_WITH'

hash(relationship) 返回一個關係的hash值

relationship[key] 返回關係的屬性值

relationship[key] = value 設定關係的屬性值

del relationship[key] 刪除關係的屬性值

len(relationship) 返回關係的屬性值數目

dict(relationship) 以字典的形式返回關係的所有屬性

walk(relationship) 返回一個生成器包含起始node、關係本身、終止node

type() 返回關係type

class PropertyDict(iterable, **kwargs) 新建屬性字典類

properties[key] 返回屬性值

properties[key] = value 設定屬性值

setdefault(key, default=None) 如果這個屬性不存在,則插入新屬性並設置默認值,存在的話就返回屬性值。

update(iterable=None, **kwargs) 更新屬性值

3. Subgraphs

子圖是節點與關係的集合

>>> s = ab | ac

>>> s

{(alice:Person {name:"Alice"}),

 (bob:Person {name:"Bob"}),

 (carol:Person {name:"Carol"}),

 (alice)-[:KNOWS]->(bob),

 (alice)-[:WORKS_WITH]->(carol)}

>>> s.nodes()

frozenset({(alice:Person {name:"Alice"}),

           (bob:Person {name:"Bob"}),

           (carol:Person {name:"Carol"})})

>>> s.relationships()

frozenset({(alice)-[:KNOWS]->(bob),

           (alice)-[:WORKS_WITH]->(carol)})


class Subgraph(nodes, relationships) 子圖是節點與關係不可變的集合

subgraph | other | ... 子圖的並

subgraph & other & ... 子圖的交

subgraph - other - ... 子圖的差

subgraph ^ other ^ ... 子圖對稱差

subgraph.keys() 返回子圖節點和關系所有屬性的集合

subgraph.labels() 返回節點label的集合

subgraph.nodes() 返回所有節點的集合

subgraph.relationships() 返回所有關係的集合

subgraph.types() 返回所有關係的type的集合

order(subgraph) 返回子圖節點的數目

size(subgraph) 返回子圖關係的數目

4. Walkable

>>> w = ab + Relationship(b, "LIKES", c) + ac

>>> w

(alice)-[:KNOWS]->(bob)-[:LIKES]->(carol)<-[:WORKS_WITH]-(alice)


class Walkable(iterable) 子圖帶著可遍歷的信息

walkable + other + ... 串聯walkable

walk(walkable) 轉為一個生成器包含節點和關係

start_node() 返回walk()的起始節點

end_node() 返回walk()的最後節點

nodes() 返回walk()所有節點的元組

relationships() 返回walk()所有關係的元組

參考:http://py2neo.org/v3/index.html

相關焦點

  • [Neo4j系列五]Neo4j的python操作庫py2neo之二
    上一篇文章主要介紹python中適配Neo4j的庫py2neo的關於節點、關係、子圖基本內容,本文繼續介紹py2neo中Graph、事務、
  • Python3+Neo4j+flask,汽車行業知識圖譜項目實戰!
    1.基於知識圖譜的問答系統:目前通過前端限定用戶通過指定的格式來輸入問題, 然後通過查詢知識圖譜的形式來回答2.本次跟新介紹:1.考慮到後續數據量大,將資料庫從Mysql替換為Neo4j2.新增5個http接口3.支持多層查詢與存儲,考慮到查詢的時間消耗,建議不超過3層3.http接口說明:詳細說明:data/http接口說明.txt查詢單個實體,支持查詢深度限制,深度為3時,查詢時間為3.5s,深度為4時,查詢時間為
  • Task 5 Neo4j 圖資料庫查詢
    首先安裝py2neo,pip install py2neograph=Graph("http://localhost:7474",username="neo4j", password="neo4j")3.1.根據不同的實體和意圖構造
  • Python驅動下的neo4j
    作者:zhaikun   風控建模屌絲一枚,現居於北京個人微信公眾號:Python數據分析與評分卡建模前文連結:帶你走進圖資料庫——Neo4j的大門Neo4j與Python結合,實現網頁排名算法與最小社區探測最近學習neo4j
  • 知識圖譜實戰系列四:neo4j的介紹和使用
    知識圖譜中,知識的組織形式採用的就是圖結構,所以非常適合用neo4j進行存儲。圖資料庫的優勢在於:數據存儲形式neo4j的數據存儲形式 主要是 節點(node)和 邊(edge) 來組織數據。查詢語言cypherneo4j採用自己設計的查詢語言cypher,其特點和sql有很多相似的地方。
  • Neo4j 1.3 Milestone 2 發布
    Neo4j 1.3.M02 now contains: neo4j-kernel: core graphdb engine neo4j-graph-algo: optimized graph algorithm library neo4j-kernel-com
  • Neo4J 基本教程 —— 一切基於關係,而不受關係限制
    例如 C:\Program Files\neo4j對於 Linux 系統,可以選擇用 yum 方式下載 Neo4J RPM,可以參考 https://yum.neo4j.com/。使用這種方式安裝系統會幫助檢查環境和依賴,所以可以跳過下面的兩節(2.2 & 2.3)。
  • Yaha首頁、文檔和下載 - Python 中文分詞庫 - OSCHINA - 中文開源...
    資料庫 類別 Python R MySQL mysql-connector-python(官方) RMySQL Oracle cx_Oracle ROracle Redis redis rredis MongoDB pymongo RMongo, rmongodb neo4j py2neo RNeo4j
  • 知識圖譜系列:Task 1 知識圖譜介紹
    3.2Neo4J 安裝在Mac或者Linux中,安裝好jdk後,直接解壓下載好的Neo4J包,運行命令:bin/neo4j startwindows系統下載好neo4j和jdk 1.8.0後,輸入以下命令啟動後neo4j:neo4j.bat console(要設置好環境變量)
  • 圖形資料庫之Neo4j核心概念介紹(二)
    有關neo4j的介紹和使用場景,這裡不多說了,不了解的朋友可以參考我之前的文章 http://qindongliang.iteye.com/blog/2327919我們的使用場景是用來存知識圖譜有關的數據簡單說就是會把從小學到高中所有的科目的裡面的知識點給存儲起來,讓後建立知識點與知識點之間的依賴關係,從而最終會形成一張複雜的知識網絡。
  • Neo4j與Python結合,實現網頁排名算法與最小社區探測
    但是我總安裝不上,所以用了py2neo和networkx。Spark2.X+Python 精華實戰課程免費學習視頻。丘老師Python網絡爬蟲實戰免費學習視頻。
  • 基於社區發現算法和圖分析Neo4j解讀《權力的遊戲》下篇
    導讀:幾個月前,數學家 Andrew Beveridge和Jie Shan在數學雜誌上發表《權力的網絡》,主要分析暢銷小說《冰與火之歌》第三部《冰雨的風暴》中人物關係,其已經拍成電視劇《權力的遊戲》系列。他們在論文中介紹了如何通過文本分析和實體提取構建人物關係的網絡。緊接著,使用社交網絡分析算法對人物關係網絡分析找出最重要的角色;應用社區發現算法來找到人物聚類。
  • 「人工智慧師資班」(Python機器學習,圖像識別與深度學習,深度學習與NLP,知識圖譜,強化學習)
    2) 全案例教學,邊講邊練,實戰性強,助教輔導,力爭讓每位學員掌握所學內容。python網絡爬蟲字符串重要方法應用中英文分詞,拼音處理網頁文本提取與圖片下載簡單反爬機制對抗代碼和案例實踐:《青春有你2》選手數據爬取與分析《安家》影評爬取與數據分析《乘風破浪的姐姐》數據爬取與分析《平凡的榮耀》數據爬取與分析
  • 從Python2遷移到Python3實戰(一) - pyupgrade
    set((1, 2)) # {1, 2}set([1, 2]) # {1, 2}set(x for x in y) # {x for x in y}set([x for x in y]) # {x for x in y}左面是替換前的代碼,後面井號後的注釋部分是替換後的效果。
  • Python小知識: __init__.py的作用
    __init__.py 文件的作用是將文件夾變為一個Python模塊,Python 中的每個模塊的包中,都有__init__.py 文件。通常__init__.py 文件為空,但是我們還可以為它增加其他的功能。我們在導入一個包時,實際上是導入了它的__init__.py文件。這樣我們可以在__init__.py文件中批量導入我們所需要的模塊,而不再需要一個一個的導入。
  • Python雜談: __init__.py的作用
    轉載信息如下:  我們經常在python的模塊目錄中會看到 "__init__.py"
  • Python中__init__.py文件的作用詳解
    import sys>>> print(sys.path)['', '/usr/local/lib/python3.4','/usr/local/lib/python3.4/plat-sunos5','/usr/local/lib/python3.4/lib-tk','/usr/local/lib/python3.4/lib-dynload
  • Python 實戰(0):初識 web.py
    有些初學 Python 的同學表示能不能提供一些實例,結合基礎知識的學習。也有不少已經完成基礎內容學習的同學詢問,如何可以進一步提高編程能力。鑑於此,我想接下來的一段時間,做一個比較長的系列:這個系列會以一個項目為主線,過程中大概不會專門針對某一個內容去講,基本是寫到哪講到哪,比較隨意。
  • Python包中__init__.py作用
    作者:徐文來源:http://www.cnblogs.com/AlwinXu/p/5598543.html在創建python包的過程中,IDE都會在包根目錄下創建一個__init__.py文件,該Python文件默認是空的.目錄結構如下:Pycharm下的package樹結構: