Usando SPARQL UPDATE LOAD para importar dados para o Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando SPARQL UPDATE LOAD para importar dados para o Neptune

A sintaxe do SPARQL UPDATE LOAD comando é especificada na recomendação de atualização SPARQL 1.1:

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT: (opcional) faz com que a operação seja bem-sucedida mesmo que tenha ocorrido um erro durante o processamento.

    Isso pode ser útil quando uma única transação contém várias declarações, como "LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;" e você deseja que a transação seja concluída mesmo que alguns dos dados remotos não possam ser processados.

  • URL of data to be loaded   — (Obrigatório) Especifica um arquivo de dados remoto contendo dados a serem carregados em um gráfico.

    O arquivo remoto deve ter uma das seguintes extensões:

    • .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 o gráfico no qual os dados devem ser carregados.

    O Neptune associa cada triplo a um grafo nomeado. Você pode especificar o gráfico nomeado padrão usando o gráfico alternativo chamado URIhttp://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph, assim:

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

Quando você precisar carregar muitos dados, recomendamos que você use o carregador em massa Neptune em vez de. UPDATE LOAD Para obter mais informações sobre o carregador em massa, consulte Usar o carregador em massa do Amazon Neptune para ingerir dados.

É possível usar SPARQL UPDATE LOAD para carregar dados diretamente do Amazon S3 ou de arquivos obtidos de um servidor da web hospedado automaticamente. Os recursos a serem carregados devem residir na mesma região do servidor Neptune, e o endpoint dos recursos deve ser permitido no. VPC Para obter informações sobre como criar um endpoint do Amazon S3, consulte Criação de um endpoint Amazon S3 VPC.

Tudo SPARQL UPDATE LOAD URIs deve começar comhttps://. Isso inclui o Amazon S3URLs.

Ao contrário do carregador em massa do Neptune, uma chamada para SPARQL UPDATE LOAD é totalmente transacional.

Carregando arquivos diretamente do Amazon S3 para o Neptune usando SPARQL UPDATE LOAD

Como o Neptune não permite que você passe IAM uma função para o Amazon S3 durante o uso, o bucket do Amazon S3 em questão deve ser público SPARQL UPDATE LOAD ou você deve usar um Amazon S3 pré-assinado na consulta. URL LOAD

Para gerar um arquivo pré-assinado URL para o Amazon S3, você pode usar um AWS CLI comando como este:

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

Em seguida, você pode usar o resultado pré-assinado URL em seu 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 obter mais informações, consulte Autenticação de solicitações: usando parâmetros de consulta. A documentação do Boto3 mostra como usar um script Python para gerar um script pré-assinado. URL

Além disso, o tipo de conteúdo dos arquivos a serem carregados deve ser definido corretamente.

  1. Defina o tipo de conteúdo de arquivos ao fazer upload deles no Amazon S3 usando o parâmetro -metadata, como:

    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 se as informações de tipo de mídia estão realmente presentes. Execute:

    curl -v bucket-name/folder-name

    A saída desse comando deve mostrar as informações de tipo de mídia que você define ao carregar os arquivos.

  3. Depois, você pode usar o comando SPARQL UPDATE LOAD para importar esses arquivos para o Neptune:

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

As etapas acima funcionam somente para um bucket público do Amazon S3 ou para um bucket que você acessa usando um Amazon URL S3 pré-assinado na consulta. LOAD

Você também pode configurar um servidor de proxy web para carregar a partir de um bucket privado do Amazon S3, conforme mostrado abaixo:

Usando um servidor web para carregar arquivos no Neptune com SPARQL UPDATE LOAD
  1. Instale um servidor web em uma máquina rodando dentro do VPC que está hospedando o Neptune e os arquivos a serem carregados. Por exemplo, usando o Amazon Linux, você pode instalar o Apache da seguinte forma:

    sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
  2. Defina o (s) MIME tipo (s) do RDF conteúdo do arquivo que você vai carregar. SPARQLusa o Content-type cabeçalho enviado pelo servidor web para determinar o formato de entrada do conteúdo, então você deve definir os MIME tipos relevantes para o servidor web.

    Por exemplo, suponha que você use as seguintes extensões de arquivo para identificar formatos de arquivo:

    • .ntparaNTriples.

    • .nqparaNQuads.

    • .trig para Trig.

    • .rdfparaRDF/XML.

    • .ttl para Turtle.

    • .n3 para N3.

    • .jsonldpara JSON -LD.

    Se você estiver usando o Apache 2 como servidor da Web, edite o arquivo /etc/mime.types e adicione os seguintes 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 se o mapeamento do MIME tipo -funciona. Depois de ter seu servidor web instalado e funcionando e hospedando RDF arquivos no (s) formato (s) de sua escolha, você pode testar a configuração enviando uma solicitação ao servidor web do seu host local.

    Por exemplo, você pode enviar uma solicitação como esta:

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

    Em seguida, na saída detalhada de curl, você deve ver uma linha como:

    Content-Type: application/rdf+xml

    Isso mostra que o mapeamento de tipo de conteúdo foi definido com êxito.

  4. Agora você está pronto para carregar dados usando o SPARQL UPDATE comando:

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

O uso de SPARQL UPDATE LOAD pode acionar um tempo limite no servidor da Web quando o arquivo de origem que está sendo carregado é grande. O Neptune processa os dados do arquivo à medida que são transmitidos, e, para um arquivo grande, isso pode demorar mais do que o tempo limite configurado no servidor. Isso, por sua vez, pode fazer com que o servidor feche a conexão, o que pode resultar na seguinte mensagem de erro quando Neptune encontra um inesperado no fluxo: EOF

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

Se receber essa mensagem e não acreditar que o arquivo de origem contenha uma sintaxe inválida, tente aumentar as definições de tempo limite no servidor da Web. Também é possível diagnosticar o problema ativando logs de depuração no servidor e procurando tempos limite.