我有一个关于在图形数据库中建模的一般性问题,我似乎无法解决这个问题.
你如何模拟这种关系:"牛顿发明了微积分"?
在一个简单的图表中,您可以像这样建模:
Newton (node) -> invented (relationship) -> Calculus (node)
Run Code Online (Sandbox Code Playgroud)
...所以当你添加更多的人和发明时,你会有一堆"发明的"图形关系.
问题是,你开始需要在关系中添加一堆属性:
...并且您将要开始在这些属性和其他节点之间创建关系,例如:
所以现在似乎"真实世界的关系"("发明")实际上应该是图中的一个节点,图形应如下所示:
Newton (node) -> (relationship) -> Invention of Calculus (node) -> (relationship) -> Calculus (node)
Run Code Online (Sandbox Code Playgroud)
更复杂的是,其他人也参与了微积分的发明,所以图形现在变成了:
Newton (node) ->
(relationship) ->
Newton's Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node)
Leibniz (node) ->
(relationship) ->
Leibniz's Calculus Invention (node) ->
(relationship) ->
Invention of Calculus (node) ->
(relationship) ->
Calculus (node) …Run Code Online (Sandbox Code Playgroud) 我正在尝试找到具有多个传入关系的所有节点.鉴于此数据:
a-[has]->b
a-[has]->c
d-[has]->b
Run Code Online (Sandbox Code Playgroud)
所以,我正在寻找一个返回'b'的查询,因为它有更多的传入.
此查询已结束.它返回'a'和'b',因为它们都有2个关系:
match (n)--()
with n,count(*) as rel_cnt
where rel_cnt > 1
return n;
Run Code Online (Sandbox Code Playgroud)
但是,此查询(添加' - >')不返回任何内容,我不知道原因:
match (n)-->()
with n,count(*) as rel_cnt
where rel_cnt > 1
return n;
Run Code Online (Sandbox Code Playgroud)
我错了吗?
我正在使用neo4j并执行此查询:
MATCH (n:Person) RETURN n.name LIMIT 5
Run Code Online (Sandbox Code Playgroud)
我得到的名字,但我也需要ids.请帮忙!
我想找出一个节点的所有传入和传出关系.我在其他问题中尝试了几个问题,但没有太多运气.这是我试过的两个
MATCH (a:User {username: "user6"})-[r*]-(b)
RETURN a, r, b
Run Code Online (Sandbox Code Playgroud)
我只有500个节点,它永远运行.一小时后我放弃了.
我试过这个
MATCH (c:User {username : 'user6'})-[r:*0..1]-(d)
WITH c, collect(r) as rs
RETURN c, rs
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
WARNING: Invalid input '*': expected whitespace or a rel type name (line 1, column 35 (offset: 34))
"MATCH (c {username : 'user6'})-[r:*0..1]-(d)"
Run Code Online (Sandbox Code Playgroud)
获得节点的所有关系的正确方法是什么?
我正在使用3.0.3版
我一直在通过python的Bulbflow处理Neo4j,现在需要一种方法来保存/导出子图.我已经看过Java甚至Ruby的方法,但是一个简单的Python方法似乎隐藏了我...
到目前为止,我找到了两条潜在的途径:
使用Networkx:我发现networkx可以加载来自多种不同格式的图形(我不确定neo4j存储它们的dbs的格式),但是我还没有找到一种方法只将一个子图提取到Networkx中.我认为这应该从gremlin查询完成,但我不知道如何去做.
我偏爱Networkx路径,因为它还附带了我希望应用于子图的网络分析算法.我觉得它也可以避免Bulbflow和py2neo之间的潜在冲突,虽然我不确定是否会存在这样的冲突.
任何建议将不胜感激!
提前致谢
我想在浏览器控制台上同时执行多个查询,这是我的请求:
CREATE (newNode1:NEW_NODE)
CREATE (newNode2:NEW_NODE)
MATCH (n1:LABEL_1 {id: "node1"}) CREATE (newNode1)-[:LINKED_TO]->(n1)
MATCH (n2:LABEL_2 {id: "node2"}) CREATE (newNode2)-[:LINKED_TO]->(n2)
Run Code Online (Sandbox Code Playgroud)
当我逐个执行它们没有问题,但是当我同时执行它们时,我得到以下错误:在CREATE和MATCH之间需要WITH
有没有办法纠正这个?
Neo4j是一个很好的映射关系数据的工具,但我很好奇在什么条件下它不是一个好的工具.
在哪些用例中使用neo4j是一个坏主意?
我想知道有一个ORM与图数据库(fe Neo4j)的解决方案(或需要).我跟踪关系(A与B相关,它与A通过C等相关,从而构建一个大图)实体(包括那些实体的附加属性)并需要将它们存储在DB中,我认为图形数据库完全适合这项任务.
现在,对于类似sql的数据库,我使用sqlalchemyśORM来存储我的对象,特别是因为我可以从数据库中检索对象并以pythonic样式使用它们(使用它们的方法等).
Neo4j或其他Graph-DB是否有任何对象映射解决方案,以便我可以在Graph-DB中存储和检索python对象并轻松使用它们?
或者你会编写一些函数或适配器,如python sqlite文档(http://docs.python.org/library/sqlite3.html#letting-your-object-adapt-itself)来检索和存储对象?