本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Java 连接到 Neptune 数据库实例
本节将引导您完成一个完整的 Java 示例的运行,该示例连接到 Amazon Neptune 数据库实例并执行查询。SPARQL
在与您的 Neptune 数据库EC2实例位于同一个虚拟私有云 (VPC) 中的 Amazon 实例中执行以下说明。
使用 Java 连接到 Neptune
-
在你的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
-
此示例仅使用 Java 8 进行测试。输入以下内容在您的EC2实例上安装 Java 8:
sudo yum install java-1.8.0-devel
-
输入以下内容,将 Java 8 设置为EC2实例的默认运行时:
sudo /usr/sbin/alternatives --config java
在系统提示时,输入 Java 8 的版本号。
-
输入以下内容,将 Java 8 设置为EC2实例上的默认编译器:
sudo /usr/sbin/alternatives --config javac
在系统提示时,输入 Java 8 的版本号。
-
在新目录中,创建
pom.xml
文件,然后在文本编辑器中打开它。 -
将以下内容复制到
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 项目,则所需依赖项将在上述代码中突出显示。
-
要为示例源代码创建子目录 (
src/main/java/com/amazonaws/
),请在命令行处输入以下命令:mkdir -p
src/main/java/com/amazonaws/
-
在
src/main/java/com/amazonaws/
目录中,创建名为App.java
的文件,然后在文本编辑器中打开它。 -
将以下内容复制到
App.java
文件中。Replace(替换)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); } } } } } -
使用以下 Maven 命令编译并运行示例:
mvn compile exec:java
前面的示例使用限制为 10 的?s ?p ?o
查询,返回图中最多 10 个三元组 (subject-predicate-object)。要查询其他内容,请将该查询替换为另一个SPARQL查询。
示例中结果的迭代输出返回的每个变量的值。Value
对象将转换为 String
,然后进行输出。如果更改查询的 SELECT
部分,您必须修改代码。