🏆50

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:date
  • schema: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%

보너스 과제

  1. 심각도 분류: Violation vs Warning vs Info 구분하여 Shape 설계
  2. n10s 연동: 검증 통과 데이터를 Neo4j에 임포트하는 파이프라인 구현
  3. 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 쿼리