Utiliser SPARQL UPDATE LOAD pour importer des données dans Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utiliser SPARQL UPDATE LOAD pour importer des données dans Neptune

La syntaxe de la commande SPARQL UPDATE LOAD est spécifiée dans leRecommandation de mise à jour SPARQ :

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT— (Facultatif) Permet à l'opération de revenir à la réussite même en cas d'erreur lors du traitement.

    Cela peut être utile lorsqu'une seule transaction contient plusieurs instructions telles que"LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"et vous souhaitez que la transaction soit terminée même si certaines données distantes n'ont pas pu être traitées.

  • URL des données à charger— (Obligatoire) Spécifie un fichier de données distant contenant les données à charger dans un graphe.

    Le fichier distant doit avoir l'une des extensions suivantes :

    • .nt pour NTriples.

    • .nq pour NQuads.

    • .trig pour Trig.

    • .rdf pour RDF/XML.

    • .ttl pour Turtle.

    • .n3 pour N3.

    • .jsonld pour JSON-LD.

  • INTO GRAPH(graphique nommé dans lequel les données doivent être chargées)— (Facultatif) Spécifie le graphique dans lequel les données doivent être chargées.

    Neptune associe chaque triple à un graphe nommé. Vous pouvez spécifier le graphe nommé par défaut à l'aide de l'URI named-graph de secours,http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph, comme suit :

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

Lorsque vous devez charger un grand nombre de données, nous vous recommandons d'utiliser le chargeur en vrac Neptune plutôt que UPDATE LOAD. Pour de plus amples informations sur le chargeur de vrac, consultezUtilisation du chargeur en vrac Amazon Neptune pour ingérer des données.

Vous pouvez utiliserSPARQL UPDATE LOADpour charger des données directement depuis Amazon S3 ou depuis des fichiers obtenus depuis un serveur Web auto-hébergé. Les ressources à charger doivent résider dans la même région que le serveur Neptune, et le point de terminaison des ressources doit être autorisé dans le VPC. Pour de plus amples informations sur la création d'un point de terminaison Amazon S3Création d'un point de terminaison VPC Amazon S3.

TousSPARQL UPDATE LOADLes URI doivent commencer parhttps://. Cela inclut les URL Amazon S3.

Contrairement au chargeur en vrac Neptune, un appel àSPARQL UPDATE LOADest entièrement transactionnel.

Chargement de fichiers directement depuis Amazon S3 dans Neptune à l'aide de SPARQL UPDATE LO

Neptune ne vous permettant pas de transmettre un rôle IAM à Amazon S3 lorsque vous utilisez SPARQL UPDATE LOAD, soit le compartiment Amazon S3 en question doit être public, soit vous devez utiliser unURL Amazon S3 pré-signéedans la requête LOAD.

Pour générer une URL pré-signée pour un fichier Amazon S3, vous pouvez utiliser unAWS CLIcommande comme suit :

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

Vous pouvez ensuite utiliser l'URL pré-signée qui en résulte dans votreLOADcommande :

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

Pour plus d'informations, veuillez consulter la rubriqueDemandes d'authentification : Utilisation de paramètres de requête. La documentation Boto3 montre comment utiliser un script Python pour générer une URL présignée.

De plus, le type de contenu des fichiers à charger doit être défini correctement.

  1. Définissez le type de contenu des fichiers lorsque vous les chargez dans Amazon S3 à l'aide du-metadataparamètre, comme suit :

    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. Vérifiez que les informations relatives au type de support sont réellement présentes. Exécuter :

    curl -v bucket-name/folder-name

    La sortie de cette commande doit indiquer les informations relatives au type de support que vous définissez lors du chargement des fichiers.

  3. Vous pouvez alors utiliser le pluginSPARQL UPDATE LOADcommande pour importer ces fichiers dans Neptune :

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

Les étapes ci-dessus ne fonctionnent que pour un compartiment Amazon S3 public ou pour un compartiment auquel vous accédez à l'aide d'unURL Amazon S3 pré-signéedans la requête LOAD.

Vous pouvez également configurer un serveur proxy Web pour le charger à partir d'un compartiment Amazon S3 privé, comme indiqué ci-dessous :

Utilisation d'un serveur Web pour charger des fichiers dans Neptune avec SPARQL UPDATE LOAD

  1. Installez un serveur Web sur une machine s'exécutant au sein du VPC qui héberge Neptune et les fichiers à charger. Par exemple, à l'aide d'Amazon Linux, vous pouvez installer Apache comme suit :

    sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
  2. Définissez le(s) type(s) MIME du contenu de fichiers RDF que vous allez charger. SPARQL utilise l'en-tête Content-type envoyé par le serveur web pour déterminer le format d'entrée du contenu et, par conséquent, vous devez définir les types MIME correspondants pour le serveur web.

    Par exemple, supposons que vous utilisiez les extensions de fichiers suivantes pour identifier les formats de fichiers :

    • .nt pour NTriples.

    • .nq pour NQuads.

    • .trig pour Trig.

    • .rdf pour RDF/XML.

    • .ttl pour Turtle.

    • .n3 pour N3.

    • .jsonld pour JSON-LD.

    Si vous utilisez Apache 2 en tant que serveur web, vous devez modifier le fichier /etc/mime.types et ajouter les types suivants :

    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. Vérifiez que le mappage de type MIME fonctionne. Une fois que votre serveur web est opérationnel avec l'hébergement des fichiers RDF dans le(s) format(s) de votre choix, vous pouvez tester la configuration en envoyant une demande au serveur web à partir de votre hôte local.

    Par exemple, vous pouvez envoyer une requête comme celle-ci :

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

    Ensuite, dans la sortie détaillée à partir de curl, vous devriez voir une ligne telle que :

    Content-Type: application/rdf+xml

    Ceci indique que le mappage du type de contenu a été défini avec succès.

  4. Vous êtes maintenant prêt à charger les données à l'aide de la commande SPARQL UDPATE :

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

L'utilisation de SPARQL UPDATE LOAD peut déclencher un délai d'expiration sur le serveur web lorsque le fichier source en cours de chargement est volumineux. Neptune traite les données de fichier au fur et à mesure de leur diffusion et, pour un fichier volumineux, cela peut prendre plus de temps que le délai d'expiration configuré sur le serveur. Cela peut à son tour entraîner la fermeture de la connexion par le serveur, ce qui peut entraîner le message d'erreur suivant lorsque Neptune rencontre un EOF inattendu dans le flux :

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

Si vous recevez ce message et que vous ne pensez pas que votre fichier source contienne une syntaxe non valide, essayez d'augmenter les paramètres de délai d'expiration sur le serveur web. Vous pouvez également diagnostiquer le problème en activant les journaux de débogage sur le serveur et en recherchant les délais d'expiration.