使用 Java 连接到 Neptune 数据库实例 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 Java 连接到 Neptune 数据库实例

此部分将指导您完成运行完整的 Java 示例,该示例连接到 Amazon Neptune 数据库实例并执行 SPARQL 查询。

从与您的 Neptune 数据库实例位于同一虚拟私有云 (VPC) 中的 Amazon EC2 实例中按照这些说明操作。

使用 Java 连接到 Neptune
  1. 在您的 EC2 实例上安装 Apache Maven。首先,输入以下命令以添加具有 Maven 程序包的存储库:

    sudo wget https://repos.fedorapeople.org/repos/dchen/apache-maven/epel-apache-maven.repo -O /etc/yum.repos.d/epel-apache-maven.repo

    输入以下命令以设置该程序包的版本号:

    sudo sed -i s/\$releasever/6/g /etc/yum.repos.d/epel-apache-maven.repo

    然后,可以使用 yum 安装 Maven:

    sudo yum install -y apache-maven
  2. 此示例仅使用 Java 8 进行测试。输入以下命令以在 EC2 实例上安装 Java 8:

    sudo yum install java-1.8.0-devel
  3. 输入以下命令以在 EC2 实例上将 Java 8 设置为默认运行时系统:

    sudo /usr/sbin/alternatives --config java

    在系统提示时,输入 Java 8 的版本号。

  4. 输入以下命令以在 EC2 实例上将 Java 8 设置为默认编译器:

    sudo /usr/sbin/alternatives --config javac

    在系统提示时,输入 Java 8 的版本号。

  5. 在新目录中,创建 pom.xml 文件,然后在文本编辑器中打开它。

  6. 将以下内容复制到 pom.xml 文件中并保存它(您通常可以将版本号调整为最新的稳定版本):

    <project xmlns="https://maven.apache.org/POM/4.0.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://maven.apache.org/POM/4.0.0 https://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.amazonaws</groupId> <artifactId>RDFExample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>RDFExample</name> <url>https://maven.apache.org</url> <dependencies> <dependency> <groupId>org.eclipse.rdf4j</groupId> <artifactId>rdf4j-runtime</artifactId> <version>3.6</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>com.amazonaws.App</mainClass> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
    注意

    如果您要修改现有的 Maven 项目,则所需依赖项将在上述代码中突出显示。

  7. 要为示例源代码创建子目录 (src/main/java/com/amazonaws/),请在命令行处输入以下命令:

    mkdir -p src/main/java/com/amazonaws/
  8. src/main/java/com/amazonaws/ 目录中,创建名为 App.java 的文件,然后在文本编辑器中打开它。

  9. 将以下内容复制到 App.java 文件中。your-neptune-endpoint替换为您的 Neptune 数据库实例的地址。

    注意

    有关查找 Neptune 数据库实例的主机名的信息,请参阅连接到 Amazon Neptune 端点部分。

    package com.amazonaws; import org.eclipse.rdf4j.repository.Repository; import org.eclipse.rdf4j.repository.http.HTTPRepository; import org.eclipse.rdf4j.repository.sparql.SPARQLRepository; import java.util.List; import org.eclipse.rdf4j.RDF4JException; import org.eclipse.rdf4j.repository.RepositoryConnection; import org.eclipse.rdf4j.query.TupleQuery; import org.eclipse.rdf4j.query.TupleQueryResult; import org.eclipse.rdf4j.query.BindingSet; import org.eclipse.rdf4j.query.QueryLanguage; import org.eclipse.rdf4j.model.Value; public class App { public static void main( String[] args ) { String sparqlEndpoint = "https://your-neptune-endpoint:port/sparql"; Repository repo = new SPARQLRepository(sparqlEndpoint); repo.initialize(); try (RepositoryConnection conn = repo.getConnection()) { String queryString = "SELECT ?s ?p ?o WHERE { ?s ?p ?o } limit 10"; TupleQuery tupleQuery = conn.prepareTupleQuery(QueryLanguage.SPARQL, queryString); try (TupleQueryResult result = tupleQuery.evaluate()) { while (result.hasNext()) { // iterate over the result BindingSet bindingSet = result.next(); Value s = bindingSet.getValue("s"); Value p = bindingSet.getValue("p"); Value o = bindingSet.getValue("o"); System.out.print(s); System.out.print("\t"); System.out.print(p); System.out.print("\t"); System.out.println(o); } } } } }
  10. 使用以下 Maven 命令编译并运行示例:

    mvn compile exec:java

前面的示例使用限制为 10 的?s ?p ?o查询,返回图中最多 10 个三元组 (subject-predicate-object)。要查询其他内容,请将此查询替换为其他 SPARQL 查询。

示例中结果的迭代输出返回的每个变量的值。Value 对象将转换为 String,然后进行输出。如果更改查询的 SELECT 部分,您必须修改代码。