Оператор 'Или' для свойств узла в Gremlin, назначенных одному подграфу - PullRequest
1 голос
/ 08 апреля 2020

У меня есть база данных Janusgraph, которая содержит узлы с меткой «Бумага», свойства узла «paperTitle» и «year» и тип ребра «References».

Я пытаюсь написать запрос, который позволит мне выбрать две статьи по названию и все их ссылки и присвоить этот результат подграфу.

Я могу выбрать одну бумагу, используя два условия, как это:

sg = g.V().
     and(has('Paper', 'paperTitle', 'ladle pouring guide'), has('Paper', 'year', '1950')).
     inE('References').
     subgraph('sg1').
     cap('sg1').
     next()

Используя этот запрос в качестве отправной точки, я надеялся, что смогу сделать это:

sg = g.V().
     or(has('Paper', 'paperTitle', 'ladle pouring guide'), has('Paper', 'paperTitle', 'the development of the human mandibular joint')).
     inE('References').
     subgraph('sg1').
     cap('sg1').
     next()

Но это возвращает подграф с 0 узлами и 0 ребрами.

Я видел эту страницу в документации Janusgraph http://tinkerpop.apache.org/docs/current/reference/#or -step , но, похоже, она описывает только выборку нескольких ребер, а не свойств нескольких узлов.

Можно ли создать такого рода подграф или мне нужно выполнить их как два отдельных запроса?

1 Ответ

0 голосов
/ 13 апреля 2020

Я не понимаю, почему вы не можете сделать это в одном запросе, и я не уверен, почему ваш обход не работает, однако я бы написал это как:

sg = g.V().
     has('Paper', 'paperTitle', within('ladle pouring guide', 
                                       'the development of the human mandibular joint')).
     inE('References').
     subgraph('sg1').
     cap('sg1').
     next()
...