use*_*268 4 java artificial-intelligence gremlin tinkerpop3
我正在从事一个涉及在 Java 中使用知识表示的项目,我的印象是某种语义网络是实现它的方法。
Gremlin/Tinkerpop 似乎有非常好的图形生成和遍历语法,但我只能让它在独立的 shell 中工作。它是一种 JVM 语言,所以大概它有某种 Java API?我尝试将源文件夹添加到 Eclipse 项目中,但它充满了错误并且拒绝工作。
有更好的方法吗?也许是一个编译库,类似于我用来处理用户输入的斯坦福 CoreNLP 库?
Tinkerpop 3 提供了一个 API(就像 JDBC 对 RDBMS 所做的那样)和(特定于供应商的)实现。还提供内存中参考实现。因此,首先您需要决定所需的实施方式。出于学习目的,我建议首先使用参考实现 (TinkerGraph)。
最简单的开始方法是使用 Maven。为此,添加以下依赖项:
<dependency>
<groupId>org.apache.tinkerpop</groupId>
<artifactId>tinkergraph-gremlin</artifactId>
<version>${tinkergraph.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
如果不使用 Maven,则需要将以下 jar 文件添加到类路径中(我不知道 TinkerGraph 的 uber-jar):
+- 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
Run Code Online (Sandbox Code Playgroud)
现在您可以在 Java(或其他 JVM 基础)语言中使用 API。
Graph g = TinkerGraph.open(); // open in-memory Graph
Run Code Online (Sandbox Code Playgroud)
注意:Tinkerpop3 需要 Java 8(它提供了一个基于 Java 8 流和 lambda 的非常好的 API!)。