기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 설명서
또한 로드할 파일의 콘텐츠 유형을 올바르게 설정해야 합니다.
-
-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 -
미디어 유형 정보가 실제로 제공되는지 확인합니다. 실행합니다.
curl -v
bucket-name/folder-name
이 명령의 출력은 파일을 업로드할 때 설정한 미디어 유형 정보를 표시해야 합니다.
-
그러면
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
-
Neptune 및 로드할 파일을 호스팅VPC하는 내에서 실행되는 시스템에 웹 서버를 설치합니다. 예를 들어 Amazon Linux를 사용하는 경우 다음과 같이 Apache를 설치할 수 있습니다.
sudo yum install httpd mod_ssl sudo /usr/sbin/apachectl start
-
로드할 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
-
MIME유형 매핑이 작동하는지 확인합니다. 웹 서버를 실행하고 선택한 형식(들)으로 RDF 파일을 호스팅한 후에는 로컬 호스트에서 웹 서버로 요청을 보내 구성을 테스트할 수 있습니다.
예를 들어 다음과 같이 요청을 보낼 수 있습니다.
curl -v http://localhost:80/test.rdf
그러면
curl
의 자세한 출력에 다음과 같은 라인이 표시되어야 합니다.Content-Type: application/rdf+xml
이는 콘텐츠 유형 매핑이 성공적으로 정의되었음을 보여줍니다.
-
이제 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" }
이 메시지가 나타나는데 소스 파일에 잘못된 구문이 포함되어 있지 않은 경우 웹 서버의 시간 초과 설정을 늘려 보십시오. 서버에서 디버그 로그를 활성화하고 시간 초과를 찾아 문제를 진단할 수도 있습니다.