首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在初始化gremlin groovy脚本引擎时,如何用janus-graph导入替换补丁包导入?

在初始化gremlin groovy脚本引擎时,如何用janus-graph导入替换补丁包导入?
EN

Stack Overflow用户
提问于 2018-03-01 03:29:48
回答 1查看 376关注 0票数 1

我用janus-plugin这样初始化gremlin-script-engine:

代码语言:javascript
复制
GremlinScriptEngineManager engineManager = new DefaultGremlinScriptEngineManager();
engineManager.addPlugin(JanusGraphGremlinPlugin.instance());
engine = engineManager.getEngineByName("gremlin-groovy");

引擎通常使用一些janus元素(例如Multiplicity.ONE2MANY)来评估查询:

代码语言:javascript
复制
qu = "mgmt.makeEdgeLabel('"+ TEST_EDGE_LABEL+"').multiplicity(ONE2MANY).make();";
engine.evalWithManagementTransaction(qu);

..。但是对于查询:

代码语言:javascript
复制
qu = "mgmt.makePropertyKey('"+TEST_PROPERTY_KEY+"')"
        + ".dataType(String.class).cardinality(Cardinality.SINGLE).make();";

我得到了:

代码语言:javascript
复制
MissingPropertyException: No such property: SINGLE for class: org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality

似乎脚本引擎尝试使用org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality而不是janus one org.janusgraph.core.Cardinality

PS:如果我在查询中使用类org.janusgraph.core.Cardinality.SINGLE的全名或者只使用Cardinality枚举的值(例如只使用SINGLE),那么一切都可以正常工作。

如何从插件中删除补丁程序导入或强制脚本引擎使用janus导入...或者更改gremlin-queries是有意义的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-01 03:52:44

在控制台中,您可以执行和别名操作:

代码语言:javascript
复制
gremlin> import org.apache.tinkerpop.gremlin.structure.VertexProperty.Cardinality as Card
gremlin> Card
==>class org.apache.tinkerpop.gremlin.structure.VertexProperty$Cardinality

但出于某种原因,我不认为这会对Gremlin ScriptEngine起作用。我不认为我们已经暴露了别名的能力。

我认为您必须使用org.janusgraph.core.Cardinality.SINGLE的完整类名。当然,我想知道您为什么要以这种方式修改模式。通常,模式修改是在GremlinScriptEngine外部处理的管理功能,更直接地在代码中或在控制台中作为脚本进行处理。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49037198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档