DESCRIBE와 함께 사용되는 SPARQL 쿼리 힌트 - Amazon Neptune

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

DESCRIBE와 함께 사용되는 SPARQL 쿼리 힌트

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 쿼리는 입력 데이터 세트와 비교하여 매번 ID가 다른 빈 노드가 있는 트리플을 반환할 수 있습니다(예: _: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는 다음과 같이 계산됩니다.

  1. 문의 주제가 시작 노드인 소스 그래프의 모든 문을 하위 그래프에 포함하세요.

  2. 재귀적으로, 지금까지 빈 노드 객체가 있는 하위 그래프의 모든 문에 대해서는 문의 주제가 빈 노드이고 아직 하위 그래프에 포함되지 않은 소스 그래프의 모든 문을 하위 그래프에 포함합니다.

  3. 재귀적으로, 지금까지 하위 그래프에 포함된 모든 문의 경우 소스 그래프에 있는 이러한 문의 모든 구체화에는 각 구체화의 rdf:Statement 노드에서 시작하는 CBD가 포함됩니다.

그러면 객체 노드가 IRI 참조 또는 리터럴이거나 빈 노드가 그래프에서 문의 주제로 사용되지 않는 하위 그래프가 생성됩니다. 단, 단일 SPARQL SELECT 또는 CONSTRUCT 쿼리로는 CBD를 계산할 수 없습니다.

간결한 대칭적 경계 설명(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 .

ForwardOneStepSymmetricOneStep 모드에 비해 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 및 SCBD와 같은 반복적 DESCRIBE 알고리즘에 대해 수행할 최대 반복 확장 횟수에 대한 선택적 제약 조건을 제공합니다.

DESCRIBE 제한은 AND로 연결됩니다. 따라서 반복 제한과 문 제한을 둘 다 지정하는 경우 DESCRIBE 쿼리를 끊기 전에 두 제한을 모두 충족해야 합니다.

이 값의 기본값은 5입니다. 이 값을 0으로 설정하여 반복 확장 횟수에 제한을 두지 않도록 지정할 수 있습니다.

describeStatementLimit SPARQL 쿼리 힌트

hint:describeStatementLimit SPARQL 쿼리 힌트는 DESCRIBE 쿼리 응답에 존재할 수 있는 최대 문 수에 대한 선택적 제약 조건을 제공합니다. CBD 및 SCBD와 같은 반복적인 DESCRIBE 알고리즘에만 적용됩니다.

DESCRIBE 제한은 AND로 연결됩니다. 따라서 반복 제한과 문 제한을 둘 다 지정하는 경우 DESCRIBE 쿼리를 끊기 전에 두 제한을 모두 충족해야 합니다.

이 값의 기본값은 5,000입니다. 반환되는 문 수에 제한을 두지 않도록 지정하려면 이 값을 0으로 설정하면 됩니다.