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 SPARQL UPDATE LOAD per importare dati in Neptune
La sintassi del SPARQL UPDATE LOAD comando è specificata nella raccomandazione di aggiornamento SPARQL1.1
LOAD SILENT
(URL of data to be loaded)
INTO GRAPH(named graph into which to load the data)
-
SILENT
: (facoltativo) fa sì che l'operazione restituisca un esito positivo anche se si è verificato un errore durante l'elaborazione.Ciò può essere utile quando una singola transazione contiene più istruzioni come
"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"
e si desidera che la transazione venga completata anche se non è stato possibile elaborare alcuni dati remoti. -
URL of data to be loaded
— (Obbligatorio) specifica un file di dati remoto contenente dati da caricare in un grafico.Il file remoto deve avere una delle seguenti estensioni:
.nt
perNTriples..nq
perNQuads..trig
per Trig..rdf
perRDF/XML..ttl
per Turtle..n3
per N3..jsonld
per JSON -LD.
-
INTO GRAPH
(named graph into which to load the data)
— (Facoltativo) Speciifica il grafico in cui devono essere caricati i dati.Neptune associa ogni tripla a un grafo nominato. È possibile specificare il grafico denominato di default utilizzando il fallback named-graphURI,
http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
in questo modo:INTO GRAPH <http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph>
Nota
Quando devi caricare molti dati, ti consigliamo di utilizzare il bulk loader Neptune anziché. UPDATE LOAD Per ulteriori informazioni sullo strumento di caricamento in blocco, consulta Utilizzo del bulk loader Amazon Neptune per importare dati.
Puoi utilizzare SPARQL UPDATE LOAD
per caricare dati direttamente da Amazon S3 o da file ottenuti da un server Web in self-hosting. Le risorse da caricare devono risiedere nella stessa regione del server Neptune e l'endpoint per le risorse deve essere consentito in. VPC Per informazioni su come creare un endpoint Amazon S3, vedi Creazione di un endpoint Amazon S3 VPC.
Tutto deve iniziare SPARQL UPDATE LOAD
URIs con. https://
Ciò include Amazon S3URLs.
Diversamente dallo strumento di caricamento in blocco Neptune, una chiamata a SPARQL UPDATE LOAD
è completamente transazionale.
Caricamento di file direttamente da Amazon S3 in Neptune utilizzando SPARQL UPDATE LOAD
Per generare un file prefirmato URL per un file Amazon S3, puoi usare AWS CLI un comando come questo:
aws s3 presign --expires-in
(number of seconds)
s3://(bucket name)
/(path to file of data to load)
Quindi puoi utilizzare il prefirmato risultante URL nel tuo comando: LOAD
curl https://
(a Neptune endpoint URL)
:8182/sparql \ --data-urlencode 'update=load(pre-signed URL of the remote Amazon S3 file of data to be loaded)
\ into graph(named graph)
'
Per ulteriori informazioni, consulta Autenticazione delle richieste: utilizzo dei parametri di query. La documentazione di Boto3
Inoltre, il tipo di contenuto dei file da caricare deve essere impostato correttamente.
-
Imposta il tipo di contenuto dei file quando li carichi in Amazon S3 usando il parametro
-metadata
, ad esempio:aws s3 cp test.nt s3://
bucket-name/my-plain-text-input
/test.nt --metadata Content-Type=text/plain aws s3 cp test.rdf s3://bucket-name/my-rdf-input
/test.rdf --metadata Content-Type=application/rdf+xml -
Conferma che sia presente l'informazione sul tipo di supporto. Esegui:
curl -v
bucket-name/folder-name
L'output di questo comando mostra le informazioni sul tipo di supporto impostate durante il caricamento dei file.
-
Quindi, puoi utilizzare il comando
SPARQL UPDATE LOAD
per importare questi file in Neptune:curl https://
your-neptune-endpoint
:port
/sparql \ -d "update=LOAD <https://s3.amazonaws.com/bucket-name
/my-rdf-input/test.rdf
>"
I passaggi precedenti funzionano solo per un bucket Amazon S3 pubblico o per un bucket a cui accedi utilizzando un Amazon S3 prefirmato nella query. URL LOAD
È inoltre possibile impostare un server proxy Web per il caricamento da un bucket Amazon S3 privato, come illustrato di seguito:
Utilizzo di un server Web per caricare file in Neptune con SPARQL UPDATE LOAD
-
Installa un server web su una macchina in esecuzione all'interno del VPC che ospita Neptune e i file da caricare. Ad esempio, usando Amazon Linux, puoi installare Apache come segue:
sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
-
Definite il MIME tipo o i tipi di RDF contenuto del file che intendete caricare. SPARQLutilizza l'
Content-type
intestazione inviata dal server Web per determinare il formato di input del contenuto, quindi è necessario definire i MIME tipi pertinenti per il server Web.Ad esempio, supponiamo che desideri utilizzare le seguenti estensioni di file per identificare i formati di file:
.nt
perNTriples..nq
perNQuads..trig
per Trig..rdf
perRDF/XML..ttl
per Turtle..n3
per N3..jsonld
per JSON -LD.
Se stai usando Apache 2 come server Web, dovrai modificare il file
/etc/mime.types
e aggiungere i seguenti tipi:text/plain nt application/n-quads nq application/trig trig application/rdf+xml rdf application/x-turtle ttl text/rdf+n3 n3 application/ld+json jsonld
-
Conferma che la MIME mappatura -type funzioni. Una volta che il server web è attivo e funzionante e che ospita RDF i file nel formato o nei formati che preferisci, puoi testare la configurazione inviando una richiesta al server web dal tuo host locale.
Ad esempio, potresti inviare una richiesta di questo tipo:
curl -v http://localhost:80/test.rdf
Quindi, nell'output dettagliato di
curl
, dovresti visualizzare una riga come questa:Content-Type: application/rdf+xml
Questo dimostra che la mappatura del tipo di contenuto è stata definita correttamente.
-
Ora sei pronto per caricare i dati usando il SPARQL UPDATE comando:
curl https://
your-neptune-endpoint
:port
/sparql \ -d "update=LOAD <http://web_server_private_ip
:80/test.rdf>"
Nota
Utilizzando SPARQL UPDATE LOAD
può attivare un timeout sul server Web quando il file di origine che viene caricato è grande. Neptune elabora i dati del file mentre vengono trasmessi in streaming e per un file di grandi dimensioni che può richiedere più tempo del timeout configurato sul server. Ciò a sua volta può causare la chiusura della connessione da parte del server, il che può causare il seguente messaggio di errore quando Neptune rileva un imprevisto nello stream: EOF
{ "detailedMessage":"Invalid syntax in the specified file", "code":"InvalidParameterException" }
Se si riceve questo messaggio e non si ritiene che il file di origine contenga una sintassi non valida, provare ad aumentare le impostazioni di timeout sul server Web. È inoltre possibile diagnosticare il problema abilitando i registri di debug sul server e cercando i timeout.