圖數(shù)據(jù)庫Neo4J的使用_第1頁
圖數(shù)據(jù)庫Neo4J的使用_第2頁
圖數(shù)據(jù)庫Neo4J的使用_第3頁
圖數(shù)據(jù)庫Neo4J的使用_第4頁
圖數(shù)據(jù)庫Neo4J的使用_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、文檔名稱文檔密級圖數(shù)據(jù)庫Neo4J的使用吳斌 2013.7.5 wubin 1,圖數(shù)據(jù)庫Neo4J的介紹:/learn/neo4jNeo4J是個開源的圖數(shù)據(jù),很好用,輕便靈活,嵌入式,功能強大,而且相關(guān)資料比較齊全。按照Neo4J官方網(wǎng)站公布,該數(shù)據(jù)庫可以支持數(shù)十億的節(jié)點數(shù):massively scalable, up to several billion nodes/relationships/properties而且支持分布式部署,Master,Slave。對Neo4J的性能和可用性的介紹:/player/6q

2、Umb/native/autoplay/Neo4J的CEO有個視頻簡單介紹Neo4J:2,安裝:Neo4J的安裝使用非常簡單。下載一個穩(wěn)定版本,解壓,運行Neo4j.bat(windows版本) 即可。下載地址/download , 目前比較好用的穩(wěn)定版本是1.9.1。然后可以訪問WEB管理界面,地址:http:/localhost:7474/webadmin3,Neo4J的使用方式包括:1)可以寫程序,添加,更新,用JAVA,Python,PHP, .NET等語言都可以實現(xiàn)。2)可以用命令行,添加,更新,查看,Neo4J提供基于WEB的執(zhí)行界面,提供類S

3、QL語言執(zhí)行,這些語言包括Cypher,Gremlin等。 如下圖:3)可以基于Neo4J提供的WEB UI界面添加,更新節(jié)點和關(guān)系,如下:4) 可以使用附加工具(ETL)導入數(shù)據(jù)。也可以從關(guān)系數(shù)據(jù)庫中導入數(shù)據(jù)。/develop/import4,使用JAVA訪問Neo4J:學習材料:/develop/java/chunked/stable/tutorials-java-embedded.htmlNeo4J中節(jié)點,邊,都可以任意添加屬性,邊(關(guān)系)的可以自定義,是個枚舉值,舉例:f

4、irstNode = graphDb.createNode();firstNode.setProperty( "message", "Hello, Node A , " );secondNode = graphDb.createNode();secondNode.setProperty( "message", " The Graph DB World! Node B " );relationship = firstNode.createRelationshipTo( secondNode, RelTypes.KNO

5、WS );relationship.setProperty( "Reason", "Use Neo4j for testing Edge , " );還有一點很重要,Neo4J可以支持自定義節(jié)點類,就是說你可以按照你的需要設計Class做節(jié)點,也就是說你可以給每個節(jié)點增加任意方法,實現(xiàn)任意功能,這個功能的擴展性非常強。而且Neo4J提供嵌入式程序的能力,你可以把它當做一個Lib來使用,可以在保留其他應用開放方式的情況下,提供圖數(shù)據(jù)庫的強大能力。其例子socnet可以在Neo4J的網(wǎng)站上查找。5,Cypher介紹:Cypher是Neo4J自己提供的一種高效

6、類SQL語言,用于圖數(shù)據(jù)和關(guān)系查詢。關(guān)系查詢采用一種模式匹配的方式,比較直觀。很好的學習材料:/learn/cypher這個Video講的很清楚:創(chuàng)建節(jié)點:(每個Node,系統(tǒng)會自動建立一個唯一的id,不可修改。下面的ID是Node的屬性。)create n=name:'Motion',ID:'M001' return n;創(chuàng)建關(guān)系:start n=node(14),m=node(20) create m-r:KNOWS-n return r;查

7、詢:按id查詢(這里的id是系統(tǒng)自動創(chuàng)建的):start n=node(20) return m;查詢所有節(jié)點:start n=node(*) return n;查詢屬性,關(guān)系:start n=node(9) return n,,n.ID,n.level; /查看指定節(jié)點,返回需要的屬性start n=node(*) match (n)-r:SubClassOf->m return m,n,,n.ID,r; /查找指定關(guān)系按關(guān)系查詢多個節(jié)點:start a = node(14

8、) match b-r<->a return r,b;start a = node(0) match c-:KNOWS->b-:KNOWS->a return a,b,c; /查找兩層KNOWS關(guān)系的節(jié)點start a = node(21) match b-*->a return a,b; /查找所有與a節(jié)點有關(guān)系的節(jié)點使用Where條件進行查詢:(不用建立Index也可以使用)start n=node(*) where ="Acti

