2015-12-04 1 views
0

Technology Stack:Tinkerpop Stack Rexster REST API _Недвижимости

  • Tinkerpop Stack 2,4 (Rexster HTTP REST Сервер)
  • Titan 0.5.4
  • DynamoDB (AWS)
  • NodeJS

Цель:

Я хотел бы использовать API-интерфейс Rexster RESTful для запросов и обходов моей базы данных графиков. Я пытаюсь понять параметр запроса _properties для фильтрации результатов на основе синтаксиса Vertex Query.

результат Вершины запроса:

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: // Localhost: 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 }

Проблема:

не вернуть то, что я предполагаю, что я хотел бы получить вернулся, всегда возвращает пустой набор этих Ури .:

просит:

_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? свойства = [[имя = (с, John Doe)]]

Response:

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

Дополнительная информация:

Следующий URI делает возвращать результирующий набор смежных вершин, если я просто переключу оператор = (равный) на оператор <> (не равен):

Запрос:

_http: // локальный: 8182/графики/privvy/вершины/25600768/как?свойства = [[имя, <>, "John Doe"]]

Ответ:

{ "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

Обратите внимание, что все случаи использования участвуют "ребра". Вы пытаетесь выполнить вершинный запрос над значениями свойств в соседней вершине ребра. Если вы хотите, чтобы ваш запрос работал таким образом, вам пришлось бы денормализовать ваши данные, чтобы включить свойство «name» на краях.

Обратите внимание, что в моем локонов запросе против графа по умолчанию ниже, все работает, как и ожидалось, когда я построю свою вершину запроса к «массе» (и край имущества):

$ 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, вы просто не можете сделать это со стандартным REST API, который предоставляет Rexster. Итак, если вам нужно это сделать, я просто воспользуюсь расширением Gremlin от Rexster. btw, обратите внимание, что Rexter больше не разрабатывается - см. Gremlin Server для 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 –

Смежные вопросы