SPARQL UPDATE LOAD 를 사용하여 Neptune으로 데이터 가져오기 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

SPARQL UPDATE LOAD 를 사용하여 Neptune으로 데이터 가져오기

SPARQL UPDATE LOAD 명령의 구문은 SPARQL1.1 업데이트 권장 사항 에 지정되어 있습니다.

LOAD SILENT (URL of data to be loaded) INTO GRAPH (named graph into which to load the data)
  • SILENT   –   (선택 사항) 처리 중에 오류가 발생한 경우에도 작업이 성공을 반환하도록 합니다.

    이는 단일 트랜잭션에 "LOAD ...; LOAD ...; UNLOAD ...; LOAD ...;"와 같이 여러 문이 포함되어 있고 일부 원격 데이터를 처리할 수 없는데 트랜잭션을 완료하려는 경우에 유용할 수 있습니다.

  • URL of data to be loaded   – (필수) 그래프에 로드할 데이터가 포함된 원격 데이터 파일을 지정합니다.

    원격 파일의 확장자는 다음 중 하나여야 합니다.

    • .nt 용NTriples.

    • .nq 용NQuads.

    • Trig에 대해 .trig

    • .rdf RDF/용XML.

    • Turtle에 대해 .ttl

    • N3에 대해 .n3

    • .jsonld JSON-LD용.

  • INTO GRAPH(named graph into which to load the data)   – (선택 사항 ) 데이터를 로드할 그래프를 지정합니다.

    Neptune은 트리플마다 이름이 있는 그래프를 연결합니다. 다음과 http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph같이 폴백 명명된 그래프 URI, 를 사용하여 기본 명명된 그래프를 지정할 수 있습니다.

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

많은 데이터를 로드해야 하는 경우 대신 Neptune 벌크 UPDATE 로더를 사용하는 것이 좋습니다LOAD. 대량 로더에 대한 자세한 내용은 Amazon Neptune 벌크 로더를 사용하여 데이터 수집 섹션을 참조하세요.

SPARQL UPDATE LOAD를 사용하여 Amazon S3에서 직접 데이터를 로드하거나 자체 호스팅한 웹 서버에서 가져온 파일에서 데이터를 로드할 수 있습니다. 로드할 리소스는 Neptune 서버와 동일한 리전에 있어야 하며 리소스의 엔드포인트는 에서 허용되어야 합니다VPC. Amazon S3 엔드포인트 생성에 관한 자세한 내용은 Amazon S3 VPC 엔드포인트 생성 섹션을 참조하세요.

모두 로 시작해야 SPARQL UPDATE LOAD URIs 합니다https://. 여기에는 Amazon S3 가 포함됩니다URLs.

Neptune 대량 로더와 달리 SPARQL UPDATE LOAD에 대한 호출은 완전한 트랜잭션입니다.

를 사용하여 Amazon S3에서 Neptune으로 직접 파일 로드 SPARQL UPDATE LOAD

Neptune은 SPARQL UPDATE 를 사용할 때 Amazon S3에 IAM 역할을 전달하는 것을 허용하지 않으므로 해당 LOAD Amazon S3 버킷은 퍼블릭이거나 LOAD 쿼리에 미리 서명된 Amazon S3URL를 사용해야 합니다.

Amazon S3 파일에 URL 대해 미리 서명된 를 생성하려면 다음과 같은 AWS CLI 명령을 사용할 수 있습니다.

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

그런 다음 LOAD 명령URL에 미리 서명된 결과 를 사용할 수 있습니다.

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

자세한 내용은 요청 인증: 쿼리 파라미터 사용을 참조하십시오. Boto3 설명서는 Python 스크립트를 사용하여 미리 서명된 를 생성하는 방법을 보여줍니다URL.

또한 로드할 파일의 콘텐츠 유형을 올바르게 설정해야 합니다.

  1. -metadata 파라미터를 사용하여 파일을 Amazon S3에 업로드할 때 해당 파일의 콘텐츠 유형을 다음과 같이 설정합니다.

    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. 미디어 유형 정보가 실제로 제공되는지 확인합니다. 실행합니다.

    curl -v bucket-name/folder-name

    이 명령의 출력은 파일을 업로드할 때 설정한 미디어 유형 정보를 표시해야 합니다.

  3. 그러면 SPARQL UPDATE LOAD 명령을 사용하여 이러한 파일을 Neptune으로 가져올 수 있습니다.

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

위의 단계는 퍼블릭 Amazon S3 버킷 또는 LOAD 쿼리에서 미리 서명된 Amazon S3URL를 사용하여 액세스하는 버킷에서만 작동합니다.

아래와 같이 프라이빗 Amazon S3 버킷에서 로드하도록 웹 프록시 서버를 설정할 수도 있습니다.

웹 서버를 사용하여 를 사용하여 Neptune에 파일 로드 SPARQL UPDATE LOAD
  1. Neptune 및 로드할 파일을 호스팅VPC하는 내에서 실행되는 시스템에 웹 서버를 설치합니다. 예를 들어 Amazon Linux를 사용하는 경우 다음과 같이 Apache를 설치할 수 있습니다.

    sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
  2. 로드할 RDF 파일 콘텐츠의 MIME 유형(들)을 정의합니다. SPARQL 는 웹 서버에서 보낸 Content-type 헤더를 사용하여 콘텐츠의 입력 형식을 결정하므로 웹 서버에 대한 관련 MIME 유형을 정의해야 합니다.

    예를 들어 다음 파일 확장명을 사용하여 파일 형식을 식별한다고 가정하겠습니다.

    • .nt 용NTriples.

    • .nq 용NQuads.

    • Trig에 대해 .trig

    • .rdf RDF/용XML.

    • Turtle에 대해 .ttl

    • N3에 대해 .n3

    • .jsonld JSON-LD용.

    Apache 2를 웹 서버로 사용하는 경우 /etc/mime.types 파일을 편집하고 다음 유형을 추가합니다.

    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. MIME유형 매핑이 작동하는지 확인합니다. 웹 서버를 실행하고 선택한 형식(들)으로 RDF 파일을 호스팅한 후에는 로컬 호스트에서 웹 서버로 요청을 보내 구성을 테스트할 수 있습니다.

    예를 들어 다음과 같이 요청을 보낼 수 있습니다.

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

    그러면 curl의 자세한 출력에 다음과 같은 라인이 표시되어야 합니다.

    Content-Type: application/rdf+xml

    이는 콘텐츠 유형 매핑이 성공적으로 정의되었음을 보여줍니다.

  4. 이제 SPARQL UPDATE 명령을 사용하여 데이터를 로드할 준비가 되었습니다.

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

SPARQL UPDATE LOAD를 사용하면 로드 중인 소스 파일이 클 때 웹 서버에서 시간 초과를 트리거할 수 있습니다. Neptune은 스트리밍되는 파일 데이터를 처리하고 서버에 구성된 제한 시간보다 오래 걸릴 수 있는 큰 파일을 처리합니다. 이로 인해 서버가 연결을 닫을 수 있으며, 이로 인해 Neptune이 스트림EOF에서 예상치 못한 상황에 직면할 때 다음과 같은 오류 메시지가 표시될 수 있습니다.

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

이 메시지가 나타나는데 소스 파일에 잘못된 구문이 포함되어 있지 않은 경우 웹 서버의 시간 초과 설정을 늘려 보십시오. 서버에서 디버그 로그를 활성화하고 시간 초과를 찾아 문제를 진단할 수도 있습니다.