JanusGraph: возвращает разные выходные данные для одних и тех же спецификаторов при выполнении запроса другим способом. - PullRequest
1 голос
/ 29 марта 2019

Я использую Graphexp для визуализации графика.Graphexp внутренне использует запрос gremlin для получения вывода.

Это запрос, который выполняет Graphexp:

nodes = g.V().limit(50).toList();edges = g.V(nodes).aggregate('node').outE().as('edge').inV().where(within('node')).select('edge').toList();[nodes,edges]

Я создал собственный API поверх Janusraph для операции CRUD.Я вставляю две вершины и одно ребро между ними с некоторыми спецификаторами (ключ, пары значений) в ребре.

После выполнения вышеуказанного запроса Graphexp возвращает:

id: {relationId: "551-6co-13it-m54"}
inV: 28696
inVLabel: "vertex"
label: "intend"
outV: 8232
outVLabel: "vertex"
properties:
owner_id: {key: "owner_id", value: "18699980"}
rel_id: {key: "rel_id", value: "intend"}
rel_name: {key: "rel_name", value: ""}
relation_specifier: {key: "relation_specifier", value: "[]"}
src_specifier: {key: "src_specifier", value: "-1466934972"}
tar_specifier: {key: "tar_specifier", value: "[]"}
__proto__: Object
type: "edge"

Как мы можемвижу, что здесь мало чего пустоПример: rel_name, tar_specifier и т. Д.

Теперь я получаю другой результат с другим запросом:

Мой запрос (написанный на Java):

g.V().has("name", source).outE().where(__.inV().has("name", target)).valueMap().toList()

Использованиемой собственный API Я отправляю источник и цель в указанном выше запросе.

Мой ответ на запрос:

{
  "res": [
    {
      "tar_specifier": "[for month]",
      "src_specifier": "[]",
      "relation_specifier": "[]",
      "rel_name": "intend",
      "owner_id": "",
      "rel_id": "-1466934972",
      "doc_id": "18699980"
    }
  ]
}

Мой ожидаемый вывод - последний, который показывает данные в точности так, как я отправил,IDK, почему в пользовательском интерфейсе ответ, который они получают, полностью запутан.

Пример: "rel_name" - это "intend" в последнем выводе (как и ожидалось), тогда как в ответе пользовательского интерфейса ему присваивается rel_id.

Мы оба используем разные запросы Gremlin, но, тем не менее, данные не должны быть назначены где-то еще или становятся пустыми.

Я отладил пользовательский интерфейс и получил тот же запрос и ответ, как упомянутовыше.

Я новичок в Gremlin, но у меня есть понимание различных баз данных, и я считаю, что организация данных не зависит от запроса.

Заранее спасибо!

...