我正在使用一个生成对象的框架,Node
他们已经分配了一个id.现在需要将它们转换为Titan顶点,并在框架中控制相同的ID(访问时node.id
)
public long addNode(Node node) {
TitanVertex vertex = (TitanVertex) g.addVertex(null);
g.commit();
vertex.setProperty(ID, node.id);
vertex.setProperty(TYPE, node.type);
vertex.setProperty(VERSION, node.version);
vertex.setProperty(TIME, node.time);
vertex.setProperty(DATA, node.data);
...
Run Code Online (Sandbox Code Playgroud)
错误:
java.lang.IllegalArgumentException: Name is reserved: id
Run Code Online (Sandbox Code Playgroud)
但它似乎不允许它.我应该使用一些虚假财产来模仿二级身份证吗?泰坦有办法做到这一点吗?
谢谢!
我正在寻找通过两个数据集在TitanGraph DB上的边缘执行图聚合(groupBy,groupCount)查询:
大约10,000个节点和大约100万个边缘
大约200,000个节点和大约10亿个边缘
有谁知道我需要在什么时候安装Faunus才能在1分钟内完成这种类型的gremlin查询?
我正在将 Titan 与 Cassandra 一起使用,并且有几个关于使用 Gremlin 查询数据库的(相关)问题:
1.) 有没有比计算所有顶点更快的方法
g.V.count()
Run Code Online (Sandbox Code Playgroud)
Titan 声称使用索引。但是如何使用没有属性的索引?
WARN c.t.t.g.transaction.StandardTitanTx - Query requires iterating over all vertices [<>]. For better performance, use indexes
Run Code Online (Sandbox Code Playgroud)
2.) 是否有比计算属性为“myProperty”的所有顶点更快的方法
g.V.has('myProperty').count()
Run Code Online (Sandbox Code Playgroud)
再次泰坦意味着以下:
WARN c.t.t.g.transaction.StandardTitanTx - Query requires iterating over all vertices [(myProperty<> null)]. For better performance, use indexes
Run Code Online (Sandbox Code Playgroud)
但是,我又该如何做到这一点?我已经有一个“myProperty”的索引,但它需要一个值来快速查询。
3.) 与边缘相同的问题......
我是Java,Gremlin,Nodejs,Tickerpop,Maven以及其他所有人的新手.这段代码有什么作用?特别是'java.import'在做什么?它是Java类吗?这与Titan有什么关系?
var Titan = require('titan-node');
var gremlin = new Titan.Gremlin({ loglevel: 'OFF' });
var TinkerGraphFactory = gremlin.java.import('com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory');
var graph = TinkerGraphFactory.createTinkerGraphSync();
var g = gremlin.wrap(graph);
g.V('name', 'marko').next(function (err, v) {
v.getProperty('name', function (err, value) {
console.log(value);
});
});
Run Code Online (Sandbox Code Playgroud)
为什么当我使用Rexster时,我看不到这里要查询的数据库?
如果给定的顶点没有特定的属性,g.V.hasNot('non-existent-property', 'value')
查询的结果应该是什么
?顶点是否应该由这样的查询发出?
使用 TinkerPop 和 Titan 的内存图时,我得到了矛盾的结果:
gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.V.hasNot("abcd", true)
==>v[1]
==>v[2]
==>v[3]
==>v[4]
==>v[5]
==>v[6]
Run Code Online (Sandbox Code Playgroud)
以上对我来说很好 - 顶点没有指定的属性(设置为true
),所以所有都返回。但是如果我在 Titan 的内存图中做类似的事情:
gremlin> g2 = TitanFactory.open(com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.buildConfiguration().set(com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.STORAGE_BACKEND, "inmemory"))
==>titangraph[inmemory:[127.0.0.1]]
gremlin> g2.addVertex(null)
==>v[256]
gremlin> g2.V.hasNot("abcd", true)
Run Code Online (Sandbox Code Playgroud)
它不返回任何结果。哪一个是对的?
g.V(apple).properties("name").drop();
Run Code Online (Sandbox Code Playgroud)
这是我尝试删除苹果顶点的属性,但得到一个错误
java.lang.IllegalStateException:无法访问元素,因为其封闭的事务已关闭且未绑定
基本上我试图检查我们可以修改TitanDB中的模式吗?我浏览文档但没有得到任何关于它的事情.
我将Titan 1.0版本和带有REST Api的Gremlin Server用于创建和更新Vertex详细信息。如何使用vertexId删除顶点?
我正在尝试在Docker(v1.13.0)中设置Titan/Cassandra/Gremlin-Server堆栈.我面临的问题是,尝试连接到默认端口上的Gremlin-Server的应用程序8182
报告错误(详情如下).
首先,这是一些相关的版本信息:
设置在a Dockerfile
中进行,以便可重现.它假定一个卡桑德拉容器已经存在,在运行cassandra.yaml
中start_rpc
已设置为true
.
该Dockerfile
如下:
FROM openjdk:alpine
ENV TITAN 'titan-1.0.0-hadoop1'
RUN apk update && apk add bash unzip && rm -rf /var/cache/apk/* \
&& adduser -S -s /bin/bash -D srg \
&& wget -O /tmp/$TITAN.zip http://s3.thinkaurelius.com/downloads/titan/$TITAN.zip \
&& unzip /tmp/$TITAN.zip -d /opt && ln -s /opt/$TITAN /opt/titan \
&& rm /tmp/*.zip \
&& chown -R srg /opt/$TITAN/ \
&& /opt/titan/bin/gremlin-server.sh -i …
Run Code Online (Sandbox Code Playgroud) 我试图用JanusGraph在Gremlin shell中输出一个子图作为GraphSON.
TinkerPop文档供参考:http://tinkerpop.apache.org/docs/current/reference/#graphson-reader-writer
当我编写完整的图形时,这工作正常,但是,当我想编写一个我使用这些命令查询的子图时:
gremlin> subGraph = g.V(45240).repeat(__.bothE().subgraph('subGraph').bothV()).times(4).cap('subGraph').next()
Run Code Online (Sandbox Code Playgroud)
我使用相同的写命令:
gremlin> subGraph.io(IoCore.graphson()).writeGraph("45240_sub4.json")
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
(是java.lang.IllegalStateException)(通过引用链:org.janusgraph.graphdb.relations.RelationIdentifier ["inVertexId"])
搜索周围,我发现另一个线程说我需要导入一个包以便正确地执行此操作(对于TitanGraph,但我认为它也适用于JanusGraph):在gremlin中导入包
但是,每当我尝试导入时:
gremlin> import com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
导入定义无效:'com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule'; 原因:启动失败:script1494618250861805544050.groovy:1:无法解析类com.thinkaurelius.titan.graphdb.tinkerpop.io.graphson.TitanGraphSONModule @ line 1,第1列.import com.thinkaurelius.titan.graphdb.tinkerpop.io. graphson.TitanGraphSONModule ^
1错误
如何使用JanusGraph在Gremlin shell中将子图输出为GraphSON?
考虑上图。我想要一个 gremlin 查询,它返回所有节点之间具有多个边的节点,如图所示。
该图是使用 Neo4j 密码查询获得的: MATCH (d:dest)-[r]-(n:cust) WITH d,n, count(r) as pop RETURN d, n ORDER BY common desc LIMIT 5
例如: 在RITUPRAKA... 和 Asia之间有 8 个多重边,因此查询返回了 2 个节点以及边,与其他节点类似。
注意:图中还有其他节点,它们之间只有一条边,这些节点将不会被返回。
我想在gremlin中做同样的事情。
我使用了下面给出的查询 gV().as('out').out().as('in').select('out','in').groupCount().unfold().filter(select (值).is(gt(1))).select(键)
它显示 out:v[1234],in:v[3456] .....
但我不想显示节点的 ID,而是想显示节点的值,例如 out:ICIC1234,in:HDFC234
我已将查询修改为 gV().values("name").as('out').out().as('in').values("name").select('out','in' )。groupCount().unfold().filter(select(values).is(gt(1))).select(keys)
但它显示类似 classcastException 的错误,要遍历的每个顶点都使用索引进行快速迭代