Назначить запрос, используя «match ()» для подграфа - PullRequest
0 голосов
/ 27 апреля 2020

У меня есть база данных JanusGraph со следующей структурой графа:

(Бумага) <- [AuthorOf] - (Автор) </p>

Я хочу использовать предложение Gremlin для сопоставления запросов данные и назначить результаты для подграфа. Вот что у меня есть:

g.V().match(
        __.as('a').has('Paper','paperTitle', 'The name of my paper'),
        __.as('a').in('AuthorOf').outV().as('b')).
select('b').values()

Этот запрос возвращает то, что я хочу, Авторы статьи, которую я ищу, и ищу. Однако я хочу присвоить результаты подграфу, чтобы я мог экспортировать его, используя:

sg.io(IoCore.graphml()).writeGraph("/home/ubuntu/myresults.graphml")

Ранее я добился этого с помощью другой структуры запросов, подобной этой:

sg = g.V().has('paperTitle', 'The name of my paper').
     inE('AuthorOf').subgraph('sg1').
     outV().
     cap('sg1').
     next()

Можно ли достичь таких же результатов с помощью оператора match ()?

1 Ответ

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

После небольшой проб и ошибок я смог создать рабочее решение:

sg = g.V().match(
        __.as('a').has('Paper','paperTitle', 'ladle pouring guide'),
        __.as('a').inE('AuthorOf').subgraph('sg').outV().as('b')).
 cap('sg').next()

Сначала я пытался использовать оператор «select» для выделения подграфа. Изучив документацию по « подграфу » и узнав больше о побочных эффектах в гремлине, я понял, что в этом нет необходимости.

...