Utilisation 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.

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

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

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT : (facultatif) fait en sorte que l'opération renvoie une réussite même en cas d'erreur lors du traitement.

    Cela peut être utile lorsqu'une seule transaction contient plusieurs déclarations, comme "LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;", et si vous souhaitez qu'elle soit exécutée même si certaines données distantes n'ont pas pu être traitées.

  • URL of data to be loaded   — (Obligatoire) Spécifie un fichier de données distant contenant les données à charger dans un graphique.

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

    • .ntpourNTriples.

    • .nqpourNQuads.

    • .trig pour Trig.

    • .rdfpourRDF/XML.

    • .ttl pour Turtle.

    • .n3 pour N3.

    • .jsonldpour JSON -LD.

  • INTO GRAPH(named graph into which to load the data)   — (Facultatif) Spécifie le graphique dans lequel les données doivent être chargées.

    Neptune associe chaque triplet à un graphe nommé. Vous pouvez spécifier le graphe nommé par défaut à l'aide du graphe nommé de secours URIhttp://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph, comme ceci :

    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 plus d'informations sur le chargeur en bloc, consultez Utilisation du chargeur en vrac Amazon Neptune pour ingérer des données.

Vous pouvez utiliser SPARQL UPDATE LOAD pour charger des données directement à partir d'Amazon S3 ou de fichiers obtenus à partir d'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 en savoir plus sur la création d'un point de terminaison Amazon S3, consultez Création d'un point de VPC terminaison Amazon S3.

Tout SPARQL UPDATE LOAD URIs doit commencer parhttps://. Cela inclut Amazon S3URLs.

Contrairement au chargeur en bloc Neptune, un appel à SPARQL UPDATE LOAD est entièrement transactionnel.

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

Neptune ne vous permettant pas de transmettre un IAM rôle à Amazon S3 lors de son utilisation SPARQL UPDATELOAD, soit le compartiment Amazon S3 en question doit être public, soit vous devez utiliser un Amazon S3 pré-signé URL dans la requête. LOAD

Pour générer un fichier pré-signé URL pour un fichier Amazon S3, vous pouvez utiliser une AWS CLI commande comme celle-ci :

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

Vous pouvez ensuite utiliser le pré-signé qui en résulte URL dans votre LOAD commande :

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, consultez Authentification des demandes : utilisation des paramètres de requête. La documentation Boto3 montre comment utiliser un script Python pour générer un présigné. URL

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 paramètre -metadata, 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. Ensuite, vous pouvez utiliser la commande SPARQL UPDATE LOAD 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'un Amazon S3 pré-signé URL dans la LOAD requête.

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 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 ou les MIME types de RDF contenu de fichier que vous allez charger. SPARQLutilise l'Content-typeen-tête envoyé par le serveur Web pour déterminer le format d'entrée du contenu. Vous devez donc définir les MIME types appropriés pour le serveur Web.

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

    • .ntpourNTriples.

    • .nqpourNQuads.

    • .trig pour Trig.

    • .rdfpourRDF/XML.

    • .ttl pour Turtle.

    • .n3 pour N3.

    • .jsonldpour 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 MIME -type fonctionne. Une fois que votre serveur Web est opérationnel et que vous avez RDF hébergé les fichiers dans le ou les formats de votre choix, vous pouvez tester la configuration en envoyant une demande au serveur Web depuis votre hébergeur 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 SPARQL UPDATE commande :

    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 imprévu EOF 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.