SPARQLUPDATELOADUtilización para importar datos a Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

SPARQLUPDATELOADUtilización para importar datos a Neptune

La sintaxis del SPARQL UPDATE LOAD comando se especifica en la recomendación de actualización SPARQL 1.1:

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT: (opcional) hace que la operación se realice correctamente aunque se haya producido un error durante el procesamiento.

    Puede resultar útil cuando una sola transacción contiene varias instrucciones, como "LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;", y si desea que la transacción se complete aunque algunos de los datos remotos no se hayan podido procesar.

  • URL of data to be loaded   — (Obligatorio) Especifica un archivo de datos remoto que contiene los datos que se van a cargar en un gráfico.

    El archivo remoto debe tener una de las siguientes extensiones:

    • .ntparaNTriples.

    • .nqparaNQuads.

    • .trig para Trig.

    • .rdfparaRDF/XML.

    • .ttl para Turtle.

    • .n3 para N3.

    • .jsonldpara JSON -LD.

  • INTO GRAPH(named graph into which to load the data)   — (Opcional) Especifica el gráfico en el que se deben cargar los datos.

    Neptune asocia cada triple con un gráfico con nombre. Puede especificar el gráfico con nombre predeterminado utilizando el gráfico con nombre alternativo URIhttp://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph, como se muestra a continuación:

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

Cuando necesite cargar muchos datos, le recomendamos que utilice el cargador masivo Neptune en lugar de. UPDATE LOAD Para obtener más información acerca del programa de carga masiva, consulte Uso del cargador masivo Amazon Neptune para ingerir datos.

Puede utilizar SPARQL UPDATE LOAD para cargar datos directamente desde Amazon S3 o desde archivos obtenidos de un servidor web con alojamiento propio. Los recursos que se van a cargar deben residir en la misma región que el servidor de Neptune y el punto final de los recursos debe estar permitido en el. VPC Para obtener información sobre cómo crear un punto de conexión de Amazon S3, consulte Creación de un VPC punto de conexión Amazon S3.

Todo SPARQL UPDATE LOAD URIs debe empezar conhttps://. Esto incluye Amazon S3URLs.

En contraste con el programa de carga masiva de Neptune, una llamada a SPARQL UPDATE LOAD es completamente transaccional.

Carga de archivos directamente desde Amazon S3 a Neptune mediante SPARQL UPDATE LOAD

Como Neptune no le permite transferir un IAM rol a Amazon S3 cuando lo usa SPARQL UPDATELOAD, el bucket de Amazon S3 en cuestión debe ser público o debe usar un Amazon S3 prefirmado URL en la consulta. LOAD

Para generar un archivo prefirmado URL para un archivo de Amazon S3, puede utilizar un AWS CLI comando como este:

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

A continuación, puede usar el resultado prefirmado URL en su LOAD comando:

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

Para obtener más información, consulte la sección sobre autenticación de solicitudes: uso de parámetros de consulta. La documentación de Boto3 muestra cómo utilizar un script de Python para generar un prefirmado. URL

además, el tipo de contenido de los archivos se cargarán se debe configurar correctamente.

  1. Establezca el tipo de contenido de los archivos cuando los cargue en Amazon S3 con el parámetro -metadata de esta manera:

    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. Confirme que la información del tipo de medios está presente. Ejecute:

    curl -v bucket-name/folder-name

    El resultado de este comando debería mostrar la información del tipo de medios que configura cuando carga los archivos.

  3. A continuación puede utilizar el comando de la SPARQL UPDATE LOAD para importar estos archivos a Neptune:

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

Los pasos anteriores solo funcionan para un bucket de Amazon S3 público o para un bucket al que se accede mediante un Amazon S3 prefirmado URL en la LOAD consulta.

También puede configurar un servidor proxy web para cargarlo desde un bucket de Amazon S3 privado, como se muestra a continuación:

Uso de un servidor web para cargar archivos en Neptune con SPARQL UPDATE LOAD
  1. Instale un servidor web en una máquina que se ejecute dentro de la VPC que aloja Neptune y los archivos que se van a cargar. Por ejemplo, si utiliza Amazon Linux, puede instalar Apache de la siguiente manera:

    sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
  2. Defina los MIME tipos de RDF contenido del archivo que va a cargar. SPARQLutiliza el Content-type encabezado enviado por el servidor web para determinar el formato de entrada del contenido, por lo que debe definir los MIME tipos relevantes para el servidor web.

    Por ejemplo, suponga que utiliza las siguientes extensiones de archivo para identificar formatos de archivo:

    • .ntparaNTriples.

    • .nqparaNQuads.

    • .trig para Trig.

    • .rdfparaRDF/XML.

    • .ttl para Turtle.

    • .n3 para N3.

    • .jsonldpara JSON -LD.

    Si utiliza Apache 2 como servidor web, editaría el archivo /etc/mime.types y agregaría los siguientes tipos:

    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. Confirme que el mapeo MIME de tipo L. funciona. Una vez que tenga su servidor web en funcionamiento y aloje los RDF archivos en los formatos que prefiera, puede probar la configuración enviando una solicitud al servidor web desde su servidor local.

    Por ejemplo, podría enviar una solicitud como esta:

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

    Después, en la salida detallada de curl, debería ver una línea como:

    Content-Type: application/rdf+xml

    Esto muestra que la asignación del tipo de contenido se definió con éxito.

  4. Ahora está listo para cargar datos con el SPARQL UPDATE comando:

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

El uso de SPARQL UPDATE LOAD puede desencadenar un tiempo de espera en el servidor web cuando el archivo de origen que se está cargando es grande. Neptune procesa los datos del archivo a medida que se transmiten y para un archivo grande puede tardar un tiempo superior al tiempo de espera configurado en el servidor. Esto, a su vez, puede provocar que el servidor cierre la conexión, lo que puede provocar el siguiente mensaje de error cuando Neptune encuentra algo inesperado EOF en la transmisión:

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

Si recibe este mensaje y no cree que el archivo de origen contenga sintaxis no válida, pruebe a aumentar la configuración de tiempo de espera en el servidor web. También puede diagnosticar el problema habilitando los registros de depuración en el servidor y buscando los tiempos de espera.