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

下載本文檔

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

文檔簡(jiǎn)介

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

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

3、QL語(yǔ)言執(zhí)行,這些語(yǔ)言包括Cypher,Gremlin等。 如下圖:3)可以基于Neo4J提供的WEB UI界面添加,更新節(jié)點(diǎn)和關(guān)系,如下:4) 可以使用附加工具(ETL)導(dǎo)入數(shù)據(jù)。也可以從關(guān)系數(shù)據(jù)庫(kù)中導(dǎo)入數(shù)據(jù)。/develop/import4,使用JAVA訪問(wèn)Neo4J:學(xué)習(xí)材料:/develop/java/chunked/stable/tutorials-java-embedded.htmlNeo4J中節(jié)點(diǎn),邊,都可以任意添加屬性,邊(關(guān)系)的可以自定義,是個(gè)枚舉值,舉例: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 , " );還有一點(diǎn)很重要,Neo4J可以支持自定義節(jié)點(diǎn)類(lèi),就是說(shuō)你可以按照你的需要設(shè)計(jì)Class做節(jié)點(diǎn),也就是說(shuō)你可以給每個(gè)節(jié)點(diǎn)增加任意方法,實(shí)現(xiàn)任意功能,這個(gè)功能的擴(kuò)展性非常強(qiáng)。而且Neo4J提供嵌入式程序的能力,你可以把它當(dāng)做一個(gè)Lib來(lái)使用,可以在保留其他應(yīng)用開(kāi)放方式的情況下,提供圖數(shù)據(jù)庫(kù)的強(qiáng)大能力。其例子socnet可以在Neo4J的網(wǎng)站上查找。5,Cypher介紹:Cypher是Neo4J自己提供的一種高效

6、類(lèi)SQL語(yǔ)言,用于圖數(shù)據(jù)和關(guān)系查詢。關(guān)系查詢采用一種模式匹配的方式,比較直觀。很好的學(xué)習(xí)材料:/learn/cypher這個(gè)Video講的很清楚:創(chuàng)建節(jié)點(diǎn):(每個(gè)Node,系統(tǒng)會(huì)自動(dòng)建立一個(gè)唯一的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)自動(dòng)創(chuàng)建的):start n=node(20) return m;查詢所有節(jié)點(diǎn):start n=node(*) return n;查詢屬性,關(guān)系:start n=node(9) return n,,n.ID,n.level; /查看指定節(jié)點(diǎn),返回需要的屬性start n=node(*) match (n)-r:SubClassOf->m return m,n,,n.ID,r; /查找指定關(guān)系按關(guān)系查詢多個(gè)節(jié)點(diǎn):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é)點(diǎn)start a = node(21) match b-*->a return a,b; /查找所有與a節(jié)點(diǎn)有關(guān)系的節(jié)點(diǎn)使用Where條件進(jìn)行查詢:(不用建立Index也可以使用)start n=node(*) where ="Acti

9、vity" return n;并且可以使用特定符號(hào):start n=node(*) where n.ID?="A*" return n; start n=node(*) where HAS(n.type) return n,,n.ID,n.type; /如果存在屬性type,并且以A開(kāi)頭,就輸出節(jié)點(diǎn)。配置文件自動(dòng)建立索引:修改conf目錄下的perties文件內(nèi)容如下,重啟Neo4J,對(duì)重啟后新建的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"  /給默認(rèn)的根節(jié)點(diǎn)添加na

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

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

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

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

溫馨提示

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

評(píng)論

0/150

提交評(píng)論