

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo di Java per connettersi a un'istanza database Neptune
<a name="access-graph-sparql-java"></a>

Questa sezione illustra come eseguire un esempio di Java completo che si connette a un'istanza database Amazon Neptune ed esegue una query SPARQL.

Segui queste istruzioni da un'istanza Amazon EC2 nello stesso cloud privato virtuale (VPC) dell'istanza database Neptune.

**Per connettersi a Neptune tramite Java**

1. Installare Apache Maven sull'istanza EC2. Se usi Amazon Linux 2023 (preferito), usa:

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

   Se usi Amazon Linux 2, scarica il file binario più recente da [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. Questo esempio è stato testato solo con Java 8. Per installare Java 8 sull'istanza EC2, digitare quanto segue:

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

1. Per impostare Java 8 come runtime predefinito sull'istanza EC2, digitare quanto segue:

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

   Quando richiesto, immetti il numero per Java 8.

1. Per impostare Java 8 come compilatore predefinito sull'istanza EC2, immettere quanto segue: 

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

   Quando richiesto, immetti il numero per Java 8.

1. In una nuova directory , creare un file `pom.xml`, quindi aprirlo in un editor di testo.

1. Copia quanto segue nel file `pom.xml` e salvalo (di solito puoi modificare i numeri di versione in base all'ultima versione stabile):

   ```
   <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>
   ```
**Nota**  
Se stai modificando un progetto Maven esistente, la dipendenza necessaria è evidenziata nel codice precedente.

1. Per creare sottodirectory per il codice sorgente di esempio (`src/main/java/com/amazonaws/`), immettere quanto segue nella riga di comando:

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

1. Nella directory `src/main/java/com/amazonaws/`, creare un file denominato `App.java`, quindi aprirlo in un editor di testo.

1. Copiare quanto segue nel file `App.java`. Sostituisci *your-neptune-endpoint* con l'indirizzo della tua istanza DB Neptune.
**Nota**  
Per informazioni su come trovare il nome host dell'istanza database Neptune, consulta la sezione [Connessione agli endpoint 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. Per compilare ed eseguire l'esempio, usare il comando Maven seguente:

   ```
   mvn compile exec:java
   ```

L'esempio precedente restituisce fino a 10 delle triple (subject-predicate-object) nel grafico utilizzando la `?s ?p ?o` query con un limite di 10. Per eseguire una query su qualcos'altro, sostituire la query con un'altra query SPARQL .

L'iterazione dei risultati dell'esempio stampa il valore di ogni variabile restituita. L'oggetto `Value` viene convertito in `String` e quindi stampato. Se modifichi la parte `SELECT` della query, dovrai modificare il codice.