将库(RNeo4j)粘贴到控制台时,我收到上述错误.用尽了想法.请帮忙,这可能是非常微不足道的
如何将Cypher查询的结果加载到igraphpython中,保留所有边缘和顶点属性?
我正在努力寻找家庭关系.
例如,我想知道我和父亲的妻子之间的关系是什么?它应该归还母亲.
我和我母亲的女儿之间有什么关系?它应该归还姐姐.
这就是我的图表.有8个关系和2个标签(男性或女性).
如何在不指定任何节点的情况下实现此目的?例如,如果我想知道我和我父亲的女儿之间的关系.
我想做一些类似于MATCH () -[:Father]->()-[:Daughter]->()开始和结束节点之间的关系.
我确定这个查询绝对错误,但我希望你知道我在这里想要实现的目标.
我有一个标签图,它们彼此相关.我的目标是创建一个Cypher查询,它将通过1或2跳返回与输入标签数组相关的所有标签.
我提出了一个查询,这个查询并不像预期的那样有效.
MATCH (t:Tag)
WHERE t.name IN ["A", "B", "C"]
WITH t
MATCH (a:Tag)-[:RELATED*1..2]-(t)
RETURN DISTINCT a;
Run Code Online (Sandbox Code Playgroud)
此查询首先找到的节点A,B,C然后搜索代码,该相关的A,B 或 C通过1个节点或更小.
我想要做的是找到与所有三个节点(A,B 和 C)相关的标签.
我知道我可以连接MATCH和WITH声明,并做这样的事情:
MATCH (t:Tag)-[:RELATED*1..2]-(a:Tag)
WHERE t.name="A"
WITH DISTINCT a
MATCH (t:Tag)-[:RELATED*1..2]-(a)
WHERE t.name="B"
WITH DISTINCT a
MATCH (t:Tag)-[:RELATED*1..2]-(a)
WHERE t.name="C"
...
RETURN DISTINCT a;
Run Code Online (Sandbox Code Playgroud)
但它运行非常缓慢,当输入的数量增加标签(在这种情况下,只有3输入标签:A,B,C).
那么有没有办法在一个查询中创建它,类似于我的第一次尝试?
我知道有很多类似的问题被问到了.但似乎答案无法解决我的问题.我有一个非常大的图表,大约1百万个节点和300万个关系.当我尝试使用以下语句删除它们时:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
DELETE n,r
Run Code Online (Sandbox Code Playgroud)
然后服务器崩溃了.好的,我添加了LIMIT:
MATCH (n)
OPTIONAL MATCH (n)-[r]-()
WITH n,r LIMIT 1000000
DELETE n,r
Run Code Online (Sandbox Code Playgroud)
服务器不会崩溃,但会出现异常:
org.neo4j.kernel.api.exceptions.TransactionFailureException: Node record Node[1578965,used=false,rel=662269,prop=-1,labels=Inline(0x0:[]),light] still has relationships
Run Code Online (Sandbox Code Playgroud)
我猜LIMIT 1000000会停止我对关系的删除.然后它转向删除节点.这导致了这个例外.我对吗?因为我不太了解LIMIT 1000000的过程.
所以我该怎么做?每次我需要清除图表时,我不想删除数据库文件.设置更大的内存空间可能会有所帮助,但我的图表的大小也可能会变大.崩溃最终会发生.
谢谢你的回复.我试过你的方法."Neo.DatabaseError.Statement.ExecutionFailure"异常将在我第二次运行语句时出现:
MATCH (n)
WITH n LIMIT 1000000
DETACH DELETE n
Run Code Online (Sandbox Code Playgroud)
或本声明:
MATCH ()-[r]-()
WITH r
LIMIT 1000000
DELETE r
Run Code Online (Sandbox Code Playgroud)
我放弃.我想我最好删除我文件夹中的所有文件.这对我来说很简单.
我通过运行以下方法尝试获取结果集时收到错误/异常:
public IEnumerable<NeoProduct> GetAllProductsUnderCategory(int categoryId)
{
var query = neo.Cypher.Match("(c:Category{CategoryId:{id}})<-[*](p:Product)")
.WithParam("id", categoryId)
.Return(p => p.As<NeoProduct>()).Results;
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它是一个返回NeoProducts列表的非常简单的方法.NeoProduct是一个简单的POCO,具有以下属性:
public int CategoryId { get; set; }
public string CategoryName { get; set; }
public int ParentCategoryId { get; set; }
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪是:
[OverflowException: Value was either too large or too small for an Int64.]
System.Number.ParseInt64(String value, NumberStyles options, NumberFormatInfo numfmt) +14278344
System.String.System.IConvertible.ToInt64(IFormatProvider provider) +55
System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider) +14285879
Neo4jClient.Serialization.CommonDeserializerMethods.CoerceValue(DeserializationContext context, PropertyInfo propertyInfo, JToken value, IEnumerable`1 typeMappings, Int32 nestingLevel) in D:\temp\tmpC806\Neo4jClient\Serialization\CommonDeserializerMethods.cs:101 …Run Code Online (Sandbox Code Playgroud) 如果我尝试简单
thingNode.setProperty("uuid", thing.getId());
我明白了
java.util.UUID] is not a supported property value
然而,将128位UUID存储为36个字符的字符串将非常浪费.如果我将UUID拆分为单独的属性
thingNode.setProperty("uuid-begin", thing.getId().getMostSignificantBits());
thingNode.setProperty("uuid-end", thing.getId().getLeastSignificantBits());
Run Code Online (Sandbox Code Playgroud)
看来我只能在单个属性上创建索引,并且必须以某种方式将UUID的两个位连接成一个属性.如上所述,由于存储空间非常低效,因此不希望使用字符串.有任何想法吗?
我是后台流程的新手,所以如果我做错了假设,请随时指出。
我正在尝试编写一个脚本,用于将导入数据从大型CSV文件导入Neo4j db(将其视为数据流,无休止地)。csv文件仅包含两列-user_a_id和user_b_id,它们映射有向关系。需要考虑的几件事:
我当前的解决方案:我正在使用sidekiq,并且有一个工作人员批量读取文件,并分派工作人员在数据库中创建边。
我遇到的问题:
可能的解决方案:建立一个同步队列,并且只有一个工作线程来执行写操作(似乎sidekiq或resque都没有该选项)。这可能非常慢,因为只有一个线程在工作。
或者,我可以编写自己的实现,该实现创建一个工作程序以根据user_id(每个队列一个唯一的ID)构建多个作业队列,并使用Redis进行存储。然后,为每个队列分配一个工作线程以写入数据库。设置最大队列数,这样我就不会用完内存,并在队列耗尽所有作业后将其删除(如果以后会看到相同的user_id,请重新构建它)。-虽然听起来并不简单,所以我更喜欢在使用之前使用现有的库。
我的问题是-是否可以使用现有的宝石?处理此问题的良好做法是什么?
我使用隐士推理器和Java加载了Neo4j和Pizza.owl文件.当我通过一个简单的查询:
match (n) where n="name:Pizza" return n;
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Don't know how to compare that. Left: Node[1]{name:"owl:Thing"} (NodeProxy); Right: "name:Pizza" (String)
Run Code Online (Sandbox Code Playgroud)
NodeProxy是数据类型吗?我怎样才能让他们两个进行比较.我可以在查询时进行投射吗?是否有任何查询来更改整个图节点的数据类型?如何检查节点的类型?