- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
给定一组 User
顶点,我需要找到连接到这些顶点的所有 Chat
顶点,但没有其他顶点。例如,只有 Alice 和 Bob 参与的所有聊天。查询应对结果进行排序,以便首先返回连接到最新消息的聊天。
在我最初的尝试中,我尝试从其中一个用户开始,访问他/她参与的所有聊天,并对它们进行过滤,以便仅保留那些完全有所有其他用户作为参与者的聊天。
traversal().V(user.id()) //random user of the set
.out("participates")
.hasLabel("Chat")
.where(__.in("participates")
.hasLabel("User")
.fold()) //how could I match this collection against my set?
这是一个合适的方法吗?如何根据链接消息
的时间戳来匹配集合和顺序?感谢您的指点。
编辑由于 Daniel 的回答,这是新查询:
边、顶点和属性标签与实际产品略有不同(Chat
为 CONVERSATION
,timestamp
为 CREATED_AT
、参与
是MEMBER_OF
)以及自定义枚举的一部分。 vertex
数组包含应成为对话一部分的所有用户顶点。
traversal().V(vertices[0].id())
.out(EdgeLabel.MEMBER_OF.name())
.hasLabel(VertexLabel.CONVERSATION.name())
.filter(__.in(EdgeLabel.MEMBER_OF.name())
.hasLabel(VertexLabel.USER.name())
.is(P.within(vertices)).count().is(vertices.length))
.order().by(__.out(EdgeLabel.CONTAINS.name())
.values(PropertyKey.CREATED_AT.name())
.order().by(Order.decr).limit(1), Order.decr)
最佳答案
让我们从示例图表开始:
g = TinkerGraph.open().traversal()
g.addV("user").property("name", "alice").as("a").
addV("user").property("name", "bob").as("b").
addV("user").property("name", "caesar").as("c").
addV("chat").property("name", "A").as("A").
addV("chat").property("name", "B").as("B").
addV("chat").property("name", "C").as("C").
addV("message").property("timestamp", 1).property("text", "Sed mollis velit.").as("m1").
addV("message").property("timestamp", 2).property("text", "Aenean aliquet dapibus.").as("m2").
addV("message").property("timestamp", 3).property("text", "Nunc vel dignissim.").as("m3").
addV("message").property("timestamp", 4).property("text", "Aliquam in auctor.").as("m4").
addV("message").property("timestamp", 5).property("text", "Nulla dignissim et.").as("m5").
addV("message").property("timestamp", 6).property("text", "Pellentesque semper dignissim.").as("m6").
addE("participates").from("a").to("A").
addE("participates").from("a").to("B").
addE("participates").from("a").to("C").
addE("participates").from("b").to("B").
addE("participates").from("b").to("C").
addE("participates").from("c").to("C").
addE("contains").from("A").to("m1").
addE("contains").from("A").to("m2").
addE("contains").from("B").to("m3").
addE("contains").from("B").to("m4").
addE("contains").from("C").to("m5").
addE("contains").from("C").to("m6").iterate()
因此,如果我们现在查找 Alice 和 Bob 之间的对话,我们应该只能找到聊天 B。果然:
gremlin> g.V(users.head()).
out("participates").
not(__.in("participates").is(without(users))).
filter(__.in("participates").is(within(users)).count().is(users.size())).
order().by(out("contains").values("timestamp").order().by(decr).limit(1), decr).
valueMap()
==>[name:[B]]
如果时间戳是 contains
边的一部分,会更容易、更快一些。
关于java - 如何在 TinkerPop 中比较顶点集是否相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45463633/
我想使用图中所示的迷宫,使用迭代深度优先搜索找到从起始节点到目标的路径。它是一个仅包含一对数字的文本文件,例如成对连接,又称边/弧。像这样: 11 3 2 3 0 3 1 4 5 4 5 7 6 7
问题:您有一个无向图 G = (V, E)(V = 顶点,E = 边),您必须访问每个顶点并在两个方向上通过每个边。 我所知道的图算法只有 DFS、BFS 和一些 MST(Kruskal 等)不幸的是
枚举任意图中两个顶点之间的所有简单路径通常需要指数时间,因为顶点之间可能存在指数数量的简单路径。但是,如果我们只对位于两个末端顶点之间的至少一条简单路径上的顶点怎么办? 即:给定一个无向图和两个不同的
我正在开发一个简单的 opengl 游戏以了解更多相关信息。但是由于某种原因,当我尝试随时间旋转我的立方体时,它会被拉伸(stretch)。你可以在照片中看到它: 我认为这与我的模型矩阵有关,但我不确
我已经在谷歌上搜索了很长一段时间,但我找不到任何东西。如何使用 Graphviz 绘制没有连接顶点的图形? 最佳答案 像这样: digraph g { SingleNode; } 简单地不定义
我目前正在使用 R 中的“igraph”包进行一些社交网络分析,我想知道是否有一种方法可以个性化社交网络中节点的放置。 例如,使用以下玩具代码: library(igraph) edg
我在 Box2D 中有一个多边形形状。形状是一个三角形,我希望有 3 个顶点。事实上,我创建的所有形状都会输出 8 个顶点。为什么是这样?如果我输出顶点数,那总是正确的数量。我不想渲染不必要的线条,但
来自user manual CGAL Surface_mesh 类: the data structure uses integer indices as descriptors for vertic
我正在尝试找到引用 ARFaceGeometry 网格索引的方法为了使用 ARKit 将图形放置在面部的特定部位。 我见过很多例子,其中功能与一些索引号,但我找不到对此列表的任何引用。它似乎有超过12
Apache TomCat(版本未知) 业务对象 4.1 顶点 4.4.3 在一台服务器上,我们拥有 TomCat 和 Business Objects。 APEX 也使用 TomCat。 在对我们的
我正在使用 MX Graph 进行一些工作,以帮助识别网站中的关键内容路径。我将其设置为每个顶点代表网站上的一个页面,每条边代表一组从页面 A 访问页面 B 的访问者。 一切都运行良好,除了边太多,我
我正在尝试使用三角形 strip 绘制一个平面。我了解如何手动执行此操作,但我真的很难使用 for 循环来执行此操作。到目前为止,下面的代码绘制了两个三角形。 //vertices for trian
如果我想通过 id 顶点获取名称,我可以使用这个函数:VAS(g, "name",id)但是如果我想要相反的方式,通过名称获取 id,我该怎么做呢? 最佳答案 igraph 本身不提供按名称查找顶点的
我有一个三角形,其任意顶点位于 3D 空间中。 我知道通过以下操作很容易找到这种三角形的质心: float centroid[3] = { 0, 0, 0 }; for (int i = 0; i =
我有一个点数组。每个点都有位置(x, y, z) 和法 vector (xn, yn, zn) ,一共6个 double 。考虑到浮点容差,我需要在此数组中找到唯一元素并删除重复条目。 实现它的简单有
我有一个相互连接的边列表 (E),如何找到从一个顶点连接到另一个顶点的最短路径? 我正在考虑使用 lowest common ancestors ,但边缘没有明确定义的根,所以我认为该解决方案不起作用
我现在正在使用计算着色器开发粒子系统。我将所有粒子都放在着色器存储缓冲区中。一个粒子包含两个顶点,当前位置和先前位置。 struct Particle{ glm::vec4 _currPo
我将我的顶点剪裁在边缘上,如这张专辑所示: http://imgur.com/a/VkCrJ 当我的地形大小为 400 x 400 时,我得到裁剪,但在 40x40 或更小时,我没有得到任何裁剪。这是
总是在顶点着色器中而不是在片段着色器中更好地进行硬计算吗?即使是具有超过 100.000 个多边形的高网格模型(假设有一堆独特的顶点)? 最佳答案 不,它并不总是更好。 选择合适的计算位置的最佳方法是
我想编辑一个立方体上的 1 个顶点,但我不知道该怎么做。我试过到处寻找此功能,但找不到解决方案。 这是我想要实现的目标的图像: 最佳答案 http://answers.unity3d.com/ques
我是一名优秀的程序员,十分优秀!