2015-12-04 92 views
0

技術堆棧TinkerPop有關堆棧Rexster REST API _properties

  • TinkerPop有關堆棧2.4(Rexster HTTP REST服務器)
  • 泰坦0.5.4
  • DynamoDB(AWS)
  • 的NodeJS

目標

我想利用基於Rexster REST的API來查詢和遍歷我的圖形數據庫。我想了解用於根據頂點查詢語法過濾結果的_properties查詢參數。頂點查詢的

結果:

http://localhost:8182/graphs/mygraph/vertices { "version": "2.5.0", "results": [ { "name": "Frank Stein", "_id": 25600768, "_type": "vertex" }, { "name": "John Doe", "_id": 25600512, "_type": "vertex" } ], "totalSize": 2, "queryTime": 219.86688 }

邊緣查詢的結果

HTTP://本地主機:8182 /圖形/ mygraph /頂點

{ "version": "2.5.0", "results": [ { "_id": "f8q68-f8phc-4is5-f8pog", "_type": "edge", "_outV": 25600512, "_inV": 25600768, "_label": "friends" } ], "totalSize": 1, "queryTime": 164.384768 }

問題

這些URI的不回什麼,我假設我就會回來,總是返回一個空集:

請求

_http://本地主機: 8182 /圖表/ privvy /頂點/ 25600768 /兩者兼而有之? properties = [[name,=,「John Doe」]] _http:// localhost:8182/graphs/privvy/vertices/25600768/both? properties = [[name,=,John Doe]] _http:// localhost:8182/graphs/privvy/vertices/25600768/both? properties = [[name,=,(s,「John Doe」)]] _http:// localhost:8182/graphs/privvy/vertices/25600768/both? 屬性= [[名稱,=,(S,John Doe的)]]

響應

{ "version": "2.5.0", "results": [], "totalSize": 0, "queryTime": 22.641152 }

附加信息

以下URI並返回一個如果我只是將=(等於運算符)切換到<>(不等於)運算符:

請求

_http://本地主機:8182 /圖表/ privvy /頂點/ 25600768 /兩者兼而有之?性能= [[名,<>, 「李四」]]

響應

{ "version": "2.5.0", "results": [ { "name": "John Doe", "_id": 25600512, "_type": "vertex" } ], "totalSize": 1, "queryTime": 17.451008 }

任何人有,我可能是想錯了什麼線索?

參考

感謝朋友們!

湯姆

回答

1

在你提供的鏈接,明確指出本節:

https://github.com/tinkerpop/blueprints/wiki/Vertex-Query#query-use-cases

注意,所有用例涉及 「邊緣」。您正試圖對邊上相鄰頂點的屬性值進行頂點查詢。如果您希望您的查詢以這種方式工作,則必須將數據非規範化以在邊上包含「名稱」屬性。

注意,在我的對照以下默認的圖形捲曲的要求,工作的事情,當我築起「重量」(和邊緣屬性)我的頂點查詢作爲預期:

$ curl -g "http://localhost:8182/graphs/tinkergraph/vertices/1/out?_properties=[[weight,=,(f,0.4)]]" 
{"version":"2.5.0","results":[{"name":"lop","lang":"java","_id":"3","_type":"vertex"}],"totalSize":1,"queryTime":1.070072} 
+0

感謝這個信息。從你指出的情況來看,Vertex Query的用例可能是基於邊緣遍歷和過濾的,但是我發現很難相信我需要將頂點的屬性去標準化爲邊緣來完成我正在努力做的目標。徹底擊敗DB/Graph系統的目的。我需要找到一種方法來過濾頂點屬性上的查詢,也許我需要查看此技術棧的頂點鍵。 –

+0

除非您的圖形有一些標準,每個頂點有數百萬條邊,否則非規範化可能不是需要考慮的事情。您可以使用Gremlin輕鬆過濾您在問題中描述的方式(即通過頂點屬性),但您無法使用Rexster公開的標準REST API執行此操作。所以,如果你需要這樣做,我只需要使用Rexster的Gremlin Extension。順便說一句,注意Rexter不再是正在開發的 - 見小鬼服務器的TinkerPop有關3,如果你是剛剛起步:http://tinkerpop.apache.org/docs/3.1.0-incubating/#gremlin-server –

+0

而現在,您可以將TP3和Titan 1.0.0用於DynamoDB:https://github.com/awslabs/dynamodb-titan-storage-backend –