Menggunakan SPARQL UPDATE LOAD untuk mengimpor data ke Neptune - Amazon Neptune

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

Menggunakan SPARQL UPDATE LOAD untuk mengimpor data ke Neptune

Sintaks perintah SPARQL UPDATE LOAD ditentukan dalam Rekomendasi pembaruan SPARQL 1.1:

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT   –   (Opsional) Menyebabkan operasi mengembalikan sukses bahkan jika ada kesalahan selama pemrosesan.

    Hal ini dapat berguna ketika transaksi tunggal berisi beberapa pernyataan seperti "LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;" dan Anda ingin transaksinya selesai bahkan jika beberapa data jarak jauh tidak dapat diproses.

  • URL data yang akan dimuat   –   (Wajib) Menentukan file data jarak jauh yang berisi data yang akan dimuat ke dalam grafik.

    File jarak jauh harus memiliki salah satu ekstensi berikut:

    • .nt untuk NTriple.

    • .nq untuk NQuad.

    • .trig untuk Trig.

    • .rdf untuk RDF/XML.

    • .ttl untuk Turtle.

    • .n3 untuk N3.

    • .jsonld untuk JSON-LD.

  • INTO GRAPH(grafik bernama tujuan data dimuat)   –   (Opsional) Menentukan grafik tujuan data harus dimuat.

    Neptune mengasosiasikan setiap tripel dengan grafik bernama. Anda dapat menentukan grafik bernama default menggunakan URI grafik bernama fallback, http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph, seperti ini:

    INTO GRAPH <http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph>
catatan

Bila Anda perlu memuat banyak data, sebaiknya gunakan pemuat massal Neptune alih-alih UPDATE LOAD. Untuk informasi lebih lanjut tentang pemuat massal, lihat Menggunakan Amazon Neptune Bulk Loader untuk Menyerap Data.

Anda dapat menggunakan SPARQL UPDATE LOAD untuk memuat data langsung dari Amazon S3, atau dari file yang diperoleh dari server web yang di-host sendiri. Sumber daya yang akan dimuat harus berada di wilayah yang sama seperti server Neptune, dan titik akhir untuk sumber daya harus diizinkan dalam VPC. Untuk informasi tentang cara membuat titik akhir Amazon S3, lihat Membuat VPC Endpoint Amazon S3.

Semua URI SPARQL UPDATE LOAD harus dimulai dengan https://. Ini termasuk URL Amazon S3.

Berbeda dengan loader massal Neptune, panggilan ke SPARQL UPDATE LOAD sepenuhnya transaksional.

Memuat file langsung dari Amazon S3 ke Neptune menggunakan SPARQL UPDATE LOAD

Karena Neptune tidak mengizinkan Anda untuk melewatkan IAM role ke Amazon S3 ketika menggunakan SPARQL UPDATE LOAD, baik bucket Amazon S3 yang bersangkutan harus publik atau Anda harus menggunakan URL Amazon S3 pre-signed dalam kueri LOAD.

Untuk menghasilkan URL yang telah ditandatangani sebelumnya untuk file Amazon S3, Anda dapat menggunakan AWS CLI perintah seperti ini:

aws s3 presign --expires-in (number of seconds) s3://(bucket name)/(path to file of data to load)

Kemudian Anda dapat menggunakan URL pre-signed yang dihasilkan di dalam perintah LOAD Anda:

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)'

Untuk informasi lebih lanjut, lihat Melakukan Autentikasi Permintaan: Menggunakan Parameter Kueri. Dokumentasi Boto3 menunjukkan cara menggunakan script Python untuk menghasilkan URL pre-signed.

Selain itu, jenis konten file yang akan dimuatkan mesti ditetapkan dengan benar.

  1. Atur jenis konten file ketika Anda meng-upload mereka ke Amazon S3 dengan menggunakan parameter -metadata, seperti ini:

    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
  2. Konfirmasikan bahwa informasi jenis media benar-benar ada. Jalankan:

    curl -v bucket-name/folder-name

    Output dari perintah ini harus menunjukkan informasi jenis media yang Anda tetapkan saat mengunggah file.

  3. Kemudian Anda dapat menggunakan perintah SPARQL UPDATE LOAD untuk mengimpor file-file ini ke Neptune:

    curl https://your-neptune-endpoint:port/sparql \ -d "update=LOAD <https://s3.amazonaws.com/bucket-name/my-rdf-input/test.rdf>"

Langkah-langkah di atas bekerja hanya untuk bucket Amazon S3 publik, atau untuk bucket yang Anda akses menggunakan URL Amazon S3 pre-signed dalam kueri LOAD.

Anda juga dapat mengatur server proksi web untuk memuat dari bucket Amazon S3 privat, seperti yang ditunjukkan di bawah ini:

Menggunakan server web untuk memuat file ke Neptune dengan SPARQL UPDATE LOAD
  1. Instal server web pada mesin yang berjalan di dalam VPC yang menjadi host Neptune dan file yang akan dimuat. Misalnya, menggunakan Amazon Linux, Anda dapat menginstal Apache seperti berikut:

    sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
  2. Tentukan jenis MIME dari konten file RDF yang akan Anda muat. SPARQL menggunakan header Content-type yang dikirim oleh server web untuk menentukan format input konten, sehingga Anda harus menentukan jenis MIME yang relevan untuk Server web.

    Misalnya, misalkan Anda menggunakan ekstensi file berikut untuk mengidentifikasi format file:

    • .nt untuk NTriple.

    • .nq untuk NQuad.

    • .trig untuk Trig.

    • .rdf untuk RDF/XML.

    • .ttl untuk Turtle.

    • .n3 untuk N3.

    • .jsonld untuk JSON-LD.

    Jika Anda menggunakan Apache 2 sebagai server web, Anda akan mengedit /etc/mime.types file dan menambahkan jenis berikut:

    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
  3. Konfirmasikan bahwa pemetaan tipe MIME bekerja. Setelah server web Anda aktif dan berjalan dan meng-hosting file RDF dalam format pilihan Anda, Anda dapat menguji konfigurasi dengan mengirimkan permintaan ke server web dari host lokal Anda.

    Misalnya, Anda dapat mengirim permintaan seperti ini:

    curl -v http://localhost:80/test.rdf

    Kemudian, dalam output detail dari curl, Anda akan melihat baris seperti:

    Content-Type: application/rdf+xml

    Hal ini menunjukkan bahwa pemetaan jenis konten dinyatakan berhasil.

  4. Anda sekarang siap memuat data menggunakan perintah SPARQL UPDATE:

    curl https://your-neptune-endpoint:port/sparql \ -d "update=LOAD <http://web_server_private_ip:80/test.rdf>"
catatan

Menggunakan SPARQL UPDATE LOAD dapat memicu waktu henti pada server web ketika file sumber yang dimuat berukuran besar. Neptune memproses data file seperti data dialirkan masuk, dan untuk file besar yang dapat memakan waktu lebih lama dari batas waktu yang dikonfigurasi di server. Hal ini pada gilirannya dapat menyebabkan server untuk menutup koneksi, yang dapat mengakibatkan pesan kesalahan berikut ketika Neptune menemui EOF tak terduga di aliran:

{ "detailedMessage":"Invalid syntax in the specified file", "code":"InvalidParameterException" }

Jika Anda menerima pesan ini dan tidak percaya bahwa file sumber berisi sintaks yang tidak valid, coba tingkatkan pengaturan batas waktu di server web. Anda juga dapat mendiagnosis masalah dengan mengaktifkan debug log di server dan mencari waktu henti.