

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan Java untuk terhubung ke instans DB Neptune
<a name="access-graph-sparql-java"></a>

Bagian ini memandu Anda melalui proses berjalannya sampel Java lengkap yang menyambungkan ke instans DB Amazon Neptune dan melakukan kueri SPARQL.

Ikuti petunjuk ini dari instans Amazon EC2 di virtual private cloud (VPC) yang sama seperti instans Neptune DB Anda.

**Untuk menyambung ke Neptune menggunakan Java**

1. Install Apache Maven pada instans EC2 Anda. Jika menggunakan Amazon Linux 2023 (lebih disukai), gunakan:

   ```
   sudo dnf update -y
   sudo dnf install maven -y
   ```

   Jika menggunakan Amazon Linux 2, unduh biner terbaru dari [https://maven.apache.org/download.cgi:](https://maven.apache.org/download.cgi:)

   ```
   sudo yum remove maven -y
   wget https://dlcdn.apache.org/maven/maven-3/ <version>/binaries/apache-maven-<version>-bin.tar.gz
   sudo tar -xzf apache-maven-<version>-bin.tar.gz -C /opt/
   sudo ln -sf /opt/apache-maven-<version> /opt/maven
   echo 'export MAVEN_HOME=/opt/maven' >> ~/.bashrc
   echo 'export PATH=$MAVEN_HOME/bin:$PATH' >> ~/.bashrc
   source ~/.bashrc
   ```

1. Contoh ini diuji hanya dengan Java 8. Masukkan hal berikut ini untuk menginstal Java 8 pada instans EC2 Anda:

   ```
   sudo yum install java-1.8.0-devel
   ```

1. Masukkan hal berikut untuk mengatur Java 8 sebagai runtime default pada instans EC2 Anda:

   ```
   sudo /usr/sbin/alternatives --config java
   ```

   Saat diminta, masukkan nomor untuk Java 8.

1. Masukkan hal berikut untuk mengatur Java 8 sebagai compiler default pada instans EC2 Anda: 

   ```
   sudo /usr/sbin/alternatives --config javac
   ```

   Saat diminta, masukkan nomor untuk Java 8.

1. Di direktori baru, buat file `pom.xml`, lalu buka file tersebut dalam editor teks.

1. Salin hal berikut ke file `pom.xml` dan simpan (Anda biasanya dapat menyesuaikan nomor versi ke versi stabil terbaru):

   ```
   <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>
   ```
**catatan**  
Jika Anda memodifikasi proyek Maven yang ada, dependensi yang diperlukan disorot dalam kode sebelumnya.

1. Untuk membuat subdirektori untuk kode sumber contoh (`src/main/java/com/amazonaws/`), masukkan hal berikut ke baris perintah:

   ```
   mkdir -p src/main/java/com/amazonaws/
   ```

1. Di direktori `src/main/java/com/amazonaws/`, buat file bernama `App.java`, lalu buka file tersebut dalam editor teks.

1. Salin hal berikut ke dalam file `App.java`. Ganti *your-neptune-endpoint* dengan alamat instans DB Neptunus Anda.
**catatan**  
Untuk informasi tentang menemukan nama host instans DB Neptune Anda, lihat [Menghubungkan ke Titik Akhir Amazon Neptune.](feature-overview-endpoints.md). 

   ```
   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);
                 }
              }
           }
       }
   }
   ```

1. Gunakan perintah Maven berikut untuk mengonpilasi dan menjalankan sampel:

   ```
   mvn compile exec:java
   ```

Contoh sebelumnya mengembalikan hingga 10 dari triple (subject-predicate-object) dalam grafik dengan menggunakan `?s ?p ?o` query dengan batas 10. Untuk mengajukan kueri untuk sesuatu yang lain, gantikan kueri tersebut dengan kueri SPARQL lain.

Iterasi hasil dalam contoh mencetak nilai masing-masing variabel yang dkembalikan. Objek `Value` dikonversi menjadi `String` lalu dicetak. Jika Anda mengubah bagian `SELECT` dari kueri, Anda harus memodifikasi kodenya.