기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SPARQL 쿼리 엔진이 Neptune에서 작동하는 방식
SPARQL explain
기능이 제공하는 정보를 사용하려면 Amazon Neptune SPARQL 쿼리 엔진의 작동 방식에 대한 몇 가지 세부 정보를 이해해야 합니다.
엔진은 모든 SPARQL 쿼리를 연산자 파이프라인으로 변환합니다. 첫 번째 연산자부터 시작하여 바인딩 목록이라는 중간 솔루션이 이 연산자 파이프라인을 통해 진행됩니다. 바인딩 목록을 테이블 헤더가 쿼리에 사용된 변수의 하위 집합인 테이블이라고 할 수 있습니다. 테이블의 각 행은 평가 지점까지의 결과를 나타냅니다.
데이터에 대해 두 개의 네임스페이스 접두사가 정의되어 있다고 가정해 보겠습니다.
@prefix ex: <http://example.com> . @prefix foaf: <http://xmlns.com/foaf/0.1/> .
다음은 이 컨텍스트에서 간단한 바인딩 목록의 예입니다.
?person | ?firstName ------------------------------------------------------ ex:JaneDoe | "Jane" ex:JohnDoe | "John" ex:RichardRoe | "Richard"
세 명의 사람 각각에 대해 이 목록은 ?person
변수를 사람의 식별자에 바인딩하고, ?firstName
변수를 사람의 이름에 바인딩합니다.
일반적으로 데이터에 값이 없는 쿼리에 변수의 OPTIONAL
선택 항목이 있는 경우 변수를 언바운드 상태로 둘 수 있습니다.
PipelineJoin
연산자는 explain
출력에 있는 Neptune 쿼리 엔진 연산자의 예입니다. 이 연산자는 이전 연산자에서 수신 바인딩 집합을 입력으로 가져와 트리플 패턴에 조인합니다((?person, foaf:lastName,
?lastName)
). 이 작업은 입력 스트림에서 ?person
변수에 대한 바인딩을 사용하고, 트리플 패턴으로 대체하고, 데이터베이스에서 트리플을 찾습니다.
이전 테이블의 수신 바인딩 컨텍스트에서 실행될 때 PipelineJoin
은 다음과 같은 3개의 조회를 평가합니다.
(ex:JaneDoe, foaf:lastName, ?lastName) (ex:JohnDoe, foaf:lastName, ?lastName) (ex:RichardRoe, foaf:lastName, ?lastName)
이 접근 방식은 바인딩된 상태(as-bound) 평가라고 합니다. 이 평가 프로세스의 솔루션은 수신 솔루션에 다시 조인되며, 수신 솔루션에서 감지된 ?lastName
을 패딩합니다. 세 명의 사람들에 대한 성을 모두 찾은 경우 연산자는 다음과 같은 발신 바인딩 목록을 생성합니다.
?person | ?firstName | ?lastName --------------------------------------- ex:JaneDoe | "Jane" | "Doe" ex:JohnDoe | "John" | "Doe" ex:RichardRoe | "Richard" | "Roe"
이 발신 바인딩 목록은 파이프라인에서 다음 연산자에 대한 입력 역할을 합니다. 마지막으로 파이프라인에서 마지막 연산자의 출력은 쿼리 결과를 정의합니다.
연산자 파이프라인은 모든 연산자가 단일 연결 연산자에 대한 솔루션을 출력한다는 점에서 종종 선형입니다. 그러나 경우에 따라 구조가 더 복잡할 수 있습니다. 예를 들어 SPARQL 쿼리의 UNION
연산자는 Copy
작업에 매핑됩니다. 이 작업은 바인딩을 복제하고 복사본을 두 개의 하위 계획으로 전달합니다. 하나는 UNION
의 왼쪽에 대한 것이며 다른 하나는 오른쪽에 대한 것입니다.
연산자에 대한 자세한 내용은 Neptune SPARQL explain 연산자 단원을 참조하십시오.