Copyright © 2025-2026 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
이 문서는 SHACL 프로파일링을 정의합니다.
SHACL, 즉 Shapes Constraint Language는 RDF 그래프의 구조를 설명하기 위한 언어입니다. SHACL은 검증, 추론, 도메인 모델링, 다른 에이전트에 정보를 제공하기 위한 온톨로지 생성, 사용자 인터페이스 구축, 코드 생성, 데이터 통합과 같은 다양한 목적으로 사용될 수 있습니다.
SHACL 프로파일링은 SHACL의 프로파일과 SHACL을 사용한 프로파일링을 허용하기 위해 만들어진 SHACL Shapes Constraint Language의 요소를 정의합니다. 이 문서의 범위는 SHACL Shapes를 포함하는 그래프를 포함하여 RDF 그래프의 프로파일링으로 제한됩니다.
이 명세는 Data Shapes Working Group에서 발행했습니다.이 절은 이 문서가 발행된 시점의 상태를 설명합니다. 현재 W3C 발행물 목록과 이 기술 보고서의 최신 개정판은 W3C 표준 및 초안 색인에서 확인할 수 있습니다.
이 문서는 Data Shapes Working Group에서 Recommendation track을 사용하여 최초 공개 작업 초안으로 발행했습니다.
최초 공개 작업 초안으로의 발행은 W3C와 그 회원들의 승인을 의미하지 않습니다.
이 문서는 초안 문서이며 언제든지 다른 문서로 갱신, 대체 또는 폐기될 수 있습니다. 이 문서를 진행 중인 작업 이외의 것으로 인용하는 것은 적절하지 않습니다.
이 문서는 W3C Patent Policy에 따라 운영되는 그룹에 의해 작성되었습니다. W3C는 그룹의 산출물과 관련하여 이루어진 모든 특허 공개의 공개 목록을 유지하며, 해당 페이지에는 특허 공개를 위한 지침도 포함되어 있습니다. 개인이 Essential Claim(s)을 포함한다고 믿는 특허에 대해 실제로 알고 있는 경우, 그 개인은 W3C Patent Policy의 제6절에 따라 해당 정보를 공개해야 합니다.
이 문서는 2025년 8월 18일 W3C Process Document의 적용을 받습니다.
이 명세는 SHACL 1.2 명세군의 일부입니다. 이에 대한 더 자세한 소개는 SHACL 1.2 Overview를 참조하세요.
명세는 다음과 같습니다.
작업 초안:
워킹 그룹 노트 초안:
구현자는 SHACL 1.2 테스트 스위트의 테스트 케이스를 성공적으로 통과함으로써 위 명세들에 대한 자신의 적합성 수준을 부분적으로 확인할 수 있습니다. 그러나 테스트 스위트의 모든 테스트를 통과한다고 해서 해당 명세에 대한 완전한 적합성을 의미하지는 않습니다. 이는 구현이 테스트 스위트에서 테스트한 측면에 적합함을 의미할 뿐입니다.
소개에서는 프로파일링의 배경 개념을 제공하고 이 명세의 범위를 밝힙니다. 또한 용어 정의를 제공하고 문서 관례를 설명합니다.
2절에서는 관리를 위한 SHACL 패키징을 다룹니다.
3절과 4절에서는 패키징을 바탕으로 SHACL을 사용한 프로파일링의 두 가지 주요 방식을 다룹니다.
프로파일링은 어떤 것의 "프로파일"을 만드는 행위입니다.
일반적으로 영어에서 어떤 것의 "profile"은 다음과 같습니다.
물리적 객체나 특징의 윤곽, 또는 이에 대한 표현
- 옥스퍼드 영어 사전, 17세기 이후 "profile"이라는 단어의 용례
데이터의 세계에서는 위 내용과 일관되는 "profile"의 파생 정의가 다음과 같습니다.
요약 또는 추출
이 정의에서는 영어 단어의 핵심 의미가 유지됩니다. 데이터 객체의 요약 또는 데이터 객체로부터의 추출은 그것의 윤곽일 수 있기 때문입니다. 예를 들어 3D 공간 객체의 2D 표현, 또는 많은 부분을 가진 데이터셋의 통계적 요약이 이에 해당합니다.
경고: 소개에서 이 지점까지의 프로파일링 배경은 The Profiles Vocabulary의 갱신된 버전으로 상향 반영될 수 있습니다.
정의상 SHACL은 RDF 데이터를 제약합니다. 따라서 shapes graph에 따라 유효한 모든 데이터는 data graph의 프로파일이 됩니다. shapes graph가 data graph의 모든 요소를 검증한다면, 그 결과로 나온 유효한 데이터는 해당 data graph의 "null" 프로파일이 됩니다. 이는 원래 데이터 그래프와 동일하다는 뜻입니다.
The Profiles Vocabulary는 specification의 맥락에서 profile을 다음과 같이 정의합니다.
다른 명세의 사용에 대해 제약하거나, 확장하거나, 결합하거나, 지침 또는 설명을 제공하는 명세
shapes graph를 "specification"으로 본다면, shapes graph에 따라 유효한 데이터가 검증된 data graph의 프로파일일 뿐만 아니라, shapes graph 자체도 data graph에 사용된 데이터 모델의 프로파일로 기능합니다.
이 문서에서는 최적의 프로파일링을 위해 SHACL 정보를 패키징하는 방법을 설명하고, 각 SHACL 명세를 위해 만들어진 SHACL shapes의 패키징을 통해 이를 예시합니다.
위 절의 개념을 염두에 두고, 이 명세는 다음을 정의합니다.
이 명세 전반에서 사용되는 용어는 여기에서 정의되거나 여러 출처 중 하나에서 가져온 것입니다. 그 다른 출처는 다음과 같습니다.
다른 출처에서 가져온 용어는 본문에서 그 정의로 연결됩니다.
여기에서 정의하는 용어는 다음과 같습니다.
명세의 규칙 중 일부, 그리고 아마도 전부를 구현하지만 추가 규칙은 확실히 구현하지 않는 명세의 프로파일입니다.
null profile의 목적은 프로파일링 대상 명세가 실행 가능한 검증기와 같은 프로파일링 산출물을 제공하지 않을 때 이를 제공하는 것입니다.
SHACL 명세 중 하나에서 정의된 RDF/OWL 클래스 또는 속성입니다.
경고: null profile의 정의는 The Profiles Vocabulary의 갱신된 버전으로 상향 반영될 수 있습니다. 이슈 dx-prof/56을 참조하세요.
이 명세에서 사용되는 모든 정의된 용어는 색인에 나열되어 있습니다.
이 명세에서는 다음 namespace prefix 정의가 사용됩니다.
| Prefix | Namespace |
|---|---|
dcterms: |
http://purl.org/dc/terms/ |
ex: |
http://example.com/ns# |
owl: |
http://www.w3.org/2002/07/owl# |
prof: |
http://www.w3.org/ns/dx/prof/ |
rdfs: |
http://www.w3.org/2000/01/rdf-schema# |
role: |
http://www.w3.org/ns/dx/prof/role/ |
sh: |
http://www.w3.org/ns/shacl# |
shpr: |
http://www.w3.org/ns/shpr# |
이 명세에서는 다음 JSON-LD context가 사용됩니다.
{
"@context": {
"dcterms": "http://purl.org/dc/terms/",
"ex": "http://example.com/ns#",
"owl": "http://www.w3.org/2002/07/owl#",
"prof": "http://www.w3.org/ns/dx/prof/" ,
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"role": "http://www.w3.org/ns/dx/prof/role/" ,
"sh": "http://www.w3.org/ns/shacl#",
"shpr": "http://www.w3.org/ns/shpr#"
}
}
SHACL vocabulary 자체를 정의하는 그래프의 URI는 위의
namespace와 동일하며, 즉 #를 포함한다는 점에 유의하세요.
예를 들어 owl:imports를 통한 SHACL vocabulary에 대한 참조는
#를 포함해야 합니다.
명세 전반에 걸쳐 Turtle 및 JSON-LD의 RDF 그래프를 담은 색상으로 구분된 상자가 나타납니다. 상자의 색상과 제목은 그것이 shapes graph인지, data graph인지, 또는 그 밖의 것인지를 나타냅니다. Turtle 명세 조각은 위에 제시된 prefix binding을 사용합니다. Turtle 명세에만 일부가 강조 표시됩니다.
그림 내 관례는 다음 범례로 설명됩니다.
비규범으로 표시된 절뿐만 아니라 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고는 비규범입니다. 이 명세의 그 밖의 모든 내용은 규범입니다.
이 문서의 핵심어 MAY, MUST, MUST NOT, RECOMMENDED, SHOULD, 및 SHOULD NOT은 여기 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 합니다.
이 문서는 프로파일링 목적을 위해 SHACL Core 명세 [shacl12-core]의 데이터 모델에 대한 확장을 정의합니다.
비규범으로 표시된 절뿐만 아니라 이 명세의 모든 작성 지침, 다이어그램, 예제 및 참고는 비규범입니다. 이 명세의 그 밖의 모든 내용은 규범입니다.
여기에 명시된 구문 규칙은 영어로 제공되며 핵심어 MAY, MUST, MUST NOT, RECOMMENDED, SHOULD, 및 SHOULD NOT를 사용합니다. 이러한 핵심어는 여기 표시된 것처럼 모두 대문자로 나타나는 경우에만 BCP 14 [RFC2119] [RFC8174]에 설명된 대로 해석되어야 합니다.
이 명세의 규칙에 대한 데이터의 적합성 주장은 SHACL Overview 명세 [shacl12-overview]의 SHACL-SHACL Annex에 있는 SHACL-SHACL Profiling 검증기를 사용한 검증으로 테스트할 수 있습니다.
SHACL의 패키징은 SHACL 요소를 컨테이너 객체와의 관계 속에서 제시하는 것입니다.
SHACL 요소의 그룹을 식별하고 그룹과 개별 SHACL 요소 사이의 관계를 알고자 하는 데에는 여러 이유가 있습니다. 이러한 이유에는 그룹의 목적, 한 그룹의 변경이 다른 그룹에 미치는 영향, 그리고 새 그룹을 만드는 방법을 이해하려는 것이 포함됩니다. 이를 위해 세 가지 유스 케이스가 명시되었습니다.
위에 표시된 유스 케이스에 대한 해결책은 sh:ShapesGraph의 인스턴스를 사용하여 SHACL 요소를 그룹화하는 것과 같은
잘 정립된 관행을 바탕으로 다음 권고 사항으로 이어집니다.
sh:ShapesGraph의 인스턴스는
SHACL 요소의 인스턴스를 그룹화하는 데
사용되어야 합니다(SHOULD)sh:ShapesGraph의 인스턴스를
rdfs:isDefinedBy 술어로 표시해야 합니다(SHOULD)sh:ShapesGraph의 인스턴스는
rdfs:member 술어로 해당 SHACL 요소를 멤버로
표시해야 합니다(SHOULD)sh:ShapesGraph의 인스턴스는
sh:ShapesGraph의 인스턴스를 사용하여 식별된 다른 SHACL 요소 그룹에 대한 의존성을
owl:imports 술어로 표시해야 합니다(SHOULD)다음 하위 절에서는 이러한 각 권고 사항을 자세히 설명합니다.
sh:ShapesGraph의 인스턴스는
SHACL 요소의 인스턴스를 그룹화하는 데 사용되어야 합니다(SHOULD).
SHACL 요소는 다른 많은 RDF 정의 데이터와 마찬가지로
흔히 OWL 2 Web Ontology Language RDF-Based
Semantics (Second Edition)의
owl:Ontology 클래스 인스턴스 안에 그룹화되어 왔습니다.
예를 들어, Open Geospatial Consortium의
공간 RDF 데이터를 위한 GeoSPARQL 1.1 표준은
Turtle 파일 안에 27개의 sh:NodeShape 인스턴스와 비슷한 수의
sh:PropertyShape 인스턴스를 포함하는
SHACL 검증기를 제공합니다.
이 파일에는 검증 리소스의 수정일, 사용 라이선스 등과 같은 메타데이터를 제시하는
owl:Ontology의 인스턴스도 포함됩니다.
이 권고 사항은 그러한 관행을 대체하며,
owl:Ontology의 특수화된 하위 클래스인 sh:ShapesGraph를 사용하여
SHACL 요소를 그룹화할 것을 권고합니다.
이는 모호한 그룹화 객체를 피하기 위한 것입니다.
SHACL 요소의 인스턴스는
이를 정의하는 sh:ShapesGraph의 인스턴스를 rdfs:isDefinedBy
술어로 표시해야 합니다(SHOULD).
sh:ShapesGraph 인스턴스를 사용하여 식별되는 그룹에
SHACL 요소를 넣을 때의 일반적인 관행은
단순히 요소와 온톨로지 인스턴스를 RDF 파일 안에 포함하는 것이었습니다.
이는 데이터 교환에는 합리적이지만, 교환된 파일이 RDF 데이터베이스에 저장될 때
sh:ShapesGraph 인스턴스와 그 안에 정의된
SHACL 요소 사이의 연관이 사라질 수 있습니다.
named graph로 로드되는 경우,
온톨로지와 SHACL 요소를 그룹화하는 named graph를 통해
연관이 유지될 수도 있지만, 이는 비의미론적 연관, 즉 그래프에서 직접 보이지 않는 연관입니다.
이 권고 사항은 SHACL 요소의 작성자가 해당 SHACL 요소가 정의된 그룹을 표시해야 한다고 제안합니다(SHOULD). RDF에서 이러한 주장의 예는 다음과 같습니다.
SHACL 1.2 Core의 2.5 Syntactic Variations of Shapes and Classes 절에서는 property shapes를 blank nodes로 선언할 수 있지만, 그래프 간 더 나은 재사용을 가능하게 하므로 이를 IRIs로 선언하는 것이 바람직하다는 경고가 제시됩니다. 이 절에 따른 shapes에 관한 정보를 포함하는 경우, IRIs를 사용해야 합니다(SHOULD).
SHACL 요소를 사용하지만
이를 정의하지 않는 sh:ShapesGraph의 인스턴스는
rdfs:member 술어로 해당 SHACL 요소를
멤버로 표시해야 합니다(SHOULD)
SHACL 요소가 요소 그룹 안에서 사용되지만 그 그룹에 의해 정의되지 않는 경우, 해당 그룹에 의해 정의된 것으로 표시해서는 안 되므로(SHOULD NOT) 위 절의 권고 사항은 관련이 없습니다. Linked Data 원칙 [LDP]에 따라, 이를 정의하지 않는 그룹 안에서 SHACL 요소를 재사용하는 것은 예상되고 권장됩니다.
SHACL 요소가 이를 정의하지 않는 그룹에 포함됨을 나타내기 위해
rdfs:member 술어를 사용하는 예와, 위 예에서처럼 rdfs:isDefinedBy를
사용하는 예는 다음과 같습니다.
SHACL 요소를 그룹화하는 데
사용되는 sh:ShapesGraph의 인스턴스는
sh:ShapesGraph의 인스턴스를 사용하여 식별된 다른 SHACL 요소 그룹에 대한
의존성을 owl:imports 술어로 표시해야 합니다(SHOULD).
SHACL 검증 도구에서는 RDF 데이터를 포함하는 파일과 같은 한 컬렉션에서
다른 컬렉션으로 owl:imports 지시를 통해
SHACL 요소를 가져오는 것이 확립된 관행입니다.
pySHACL [PYSH]과 같은 많은 SHACL
검증 엔진이 이를 수행하며, 이 관행은 특정 검증 엔진의 동작이 해당 주장으로부터
발생할 것으로 기대되지 않더라도 한 컬렉션/그룹에서 다른 컬렉션/그룹으로의
의존성을 나타내는 데 권장됩니다. 이는 SHACL 데이터 관리에도 유용한 정보가 될 가능성이 높습니다.
owl:imports의 예는 아래 예와 같습니다.
위 네 가지 권고 사항의 사용으로부터 의존성 함의를 도출할 수 있으며, 이는 동기 절에 표시된 세 가지 유스 케이스에 답하는 데 사용할 수 있습니다.
TODO
data
graph에 대해
shapes
graph가 수행한 검증 작업의 결과를 RDF에 영속화해야 할 수 있습니다. 그렇다면
data graph DG는 술어
shpr:conformsTo를 사용하여 shapes graph SG에 적합한 것으로
표시될 수 있습니다(MAY). 이 상황에서 DG는
sh:DataGraph의 인스턴스로, SG는 sh:ShapesGraph의 인스턴스로 추론됩니다.
이 절에서는 SHACL 1.2의 기존 프로파일이 어떻게 만들어지는지 설명하고, 몇 가지 예를 제시하며, 더 많은 SHACL 프로파일을 만드는 방법을 나타냅니다.
이 명세의 발행 시점에 알려진 SHACL 프로파일 목록과 커뮤니티에서 관리하는 프로파일에 대한 링크는 부속서 A를 참조하세요.
SHACL의 프로파일은 The Profiles Vocabulary를 사용하여 선언해야 합니다. SHACL 1.2의 Core 프로파일 선언은 다음과 같습니다.
이 선언은 Core 프로파일을 IRI
<http://www.w3.org/ns/shacl/profile/core>로 식별하고,
그것이 prof:Profile의 인스턴스이며, 2015년의 원래 SHACL 발행물의 프로파일이고,
두 개의 프로파일 리소스, 즉 명세와 검증기를 가진다는 것을 나타냅니다.
The Profiles Vocabulary의 용어를 사용해 설명하면, 위에 링크된 각 명세의 온라인 문서 형태는 SHACL 1.2의 프로파일을 함께 구성하는 많은 리소스 중 하나일 뿐입니다. 이 문서는 Specification — "사람이 읽을 수 있는 형식으로 프로파일을 정의" — 의 리소스 역할을 수행하며, 다른 리소스들은 다른 역할을 수행합니다. SHACL 사용자에게 특히 관심 있는 것은 각 프로파일의 SHACL shapes graph로, 이는 Validation — "데이터가 프로파일에 적합한지 검증하는 방법에 대한 지침 제공" — 의 역할을 수행합니다. SHACL 1.2의 다양한 프로파일은 다른 프로파일 리소스 역할을 가진 추가 리소스를 제공할 수 있습니다.
shapes graph 검증 리소스는 SHACL 1.2 Overview의 SHACL-SHACL 부록에 제공됩니다.
이러한 Specification Profiles 또는 아래에 정의된 Union Profile 중 하나에 대해 RDF 데이터를 검증하려면 SHACL 1.2 Overview의 SHACL-SHACL 부록에 나열된 SHACL-SHACL shapes graphs를 사용하세요.
SHACL 패키징을 사용하여 프로파일에서 지원할 SHACL 요소를 선택하는 방법을 설명합니다.
이 명세의 발행 시점에는 위에 나열된 명세 각각에 대한 SHACL 1.2 프로파일이 알려져 있습니다. 또한 모든 명세 프로파일을 결합한 union profile도 알려져 있습니다.
계산 노력으로 정의된 SHACL 프로파일과 SHACL UI 구현 노력으로 정의된 SHACL 프로파일도 알려져 있습니다.
이러한 알려진 프로파일은 부록 A에 나열되어 있으며, 향후 SHACL 프로파일은 W3C SHACL 커뮤니티가 관리하는 저장소 https://github.com/w3c/shacl-resources에 나열될 예정입니다.
다음은 콘텐츠의 범위를 정하기 위해 서로 다른 논리를 사용하는 SHACL의 다른 프로파일입니다.
SHACL Profiling 명세에서 Packaging SHACL 및 Profiles of SHACL 메커니즘을 보여주기 위해 계산으로 정의된 SHACL 프로파일을 표시합니다.
SHACL 1.2의 추가 프로파일은 어떤 기준으로든 만들 수 있습니다. 예를 들어, OWL 2 Web Ontology Language Profiles (Second Edition)의 프로파일과 매우 비슷하게, 특정 계산 복잡도로 제한된 shape types만 구현하는 SHACL 1.2 Core의 프로파일을 갖는 것이 바람직할 수 있습니다. 이 경우, 위의 SHACL 패키징 절에 제시된 메커니즘을 사용하여 SHACL 1.2 Core 요소 중 일부만 포함하는 프로파일 정의를 만들 수 있습니다.
SHACL 1.2의 프로파일을 만들 때에는, 현재 알려진 SHACL 1.2의 프로파일 — Specification Profiles 및 Union Profile — 에 따라 프로파일을 식별하고 제시하는 것이 중요합니다. 그래야 다른 사람을 포함하여 효과적으로 사용할 수 있습니다. SHACL 1.2 프로파일의 작성자는 다음을 해야 합니다(SHOULD).
이 절에서는 SHACL을 사용하여 다양한 종류의 것들에 대한 프로파일을 만드는 방법을 설명합니다.
The Profiles Vocabulary의 일반 프로파일링 용어와 요소가, 5. SHACL Profiling Vocabulary에 정의된 더 특수한 SHACL 프로파일링 요소와 함께 사용됩니다.
The Profiles Vocabulary와 맞추어, 우리는 Specification이라는 용어를 Standard라는 용어와 동의어로 봅니다.
SHACL은 데이터가 알려진 Specification과 일치하는지 테스트하는 데 자주 사용됩니다. 그러한 테스트에 사용되는 SHACL이 해당 명세의 규칙 이외의 어떤 규칙도 구현하지 않는다면, SHACL shapes graph는 그 명세의 null profile을 만듭니다.
Shapes Graph가 명세에 있는 규칙보다 더 많거나 다른 규칙을 구현한다면, 이는 그 명세의 (non-null) profile을 테스트하는 것입니다.
Shapes Graph SG1이 specification S1을 프로파일링하고 있다면,
The Profiles
Vocabulary의 특성화에 따라
다음과 같습니다.
그러나 SG1은 Validation의 역할도
수행하므로,
이 상황에 대한 더 완전한 The
Profiles Vocabulary 특성화는
다음과 같습니다.
이는 The Profiles Vocabulary의 예상치 못한 사용입니다. 여기서는 프로파일이, 하나의 프로파일 리소스가 모든 역할을 수행하는 대신, 보통 프로파일의 일부 또는 그 리소스 중 하나가 수행하는 역할도 수행하고 있습니다. 그러나 이는 정당하며, 공통 프로파일링 리소스 역할인 검증을 수행하는 리소스를 개념적 프로파일이 나타낼 수 있게 하려는 PROF의 목표를 여전히 달성합니다.
프로파일 리소스가 SHACL 1.2 Core를 사용하며 Turtle로 제공됨을 나타내려면, 다음도 특성화에 추가할 수 있습니다.
SG1이 프로파일의 요구 사항에 대한 규범적 표현으로도 간주되는 경우,
예를 들어 그 요구 사항을 담은 별도의 자연어 문서와 대비된다면,
prof:hasRole 값 role:constraints도 해당 리소스에 적용될 수 있습니다.
프로파일에 대한 별도의 자연어 문서가 없다면,
prof:hasRole 값
role:specification도 해당 리소스에 적용될 수 있습니다. 그러나 이는 최적은 아닙니다.
role:specification은 "[사람이 읽을 수 있는 형식으로] 프로파일을 정의"한다고 명시되어 있으며,
SHACL이 사람이 읽을 수 있기는 하지만 자연어 산문이 기대되기 때문입니다.
이 추론은 어떤 유스 케이스를 다룹니까?
2.8 유효성 표시에 따라,
data
graph의 유효성을
술어 sh:conformsTo로
shapes graph에 따라 표시할 수 있습니다.
이 술어는 The Profiles
Vocabulary에서 사용되는
[DCTERMS] 술어
dcterms:conformsTo의 하위 속성입니다.
그림
2에 따라, 검증을 통해 Data Graph가 Shapes Graph에 적합한지 테스트한 후
<DG1> sh:conformsTo <SG1>가 주장되었다면,
우리는 다음을 추론할 수 있습니다.
The
Profiles Vocabulary의 공리
dcterms:conformsTo owl:propertyChainAxiom ( dcterms:conformsTo prof:isProfileOf )를 따르면,
다음이 주어졌을 때
그리고
다음을 결론지을 수 있습니다.
이 추론은 데이터가 명세의 프로파일 및 명세 자체에 적합하다는 정적 적합성 주장을 가능하게 하며, 이러한 것들에 대한 적합성을 알아야 하지만 지속적으로 검증할 수 없는 데이터에 유용합니다.
위의 명세 프로파일링과 중복되어 절 내용이 제거되었습니다.
SHACL은 RDF 데이터에 대한 제약과 추론 규칙을 구현할 수 있는 언어입니다. 이 두 가지는 프로파일 설계자가 하고자 할 수 있는 일의 전체가 아닙니다. 예를 들어, 프로파일이 왜 그리고 어떻게 만들어졌는지에 대한 문서를 포함하거나, 확장된 스키마 안에 새로운 모델 요소(클래스, 술어 등)를 제공하고 싶을 수 있습니다.
SHACL은 가능한 모든 프로파일 부분에 사용할 수 없으므로, 프로파일 설계자는 프로파일의 전체 부분 집합과 이들 간의 관계를 설정하는 방법에 대한 지침을 위해 SHACL 명세군 밖의 명세를 살펴볼 필요가 있습니다. 이를 위해 The Profiles Vocabulary가 사용될 것으로 예상됩니다.
The Profiles Vocabulary의 Resource Role Instances 어휘를 참조하면, SHACL 그래프가 프로파일 안에서 Validation 역할을 수행할 수 있으며, SHACL이 OWL이 Classes와 Properties를 선언하는 것과 마찬가지로 Node 및 Property Shapes를 선언할 수 있으므로 어쩌면 Specification 역할도 수행할 수 있음이 분명해 보입니다.
SHACL shapes는 자연스럽게 모델과 데이터를 제약하므로, 프로파일이 어떤 것 — 표준 또는 다른 프로파일 — 을 어떻게 제약하는지를 나타내는 데 사용된다면 Constraints의 역할을 수행할 수 있습니다.
SHACL Rules가 한 모델에서 다른 모델로 데이터를 변환하도록 구현되는 경우, SHACL shapes는 Mapping 역할도 수행할 수 있습니다.
프로파일 계층 구조는 하나의 프로파일이 다른 프로파일의 특수화가 되어,
더 구체적인 프로파일이 더 넓은 프로파일로부터 제약을 상속하는 체인을 형성하는 배열입니다.
The Profiles
Vocabulary의 규칙에 따라,
C가 B의 프로파일이고 B가 A의 프로파일이라면,
C에 적합하려는 데이터는 B와 A에도 적합한 경우에만
유효할 수 있습니다.
프로파일에 대한 데이터의 적합성을 확인한다는 것은 Validation 역할을 가진 프로파일 리소스로 데이터를 테스트한다는 뜻입니다.
미완성
SHACL을 사용하여 만들어진 명세의 null profile은, SHACL을 사용하여 해당 명세의 규칙 중 일부, 그리고 아마도 전부를 구현하지만 SHACL에서 그 밖의 어떤 규칙도 구현하지 않는 그 명세의 프로파일입니다.
SHACL을 사용하여 명세의 null profile을 만드는 주된 목적은 SHACL 검증을 통해 해당 명세에 대한 적합성 테스트를 가능하게 하는 것입니다. 이러한 목적이 존재하는 이유는 많은 RDF 데이터 모델이 모델 명세, 예를 들어 OWL 모델 또는 모델에 관한 자연어 문서만을 가지고 있지만, SHACL 검증기와 같은 데이터 검증 메커니즘을 제공하지 않기 때문입니다. 이러한 모델의 예로는 Data Catalog Vocabulary (DCAT) - Version 3, Schema.org, The RDF Data Cube Vocabulary, 그리고 많은 W3C 표준이 있습니다.
명세의 null profile은 SHACL 이외의 메커니즘을 사용하여 만들 수도 있지만, 여기서는 SHACL의 사용에만 초점을 맞춥니다.
null profile로 작동하는 RDF 데이터용 비-SHACL 검증기의 예는 W3C의 Constraints of the PROV Data Model입니다. 이는 PROV-O: The PROV Ontology에 따라 공식화된 provenance 데이터에 적용되는 제약 목록을 제공합니다. Constraints of the PROV Data Model은 PROV-O: The PROV Ontology 및 개념적 PROV-DM: The PROV Data Model에 명시되거나 암시된 제약 외에는 어떤 제약도 구현하지 않습니다. 그러나 시간적 엔티티의 순서 지정과 같이 모델이 명시적으로 모델링하지는 않지만 올바른 사용에 필요한 사항에 대한 테스트는 포함합니다. 이러한 제약의 구현은 SPARQL 질의를 실행하는 Python 스크립트로 만들어졌으며, 이를 통해 RDF 데이터 검증이 가능합니다.
명세의 null profile을 만드는 데 보편적이고 정밀한 방법론을 제시할 수는 없습니다. 그 작업의 본질상 명세의 규칙이 부정확하게 정의되어 있을 수 있으며, 따라서 이를 정밀한 SHACL로 특성화하는 데 사용되는 방법도 부정확한 규칙 정의가 달라지는 것과 마찬가지로 달라질 것이기 때문입니다.
다른 명세의 null profile 예는 B. Null Profile Examples를 참조하세요.
이 어휘의 모든 요소는 SHACL Core 어휘의 멤버이며, 해당 어휘는
namespace 위치인 http://www.w3.org/ns/shacl#에서 RDF 직렬화를
사용할 수 있습니다.
| RDF 클래스: | sh:ShapesGraph |
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 하위 클래스: | owl:Ontology |
| 정의: | shapes graph는 0개 이상의 shapes를 포함하는 RDF 그래프로, data graph가 해당 shapes에 대해 검증될 수 있도록 SHACL 검증 프로세스에 전달됩니다. |
| 함께 보기: | SHACL 1.2 Core: Shapes Graph |
| 범위 참고: | SHACL 프로파일링의 목적상, 이 클래스는 SHACL 요소를 함께 그룹화하는 데 사용됩니다. 이는 2.3 SHACL 요소 그룹 식별 절에 따른 것입니다. |
| RDF 속성: | owl:imports |
|---|---|
| 정의 주체: | OWL Web Ontology Language Reference |
| 정의: | 주어진 온톨로지로 다른 온톨로지를 가져오는 데 사용되는 속성입니다. |
| 도메인: | owl:Ontology |
| 범위: | owl:Ontology |
| 함께 보기: | OWL Web Ontology Language Reference: importing an ontology |
| 범위 참고: | SHACL 프로파일링의 목적상, 이 술어는 Shapes Graphs 사이의 의존성을 나타내는 데 사용됩니다. 이는 2.6 그룹 의존성 표시 절에 따른 것입니다. |
| RDF 속성: | rdfs:member |
|---|---|
| 정의 주체: | RDF 1.2 Schema |
| 정의: | 주어 리소스의 멤버입니다. |
| 도메인: | Resource |
| 범위: | Resource |
| 함께 보기: | RDF 1.2 Schema: member |
| 범위 참고: | SHACL 프로파일링의 목적상, 이 술어는 Shapes Graph를 그것이 사용하는 각 Shape와 연결하는 데 사용됩니다. 해당 Shape가 그 Shapes Graph에 의해 정의되었는지 다른 곳에서 정의되었는지와는 무관합니다. 이는 2.5 요소 사용 표시 절에 따른 것입니다. |
| RDF 클래스: | sh:DataGraph |
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 정의: | 모든 RDF 그래프는 data graph가 될 수 있습니다. |
| 사용 참고: |
적합성 주장을 하려는 RDF 그래프를 나타내려면 이 클래스를 사용하세요.
예를 들어 GeoSPARQL 1.1
표준의 Shapes
Graph(http://www.opengis.net/def/geosparql/validator)에
따라
적합성을 테스트할 때 RDF 데이터의 기록 그래프를 Data Graphs로 기록합니다.
|
| 함께 보기: | SHACL 1.2 Core: Data Graph |
| 범위 참고: | SHACL 프로파일링의 목적상, 이 클래스는 SHACL 관련 주장이 이루어질 RDF 데이터를 나타내는 데 사용됩니다. |
| RDF 속성: | sh:conformsTo |
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 하위 속성: | dcterms:conformsTo
|
| 정의: | 검증이 허용되지 않는 심각도 수준 집합에 해당하는 검증 결과를 생성하지 않았다면, 주어는 목적어에 적합합니다. |
| 도메인: | Data Graph |
| 범위: | Shapes Graph |
| RDF 속성: | sh:validationReport
|
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 정의: | 주어에 대해 존재하는 Validation Report입니다. |
| 도메인: | Data Graph |
| 범위: | Validation Report |
| RDF 클래스: | sh:ValidationReport
|
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 정의: | validation report는 Shapes Graph에 대한 Data Graph의 적합성과 모든 검증 결과 집합을 보고하는 검증 프로세스의 결과입니다. |
| 함께 보기: | SHACL 1.2 Core: Validation Report |
| RDF 속성: | sh:usedShapesGraph
|
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 정의: | 주어 Validation Report는 목적어 Shapes Graph를 사용하여 생성되었습니다. |
| 도메인: | Validation Report |
| 사용 참고: | version IRI of a Shapes Graph도 이 속성의 목적어로 사용될 수 있습니다. |
| 범위: | Shapes Graph |
| RDF 속성: | sh:conforms |
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 정의: | Validation Report가 설명하는 적합성 검사 결과를 나타냅니다. |
| 도메인: | Validation Report |
| 범위: | boolean |
| 함께 보기: | SHACL 1.2 Core: conforms |
| RDF 클래스: | sh:Shape |
|---|---|
| 정의 주체: | SHACL 1.2 Core |
| 정의: | shape는 특정 노드를 대상으로 지정될 수 있는 제약의 모음입니다. |
| 함께 보기: | SHACL 1.2 Core: Shape |
| RDF 속성: | rdfs:isDefinedBy
|
|---|---|
| 정의 주체: | RDF 1.2 Schema |
| 정의: | 주어는 테스트된 Data Graph의 유효성을 결정할 때 목적어를 사용했습니다. |
| 도메인: | Validation Report |
| 범위: | Shapes Graph |
| 함께 보기: | RDF 1.2 Schema: isDefinedBy |
'conforms to' 규칙은 Data Graph와 연결된 Validation Report가 있고,
그 보고서가 Shapes Graph가 검증에 사용되었음을 나타내며
sh:conforms 속성이 true를 나타내는 경우,
Data Graph가 Shapes Graph에 적합한 것으로 표시될 수 있게 하는
추론 규칙입니다.
이 추론 규칙은 sh:conforms 속성값에 대한 테스트 때문에
OWL property chain axiom으로 표현할 수 없으므로, 여기서는
SPARQL
1.2
Query Language 규칙과 SHACL 1.2 Rules 규칙으로 모두 제시합니다.
이 부록은 이 명세의 발행 시점에 알려진 SHACL 1.2 프로파일을 SHACL의 프로파일링 절에 따라 공식화하여 나열합니다. 또한 이 문서가 최종화된 뒤 추가될 수 있는 SHACL 프로파일의 비공식 등록부를 W3C의 SHACL 커뮤니티가 어디에서 관리하는지도 나타냅니다.
7개 Specification Profiles 각각의 RDF 정의는 여기에서 사용할 수 있습니다.
Union Profile 정의도 RDF로 사용할 수 있습니다.
SHACL 1.2의 Union Profile은 SHACL 1.2 명세 시리즈의 모든 측면을 포괄하는 SHACL 1.2의 개념적 전체입니다. 사람이 읽을 수 있는 단일 Union Profile 명세 문서는 없습니다. 명세 절에서 링크된 모든 문서를 개별적으로 읽어야 합니다. 그러나 단일 검증 리소스는 있습니다. 그것은 모든 개별 프로파일의 검증 shapes graph들로 구성된 shapes graph입니다.
Union Profile shapes graph는 SHACL 1.2 Overview의 SHACL-SHACL 부록에 제공됩니다.
SHACL 1.2 UI profile of SHACL은 SHACL 1.2 UI 명세를 위해 구현된 사용자 인터페이스 컴포넌트로서의 구현 용이성을 기준으로 선택된 SHACL Core 어휘 요소의 하위 집합입니다.
TODO
SHACL의 CD1("Computationally-Defined #1") 프로파일은 계산상 단순성을 기준으로 선택된 SHACL Core, SPARQL 및 Node Expressions 어휘 요소의 하위 집합입니다.
이 CD1 프로파일을 정의하는 이유는 두 가지입니다.
이 프로파일은 리소스 http://www.w3.org/ns/shacl/profile/cd1에서 정의되며, 그 일부는 다음과 같습니다.
위에서 ... many skipped members로 표시된 곳에는 다음을 제외한
SHACL 1.2의 모든 클래스와 속성 요소가 나열되어 있습니다.
blah:BlahBlahblah:OtherBlahTODO
SHACL의 Pretty Print profile은 검증 프로세스에서 "pretty"한, 즉 읽기 쉬운 오류 메시지가 생성되도록 선택된 SHACL 어휘 요소의 하위 집합입니다.
SHACL의 Owl Consistent profile은 shapes 정의가 대상 클래스와 술어에 대한 OWL 제약을 위반하지 않도록 선택된 SHACL 어휘 요소의 하위 집합입니다.
이 절은 비규범입니다.
이 부록은 다른 명세의 null profiles 예제를 포함합니다.
이 프로파일은 Basic Geo (WGS84 lat/long) Vocabulary의 null profile입니다. 이 프로파일의 목적은 매우 단순한 RDF 어휘의 null profile이 어떤 모습인지 보여주는 것입니다.
TODO - repo의 pos.ttl 파일 참조
이 프로파일은 The Profiles Vocabulary의 null profile입니다.
이 프로파일의 목적은 PROF 데이터용 SHACL 기반 검증기를 제공하는 것과, 약간 더 복잡한 어휘의 null profile이 어떤 모습인지 보여주는 것입니다.
이 null profile은 PROF의 모든 OWL 규칙뿐 아니라 PROF 명세에 명시되어 있지만 PROF 온톨로지에는 구현되어 있지 않은 일부 규칙도 구현합니다.
TODO
이 절은 비규범입니다.
대부분의 RDF 기반 기술과 마찬가지로, SHACL 프로세서는 다양한 출처에서 조립된 그래프에 대해
동작할 수 있습니다. 일부 애플리케이션은 열린 "linked data"("LD") 아키텍처를 가지며
조직의 신뢰 네트워크 밖에 있는 출처에서 RDF triples를 동적으로 조립할 수 있습니다.
RDF는 누구나 어떤 리소스에 대해서도 문장을 추가할 수 있도록 하므로,
triples는 shape 정의 또는 data
graph 내 노드의 원래 의도된 의미를 수정하여
오해의 소지가 있는 결과로 이어질 수 있습니다.
이에 대한 보호(및 다음 시나리오에 대한 보호)는 신뢰할 수 있고 검증된 RDF 출처만 사용하고,
owl:imports 및 sh:shapesGraph를 통해 그래프가 동적으로 추가될 가능성을
제거함으로써 달성할 수 있습니다.
다른 명세의 프로파일을 만들 때, 프로파일 작성자는 자신의 제약이 해당 명세의 규칙을 위반하지 않도록 해야 합니다. 만약 어떤 제약이 이를 위반하고, 우연히 또는 설계상 데이터 유효성 검사를 위해 명세의 규칙이 아니라 프로파일의 규칙만 사용된다면, 데이터가 잘못 유효한 것으로 계산될 수 있습니다. 이는 우발적인 데이터 공개 또는 사용으로 이어져 잠재적으로 보안 문제를 일으킬 수 있습니다.
이 절은 비규범입니다.
RDF Data Shapes Working Group의 멤버를 포함하여 많은 사람들이 이 명세에 기여했습니다.
TODO
Referenced in:
Referenced in:
Referenced in:
Referenced in: