기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SPARQL와 함께 사용되는 DESCRIBE 쿼리 힌트
SPARQL DESCRIBE
쿼리는 리소스 설명을 요청하는 유연한 메커니즘을 제공합니다. 그러나 SPARQL 사양은의 정확한 의미 체계를 정의하지 않습니다DESCRIBE
.
엔진 릴리스 1.2.0.2부터 Neptune은 다양한 상황에 적합한 여러 DESCRIBE
모드와 알고리즘을 지원합니다.
이 샘플 데이터 세트는 다양한 모드를 설명하는 데 도움이 될 수 있습니다.
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix : <https://example.com/> . :JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JohnDoe :firstName "John" . :JaneDoe :knows _:b1 . _:b1 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . :RichardRoe :firstName "Richard" . _:s1 rdf:type rdf:Statement . _:s1 rdf:subject :JaneDoe . _:s1 rdf:predicate :knows . _:s1 rdf:object :JohnDoe . _:s1 :knowsFrom "Berlin" . :ref_s2 rdf:type rdf:Statement . :ref_s2 rdf:subject :JaneDoe . :ref_s2 rdf:predicate :knows . :ref_s2 rdf:object :JohnDoe . :ref_s2 :knowsSince 1988 .
아래 예제에서는 다음과 같은 SPARQL 쿼리를 사용하여 리소스에 대한 설명을 요청:JaneDoe
하고 있다고 가정합니다.
DESCRIBE <https://example.com/JaneDoe>
describeMode
SPARQL 쿼리 힌트
hint:describeMode
SPARQL 쿼리 힌트는 Neptune에서 지원하는 다음 SPARQL DESCRIBE
모드 중 하나를 선택하는 데 사용됩니다.
ForwardOneStep
DESCRIBE 모드
다음과 같이 describeMode
쿼리 힌트를 사용하여 ForwardOneStep
모드를 간접적으로 호출합니다.
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "ForwardOneStep" }
이 ForwardOneStep
모드는 설명할 리소스의 속성과 전달 링크만 반환합니다. 이 예제에서는 다음과 같이 설명할 리소스인 :JaneDoe
를 보유한 트리플을 반환합니다.
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b301990159 .
DESCRIBE 쿼리는 입력 데이터 세트와 비교하여 매번 IDs가 다른와 같은 빈 노드가 _:b301990159
있는 트리플을 반환할 수 있습니다.
SymmetricOneStep
DESCRIBE 모드
SymmetricOneStep
는 쿼리 힌트를 제공하지 않는 경우 기본 DESCRIBE 모드입니다. 다음과 같이 describeMode
쿼리 힌트를 사용하여 명시적으로 간접 호출할 수도 있습니다.
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SymmetricOneStep" }
SymmetricOneStep
시맨틱에서 DESCRIBE
는 설명할 리소스의 속성, 정방향 링크 및 역방향 링크를 반환합니다.
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b318767375 . _:b318767631 rdf:subject :JaneDoe . :RichardRoe :knows :JaneDoe . :ref_s2 rdf:subject :JaneDoe .
간결 경계 설명(CBD
) DESCRIBE 모드
간결한 경계 설명(CBD
) 모드는 다음과 같은 describeMode
쿼리 힌트를 사용하여 간접적으로 호출됩니다.
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "CBD" }
CBD
시맨틱에 따라 DESCRIBE
는 설명할 리소스의 간결한 경계 설명(W3C에서 정의한
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b285212943 . _:b285212943 :knows :RichardRoe . _:b285213199 rdf:subject :JaneDoe . _:b285213199 rdf:type rdf:Statement . _:b285213199 rdf:predicate :knows . _:b285213199 rdf:object :JohnDoe . _:b285213199 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .
RDF 리소스(즉, RDF 그래프의 노드)에 대한 간결한 경계 설명은 해당 노드를 중심으로 한 가장 작은 하위 그래프로, 단독으로 사용할 수 있습니다. 실제로 이는 그래프를 루트로 지정된 노드를 사용하는 트리라고 생각하면 트리에 잎이 있는 것처럼 빈 노드(bnode)가 없다는 의미입니다. bnode는 외부에서 주소를 지정하거나 후속 쿼리에 사용할 수 없으므로, 현재 노드에서 다음 단일 홉을 찾기 위해 그래프를 탐색하는 것만으로는 충분하지 않습니다. 또한 후속 쿼리에 사용할 수 있는 항목(bnode 이외의 항목)을 충분히 찾아내야 합니다.
CBD 계산
소스 RDF 그래프의 특정 노드(시작 노드 또는 루트)를 고려할 때 해당 노드의 CBD는 다음과 같이 계산됩니다.
문의 주제가 시작 노드인 소스 그래프의 모든 문을 하위 그래프에 포함하세요.
재귀적으로, 지금까지 빈 노드 객체가 있는 하위 그래프의 모든 문에 대해서는 문의 주제가 빈 노드이고 아직 하위 그래프에 포함되지 않은 소스 그래프의 모든 문을 하위 그래프에 포함합니다.
재귀적으로 지금까지 하위 그래프에 포함된 모든 문에 대해 소스 그래프에서 이러한 문을 수정하는 경우 각 수정의
rdf:Statement
노드에서 시작하는 CBD를 포함합니다.
그러면 객체 노드가 IRI 참조 또는 리터럴이거나 그래프에서 문 제목 역할을 하지 않는 빈 노드인 하위 그래프가 생성됩니다. 단일 CBD 또는 SPARQL CONSTRUCT 쿼리를 사용하여 SELECT를 계산할 수 없습니다.
대칭 간결 경계 설명(SCBD
) DESCRIBE 모드
간결한 대칭적 경계 설명(SCBD
) 모드는 다음과 같은 describeMode
쿼리 힌트를 사용하여 간접적으로 호출됩니다.
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE <https://example.com/JaneDoe> { hint:Query hint:describeMode "SCBD" }
SCBD
시맨틱에 따라 DESCRIBE
는 W3C가 VoID 어휘를 사용하여 연결된 데이터 세트 설명
:JaneDoe :firstName "Jane" . :JaneDoe :knows :JohnDoe . :JaneDoe :knows _:b335544591 . _:b335544591 :knows :RichardRoe . :RichardRoe :knows :JaneDoe . _:b335544847 rdf:subject :JaneDoe . _:b335544847 rdf:type rdf:Statement . _:b335544847 rdf:predicate :knows . _:b335544847 rdf:object :JohnDoe . _:b335544847 :knowsFrom "Berlin" . :ref_s2 rdf:subject :JaneDoe .
ForwardOneStep
및 SymmetricOneStep
모드에 비해 CBD 및 SCBD의 장점은 빈 노드가 항상 표현을 포함하도록 확장된다는 것입니다. SPARQL를 사용하여 빈 노드를 쿼리할 수 없으므로 이는 중요한 이점일 수 있습니다. 또한 CBD 및 SCBD 모드도 수정을 고려합니다.
참고로 describeMode
쿼리 힌트는 WHERE
절의 일부일 수도 있습니다.
PREFIX hint: <http://aws.amazon.com/neptune/vocab/v01/QueryHints#> DESCRIBE ?s WHERE { hint:Query hint:describeMode "CBD" . ?s rdf:type <https://example.com/Person> }
describeIterationLimit
SPARQL 쿼리 힌트
hint:describeIterationLimit
SPARQL 쿼리 힌트는 CBD 및 DESCRIBE와 같은 반복 Word 알고리즘에 대해 수행할 최대 반복 확장 수에 대한 선택적 제약 조건을 제공합니다SCBD.
DESCRIBE 제한은 함께 ANDed입니다. 따라서 반복 제한과 문 제한이 모두 지정된 경우 DESCRIBE 쿼리가 차단되기 전에 두 제한이 모두 충족되어야 합니다.
이 값의 기본값은 5입니다. 이를 ZERO(0)로 설정하여 반복 확장 횟수에 대한 제한 없음을 지정할 수 있습니다.
describeStatementLimit
SPARQL 쿼리 힌트
hint:describeStatementLimit
SPARQL 쿼리 힌트는 DESCRIBE 쿼리 응답에 존재할 수 있는 최대 문 수에 대한 선택적 제약 조건을 제공합니다. Word 및 DESCRIBE와 같은 반복 CBD 알고리즘에만 적용됩니다SCBD.
DESCRIBE 제한은 함께 ANDed입니다. 따라서 반복 제한과 문 제한이 모두 지정된 경우 DESCRIBE 쿼리가 차단되기 전에 두 제한이 모두 충족되어야 합니다.
이 값의 기본값은 5,000입니다. WordZERO(0)로 설정하여 반환되는 문 수에 대한 제한을 지정하지 않을 수 있습니다.