Posted in: ,
By Unknown 0 comments

Neo4p一些使用筆記

今天下午跟Neo4j還有REST::Neo4p奮戰了一陣子,該是作些筆記。
假設我要增加一個Node,只要以下指令就可以了,其中的name是Node的property。

my $n1 = REST::Neo4p::Node->new( {name => $val} );
 接著我要對這一個Node增加Relationship的用法是
$n1->relate_to($to_node,'RELTYPE');
$to_node表示對象node,第二個變數是Relationship的類別,第三個變數如果你要同時設定property的話再寫入就可以了。接下來是一個查詢:

my $query = REST::Neo4p::Query->new("START n=node(156) MATCH (n)-[r]-(x) RETURN n,r,x");
$query->execute();
while(my $row = $query->fetch){
    print $row->[0]->id."\n";
    print $row->[1]->type."\n";
    print $row->[2]->id."\n";
}

上面的例子使用了Cypher語法作為查詢,查詢與ID為156相連的Node及Relationship;$row->[0]及$row->[2]是REST::Neo4p::Node物件,$row->[1]是REST::Neo4p::Relationship物件。如果想要更進一步的到Node的property可以使用$row->[0]->get_property('Property_name')來取得。

基本上依照上面列出的功能,就可以簡單的建構出匯入Pathway資料的程式,不過這部份可能得等到下禮拜才能完成。另外我也在網路上找到一些文章,也是關於這部份的教學而且看起來目的和我差不多,等到明天再參考看看。希望可以藉由Graph DB的特性充分利用在我們Pathway資料建制,並增加可用性及方便度,部份根據我這兩天研究的結果應該是會有滿大的幫助就看之後我有多少時間把這些東西弄起來了。

一些連結
Cypher Query Language:寫的還算滿好懂的,如果啥都不知道就從這邊來吧。
REST::Neo4p:大致上都還ok,但是Node的那部份get_properties這個傳回來的東西跟他上面寫的不一樣勒。

Leave a Reply