9、vity" return n;并且可以使用特定符號:start n=node(*) where n.ID?="A*" return n; start n=node(*) where HAS(n.type) return n,,n.ID,n.type; /如果存在屬性type,并且以A開頭,就輸出節(jié)點。配置文件自動建立索引:修改conf目錄下的perties文件內(nèi)容如下,重啟Neo4J,對重啟后新建的Node生效。# Enable auto-indexing for nodes, def

10、ault is falsenode_auto_indexing=true# The node property keys to be auto-indexed, if enablednode_keys_indexable=name,ID# Enable auto-indexing for relationships, default is falserelationship_auto_indexing=true# The relationship property keys to be auto-indexed, if enabledrelationship_keys_indexable=KN

11、OWS,SubClassOf建立索引后可以用node_auto_index按屬性值查詢:start n=node:node_auto_index(name="C") return n,;修改屬性值:start a = node(*) where ="a" set ="A" return a, ;start n=node(0) set ="Root",n.ID="001"  /給默認的根節(jié)點添加na

12、me,ID屬性,便于查詢。刪除:刪除所有節(jié)點和關(guān)系:START n=node(*) match n-r-()delete n,r;6,圖形化顯示數(shù)據(jù):Neo4J自身提供WEB界面的圖數(shù)據(jù)圖形化展現(xiàn)工具,很Cool。這個Video講的具體:在WEB管理http:/localhost:7474/webadmin的“Data Browser”圖形化顯示區(qū)點Style,NewProfile,編輯自己的Profile,注意Add filter的 Nodes要放在前面,不然不生效,Rules是順序執(zhí)行的,顯示多個屬性可以用;號做換行符??次易龅囊粋€User Model Ontology 關(guān)系模型:User

13、 Model 與數(shù)據(jù)源的Ontology關(guān)系,左邊圓圈是UserModel,右邊方框是數(shù)據(jù)源:在Data Browser上直接輸入節(jié)點編號,如10,點圖形化顯示,就可以圖形化看到該節(jié)點和有關(guān)系的節(jié)點,點每個節(jié)點,就可以逐步顯示所有節(jié)點和關(guān)系,非常方便:7,備份Neo4j的數(shù)據(jù):1)停掉數(shù)據(jù)庫.2)備份D:Neo4Jneo4j-enterprise-1.9.1data目錄下graph.db目錄中的所有內(nèi)容.3)在服務器上拷貝graph.db目錄中的內(nèi)容到新的服務器的相同目錄中,啟動即可.8,為什么使用圖數(shù)據(jù)庫?這個問題,歡迎你跟我交流。圖數(shù)據(jù)庫的擴展性,靈活性非常好,適合用于復雜關(guān)系管理和關(guān)系查

14、詢推理,社交關(guān)系應用就是一個可選的應用場景。 而我選擇圖數(shù)據(jù)庫,起因是研究語義網(wǎng)和Ontology的應用,語義網(wǎng)和Ontology的數(shù)據(jù)結(jié)構(gòu)(三元組)就是圖結(jié)構(gòu)數(shù)據(jù),而基于RDF構(gòu)建的語義網(wǎng),過于復雜,效率很低,實際上不如基于圖數(shù)據(jù)庫的構(gòu)建方便好用,而且Neo4J支持RDF,SPARQL等擴展。另外,我認為OWL,實用價值不大,OWL幾乎就是用XML來描述一種面向?qū)ο蟮木幊陶Z言,而這種編程語言如果表示能力過強(OWL Full),根本無法實現(xiàn),如果表示能力過弱(OWL Lite),其實沒有多少實用意義。而且,我覺得Tim Berners-Lee的語義網(wǎng),即基于RDF的語義WEB,用RDF描述語

15、義的這種思路走向了以前基于規(guī)則的NLP的思路,雖然加上Human Computation 眾包的模式,但還是很難走通。我更關(guān)注的是本體關(guān)系,知識庫的構(gòu)建,而且知識本體主要是Meta Data,不需要很多數(shù)據(jù),盡量不要保存instance data,獲取instance data可以關(guān)聯(lián)其他數(shù)據(jù)庫的數(shù)據(jù)源進行查詢(這種數(shù)據(jù)Key-Value或Table保存即可)。簡單的關(guān)系推理,屬性傳遞,其實就是查詢,Neo4J中Cypher也可以完成。所以,我傾向于用圖數(shù)據(jù)庫來構(gòu)建知識庫knowledge base ("KB"),或knowledge graph ("KG")。知識庫對于知識關(guān)聯(lián)查詢進行相關(guān)搜索或關(guān)聯(lián)推薦,比較有價值。而且,從知識本體關(guān)系庫中可以推理得到規(guī)則, 比如,If Place is Meeting Room and Da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論