使用 Java 連線至 Neptune 資料庫執行個體 - Amazon Neptune

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Java 連線至 Neptune 資料庫執行個體

本節會逐步引導您執行完整的 Java 範例,該範例會連線至 Amazon Neptune 資料庫執行個體並執行SPARQL查詢。

請遵循與 Neptune 資料庫EC2執行個體位於相同虛擬私有雲端 (VPC) 中的 Amazon 執行個體的這些指示。

使用 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. 輸入以下項目,將 Java 8 設定為EC2執行個體的預設執行期:

    sudo /usr/sbin/alternatives --config java

    出現提示時,輸入 Java 8 的數字。

  4. 輸入下列內容,將 Java 8 設定為EC2執行個體上的預設編譯器:

    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 檔案。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); } } } } }
  10. 使用下列 Maven 命令編譯並執行範例:

    mvn compile exec:java

上述範例使用限制為 10 的?s ?p ?o查詢,傳回圖形中最多 10 個三元 (subject-predicate-object)。若要查詢其他查詢,請將查詢取代為另一個SPARQL查詢。

範例中重複出現的結果將印出所傳回之各變數的值。Value 物件會轉換成 String,然後列印。如果您變更查詢的 SELECT 部分,您必須修改程式碼。