Строковые функции на языке запросов Tinkerpop - PullRequest
1 голос
/ 11 февраля 2020

Глядя в Tinkerpop do c, я мог найти список функций String:

TextP.startingWith(string) - Does the incoming String start with the provided String?

TextP.endingWith(string) - Does the incoming String end with the provided String? 

TextP.containing(string) - Does the incoming String contain the provided String?

TextP.notStartingWith(string) - Does the incoming String not start with the provided String?

TextP.notEndingWith(string) - Does the incoming String not end with the provided String?

TextP.notContaining(string) - Does the incoming String not contain the provided String?

Но я не смог найти способ их использования. Я также пытаюсь посмотреть Javado c о TextP в http://tinkerpop.apache.org/javadocs/current/core/org/apache/tinkerpop/gremlin/process/traversal/TextP.html, но также не смог найти там никакой полезной информации.

Фильтры запросов, подобные приведенному ниже, работают нормально:

g.V().has( label, within( 'cake', 'coffee' ) ).limit(3)

Некоторые примеры запросов, которые я проверял и не работал:

g.V().label().startingWith('c')
g.V().label().fold().startingWith('c')
g.V().label().fold().has(__.startingWith('c'))
g.V().has(label, startingWith('c'))
g.V().has(label, TextP.startingWith('c'))
g.V().has(label.startingWith('c'))

Ответы [ 2 ]

2 голосов
/ 11 февраля 2020

TextP должен работать как любой другой Predicate, и некоторые из перечисленных вами вариантов использования верны:

gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V().has(label, startingWith("p")).label()
==>person
==>person
==>person
==>person
gremlin> g.V().has('name', endingWith("o")).values('name')
==>marko

В качестве примечания, я немного удивлен, что не вижу примеров в документация - я собираюсь добавить немного.

0 голосов
/ 18 марта 2020

Учитывая текущие ограничения Gremlin на AWS Нептун, я нашел лучший способ сделать это:

g.V().has(label, between("c","cz"))

Это также работает для любого конкретного префикса:

g.V().has(label, between("foo","fooz"))
...