График ответов в БД по категориям - PullRequest
2 голосов
/ 16 марта 2020

Я уверен, что уже есть такой вопрос, задающий то же самое, но я не смог его найти. Возможно, я просто не знаю правильных слов, чтобы правильно ответить на этот вопрос. Некоторый контекст: я решаю, подходит ли AWS Нептун для предстоящего проекта. Итак, у меня, очевидно, есть доступ к движку SPARQL и движку Tinkerpop / Gremlin, если это поможет ответить на вопрос.

Допустим, у меня есть элементы в графовой базе данных. Эти предметы имеют «свойство» под названием категория . Можно ли получить максимум 20 предметов из каждой отдельной категории?

Я изучил различные ресурсы SPARQL (например, docs ) и не нашел ничего, описывающего такую ​​функциональность. и мне никогда не приходилось делать это в моих предыдущих встречах sparql. Не знаком с TinkerPop и Gremlin, но мои первоначальные чтения также не касались этого.

1 Ответ

3 голосов
/ 17 марта 2020

Это довольно просто с Гремлин. Использование графа воздушных маршрутов, который имеет свойство региона для каждого аэропорта. Следующий запрос вернет пять аэропортов или меньше для Калифорнии и Техаса (для каждого штата на диаграмме более 5).

gremlin> g.V().has('airport','region',within('US-CA','US-TX')).
               group().
                 by('region').
                 by(identity().limit(5).fold())

==>[US-TX:[v[3],v[8],v[11],v[33],v[38]],US-CA:[v[13],v[23],v[24],v[26],v[27]]]

РЕДАКТИРОВАНИЕ: Добавлен дополнительный пример, в котором указанные c регионы не просматриваются для.

gremlin> g.V().hasLabel('airport').
               limit(50).
               group().
                 by('region').
                 by(identity().limit(5).fold())

==>[US-FL:[v[9],v[15],v[16],v[19],v[25]],US-NV:[v[30]],US-HI:[v[37]],US-TX:[v[3],v[8],v[11],v[33],v[38]],US-WA:[v[22]],US-NY:[v[12],v[14],v[32],v[35]],US-NC:[v[21]],US-LA:[v[34]],GB-ENG:[v[49],v[50]],US-PA:[v[45]],US-DC:[v[7]],US-NM:[v[44]],US-AZ:[v[20],v[43]],US-TN:[v[4]],CA-BC:[v[48]],CA-ON:[v[47]],PR-U-A:[v[40]],US-MN:[v[17]],US-IL:[v[18]],US-AK:[v[2]],US-VA:[v[10]],US-CO:[v[31]],US-MD:[v[6]],US-IA:[v[36]],US-MA:[v[5]],US-CA:[v[13],v[23],v[24],v[26],v[27]],US-UT:[v[29]],US-OH:[v[41]],US-GA:[v[1]],US-MI:[v[46]]]
...