Janusgraph с использованием запроса Gremlin в. net core 3.0 - PullRequest
0 голосов
/ 17 февраля 2020

В настоящее время мы используем библиотеку gremlin. net в net core 3.0 приложении для подключения к Janusgraph db.

Нам нужно выполнить приведенный ниже запрос в janusgraph g.V('12345').outE('myedge').has('datetime',lt(1581922847)).order().by('datetime', incr).limit(100).valueMap().as('time').inV().as('user').select('time','user')

Запрос выполняется нормально, пока у нас нет inV() части. Если у нас есть inV(), мы сталкиваемся с ошибкой ниже: ScriptEvaluationError: java.util.LinkedHashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Edge

  1. Есть ли способ запустить / переписать этот запрос, не разбивая его на две части? Я новичок в janusgraph, и это прекрасно работает в Cosmos db.
  2. Что касается stackoverflow , я понимаю, что в janusgraph включена пользовательская десериализация. Я попробовал это, но все равно мне не помогло. Может кто-нибудь опубликовать рабочий код, который добавляет пользовательскую десериализацию в. net core 3.0.

Чтобы иметь более простой пример, запрос g.V(1).as('v').outE().limit(1).as('e').select('v','e') работает непосредственно в консоли gremlin, но не с gremlin.net библиотека (groovy -строка) для янусграфа. Мы испробовали настройки GRYO и GraphSON Serializer на сервере. Мы можем использовать groovy -строку, так как это существующее приложение.

1 Ответ

4 голосов
/ 24 февраля 2020

Запрос выполняется нормально, если у нас нет части inV (). Если у нас есть inV (), мы сталкиваемся с ошибкой ниже, ScriptEvaluationError

Вы не можете иметь inV(), потому что оно следует valueMap(). inV() предназначен для прохождения от Edge объекта до его входящего Vertex, но valueMap() преобразует Edge в Map, и вы получите ошибку: "java .util.LinkedHashMap не может быть преобразован в org. apache .tinkerpop.gremlin.structure.Edge "

Я думаю, вы просто хотите:

g.V('12345').
  outE('myedge').has('datetime',lt(1581922847)).
  order().by('datetime', incr).
  limit(100).
  project('time','user').
    by(valueMap()).
    by(inV())
...