🏆50분
SHACL 검증 규칙 설계 챌린지
SHACL 데이터 검증 & 오픈 온톨로지
SHACL 검증 규칙 설계 챌린지
온톨로지 & 시맨틱웹 > SHACL 데이터 검증 & 오픈 온톨로지
학습 목표
실전 수준의 SHACL Shape을 독립적으로 설계 오픈 온톨로지를 조합하여 도메인 검증 규칙 구현 pySHACL로 검증을 자동화하고 결과를 분석
SHACL 검증 규칙 설계 챌린지
도전 목표
오늘 배운 SHACL 기초와 오픈 온톨로지 지식을 종합하여, 실전 수준의 SHACL Shape을 설계하고 검증하는 프로젝트입니다.
시나리오: 온라인 서점 데이터 검증
당신은 온라인 서점의 데이터 엔지니어입니다. 다양한 출처에서 수집한 도서/저자/리뷰 데이터의 품질을 SHACL로 보장해야 합니다.
요구사항
Part 1: Shape 설계 (30분)
오픈 온톨로지(Schema.org + Dublin Core)를 활용하여 3개 NodeShape을 설계하세요.
1) BookShape (도서 검증)
dc:title: 필수, 문자열, 1개, 최소 1글자dc:creator: 필수, 최소 1명, schema:Person 클래스schema:isbn: 필수, 1개, 정규식^(978|979)[0-9]{10}$schema:price: 숫자, 0 초과dc:date: 연도, 1900~2030 범위dc:language:sh:in ("ko" "en" "ja" "zh")schema:numberOfPages: 정수, 1 이상
2) AuthorShape (저자 검증)
foaf:name: 필수, 문자열, 1개, 최소 2글자schema:email: 선택, 이메일 패턴schema:nationality: 선택, 문자열foaf:homepage: 선택, sh:nodeKind sh:IRI
3) ReviewShape (리뷰 검증)
schema:author: 필수, 1개, schema:Person 클래스schema:reviewRating: 필수, 정수, 1~5 범위schema:reviewBody: 필수, 문자열, 최소 10글자schema:datePublished: 필수, xsd:dateschema:itemReviewed: 필수, 1개, ex:Book 클래스
Part 2: 테스트 데이터 작성 (10분)
- 올바른 데이터: 모든 Shape을 만족하는 도서 3권 + 저자 2명 + 리뷰 3개
- 위반 데이터: 의도적으로 5개 이상의 위반을 포함한 데이터
Part 3: 검증 실행 (10분)
pySHACL로 검증하고 결과를 분석하세요:
에디터 로딩 중...
평가 기준
| 항목 | 배점 |
|---|---|
| Shape 설계 완성도 (3개 NodeShape) | 35% |
| 오픈 온톨로지 활용 (Schema.org + DC) | 20% |
| 테스트 데이터 품질 (올바른 + 위반) | 20% |
| pySHACL 검증 실행 & 결과 분석 | 15% |
| 코드 가독성 & 주석 | 10% |
보너스 과제
- 심각도 분류: Violation vs Warning vs Info 구분하여 Shape 설계
- n10s 연동: 검증 통과 데이터를 Neo4j에 임포트하는 파이프라인 구현
- SHACL Advanced:
sh:or,sh:not,sh:qualifiedValueShape사용
힌트 보기
Shape 파일은 .ttl 확장자로 저장하고, Turtle 문법 사용
sh:message를 한국어로 작성하면 디버깅 시 가독성 향상
ISBN-13 정규식: ^(978|979)[0-9]{10}$
pySHACL의 inference='rdfs' 옵션으로 클래스 상속 추론 활성화
위반 데이터 작성 시: 타입 불일치, 필수값 누락, 범위 초과, 패턴 불일치, 카디널리티 위반 등 다양한 유형으로
결과 파싱: rdflib의 Graph에서 SH.focusNode, SH.resultPath로 SPARQL 쿼리