【问题标题】:Limit Graph DB responses per category限制每个类别的图表数据库响应
【发布时间】:2020-03-16 19:28:43
【问题描述】:

我确定已经有一个 SO question 在问同样的问题,但我一直找不到。也许我只是不知道正确表达这个问题的合适词语。一些背景信息:我正在决定 AWS Neptune 是否适合即将开展的项目。所以,如果这有助于回答这个问题,我显然可以使用 SPARQL 引擎和 Tinkerpop/Gremlin 引擎。

假设我在图形数据库中有项目。这些项目有一个名为 category 的“属性”。是否可以从每个不同的类别中获得最多 20 个项目?

我已经搜索了各种 SPARQL 资源(例如 docs),但没有找到任何描述此类功能的内容,而且在我之前遇到的 sparql 中我从来没有这样做过。不熟悉 TinkerPop 和 Gremlin,但我最初的阅读也没有涉及到这一点。

【问题讨论】:

标签: sparql graph-databases gremlin tinkerpop


【解决方案1】:

Gremlin 相当简单。使用具有每个机场的区域属性的航线图。以下查询将返回加利福尼亚州和德克萨斯州的五个或更少的机场(图表中每个州的机场数超过 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]]]

已编辑:添加了不查找特定区域的附加示例。

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]]]

【讨论】:

  • 好的,很高兴知道它可以在 Gremlin 中很好地表达。不提前知道地区可以吗?
  • 不提前知道地区可以吗?
  • 是的。我添加了第二个示例,该示例获取 50 个机场并应用相同的分组策略,而无需了解任何地区。为了简单起见,我在第一个示例中使用了显式区域。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
相关资源
最近更新 更多