我正在研究一个项目,该项目涉及到使用Java中的知识表示,并且我得到了某种语义网络是解决它的方式的印象。如何在Java中使用Gremlin/Tinkerpop?
Gremlin/Tinkerpop似乎对图生成和遍历有非常好的语法,但我只能让它在独立的shell中工作。这是一种JVM语言,大概它有某种Java API?我尝试将源文件夹添加到Eclipse项目,并且它只是出现填充错误并拒绝工作。
有没有更好的方法来做到这一点?编译的库可能类似于我用来处理用户输入的斯坦福CoreNLP库?
我正在研究一个项目,该项目涉及到使用Java中的知识表示,并且我得到了某种语义网络是解决它的方式的印象。如何在Java中使用Gremlin/Tinkerpop?
Gremlin/Tinkerpop似乎对图生成和遍历有非常好的语法,但我只能让它在独立的shell中工作。这是一种JVM语言,大概它有某种Java API?我尝试将源文件夹添加到Eclipse项目,并且它只是出现填充错误并拒绝工作。
有没有更好的方法来做到这一点?编译的库可能类似于我用来处理用户输入的斯坦福CoreNLP库?
Tinkerpop 3提供了一个API(如RDBMS的JDBC)和(供应商特定的)实现。内存中的参考实现也是可用的。所以首先你需要决定你需要的实现。为了学习目的,我建议首先使用参考实现(TinkerGraph)。
最简单的方法就是使用maven。为此,添加以下的依赖:如果不使用maven
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>tinkergraph-gremlin</artifactId>
<version>${tinkergraph.version}</version>
</dependency>
,您需要将以下jar-文件添加到您的类路径(我不知道的尤伯杯罐子TinkerGraph的):
+- org.apache.tinkerpop:tinkergraph-gremlin:jar:3.0.1-incubating:compile
| \- org.apache.tinkerpop:gremlin-core:jar:3.0.1-incubating:compile
| +- org.apache.tinkerpop:gremlin-shaded:jar:3.0.1-incubating:compile
| +- commons-configuration:commons-configuration:jar:1.10:compile
| | \- commons-lang:commons-lang:jar:2.6:compile
| +- org.yaml:snakeyaml:jar:1.15:compile
| +- org.javatuples:javatuples:jar:1.2:compile
| +- com.carrotsearch:hppc:jar:0.7.1:compile
| +- com.fasterxml.jackson.core:jackson-databind:jar:2.5.3:compile
| | +- com.fasterxml.jackson.core:jackson-annotations:jar:2.5.0:compile
| | \- com.fasterxml.jackson.core:jackson-core:jar:2.5.3:compile
| +- com.jcabi:jcabi-manifests:jar:1.1:compile
| | \- com.jcabi:jcabi-log:jar:0.14:compile
| +- org.slf4j:slf4j-log4j12:jar:1.7.12:compile
| | +- org.slf4j:slf4j-api:jar:1.7.12:compile
| | \- log4j:log4j:jar:1.2.17:compile
| \- org.slf4j:jcl-over-slf4j:jar:1.7.12:compile
现在,您可以使用Java(或其他JVM基础)语言中的API。
Graph g = TinkerGraph.open(); // open in-memory Graph
注意:Tinkerpop3需要Java 8(它提供了一个非常好的基于Java 8流和lambda表达式的API)。
我知道这不是直接回答你的问题,但我现在是你的位置,这个信息可能派上用场。
我们目前正在使用tinkerpop 3.0.1与titan 1.0.0一起在一个项目中工作。 我强烈建议您广泛阅读tinkerpop documentation。
我目前正在尝试一种设计模式,我在groovy中有一个基本的图形工具类(gremlin groovy非常类似于你提到的独立shell)。 utils类的要点是包含所有遍历,访问和检索功能(从节点/ s x,遍历边y并获取prop z,等等)。这一点很重要,因为tinkerpop在版本和版本之间往往会有一些变化,这是一个单一的变化点。 然后我使用这个utils类的常规Java来实现我自己的ORM有点东西。
这里的一些grovy来源,我发现有用的(约4分钟,每个视频):
https://www.youtube.com/watch?v=1Trx7cKwMOQ
https://www.youtube.com/watch?v=u7NWMOL5aUo
PS:这里有一些有用的常规片段,将时间节省ü的路线:
请注意.fill(结果)作为获取您从外壳获得的信息的方法
def result = []
g.V().values().fill(result)
return result.first()