Unify the two schema-generation scenarios into a single slot-17 skill, both feeding one claims register -> build -> validate(16) pipeline: - Mode 1 (existing site): NEW scripts/extract_site_claims.py turns URLs / local HTML / a directory into a claims register. Existing JSON-LD -> CONFIRMED; title/OpenGraph -> PENDING (never auto-shipped). + site-extraction-methodology.md and bundled fixtures/site/ demo pages. - Mode 2 (not-yet-published site): land the source-to-schema engine (build_schema_drafts.py, type_templates.json, claims/source registers, 3 refs, sample_claims.csv) from the Desktop builder. - Rewrite SKILL.md (v2.0) around the two-mode framing; the claims register is the shared pivot. Only CONFIRMED, non-conflicting claims become schema; unfilled template slots are pruned, never emitted as placeholders. - Retire the old template-fill generator (code/ + desktop/); update root CLAUDE.md. Self-tested both chains end-to-end: Mode 2 sample -> build -> validate PASS (P0=0); Mode 1 fixtures -> extract -> build -> validate PASS (P0=0), JSON-LD round-trips with nested address intact. Fixed two adapter bugs (nested node promotion; relative-path URI). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
63 lines
3.6 KiB
Markdown
63 lines
3.6 KiB
Markdown
# 출처 권위 위계 · 출처추적(Provenance) · 충돌 해소
|
|
|
|
미발행 사이트 스키마 저작의 성패는 "사실을 스키마로 굳히기 전에 단일 확정값을 만들 수 있는가"에 달려 있다. 그 판단 규칙을 명문화한다.
|
|
|
|
## 1. 출처 권위 위계 (authority rank)
|
|
|
|
값이 충돌할 때 **상위 권위 출처가 이긴다.** 클레임 레지스터의 `authority` 열에 1~5로 기록한다.
|
|
|
|
| 순위 | 출처 유형 | 신뢰 대상(어떤 사실에 권위) |
|
|
|:---:|-----------|------------------------------|
|
|
| **1** | 기업공시(DART), 사업자등록 정보 | 법인명·설립일·본사주소·대표자 (법적 사실) |
|
|
| **1** | 공식 홈페이지/IR, 프레스킷 | 브랜드 표기·연락처·URL·로고 (공식 표기) |
|
|
| **2** | 지속가능경영보고서, 사보, 공식 발간물 | 서사·정책·시설 스펙 |
|
|
| **2** | Wikidata, 위키백과 | 엔티티 식별자(Q-ID)·sameAs·국제 표기 |
|
|
| **3** | 주요 미디어 기사 | 사건·인용·맥락 (교차검증용) |
|
|
| **4** | 인물정보/집계 사이트, 소셜 | 보조·후보값 (단독 근거 불가) |
|
|
|
|
규칙
|
|
- **법적 사실**(법인명/설립일/주소)은 순위 1(공시) 우선.
|
|
- **공식 표기**(브랜드명/전화/URL)는 순위 1(공식 채널) 우선.
|
|
- **국제 식별/연결**(sameAs, 외국어 표기)은 Wikidata 우선.
|
|
- 순위 4 단독으로는 CONFIRMED 불가 → 상위 출처로 교차검증 필수.
|
|
|
|
## 2. 출처추적(provenance)을 남기는 이유
|
|
|
|
발행된 페이지 기반 작업은 "그 페이지가 근거"라는 자명한 출처가 있다. 미발행 작업은 그렇지 않으므로 **모든 클레임에 출처를 명시**해야 한다.
|
|
|
|
- `source_ids` — 소스 레지스터의 출처 ID(파이프로 복수). 예: `S-DART|S-OFF`
|
|
- 효용:
|
|
1. 충돌 시 권위 비교의 근거가 된다.
|
|
2. 럭셔리 브랜드 특성상 **사실 오류는 PR/법적 리스크** — 근거 추적이 방어선.
|
|
3. 런칭 후 사실 변경 시 어느 클레임을 갱신할지 즉시 특정 가능.
|
|
|
|
## 3. 충돌 해소 절차
|
|
|
|
```
|
|
값 충돌 발견
|
|
│
|
|
├─ 권위 순위가 다른가? ──예──▶ 상위 출처 채택, 하위는 note에 기록, status=CONFIRMED
|
|
│
|
|
└─ 동순위 충돌인가?
|
|
├─ 최신성(retrieved_date) 우선 적용 가능? ──예──▶ 최신 채택
|
|
└─ 판단 불가 ──▶ conflict=Y 유지, status=PENDING
|
|
→ 빌더가 자동 제외하고 build_report에 보고
|
|
→ 고객/이해관계자 질의로 확정 (최소 단위 질문)
|
|
```
|
|
|
|
원칙: **충돌이 미해소면 스키마에 넣지 않는다.** 모순된 사실로 만든 스키마는 NAP 불일치·KG 혼선으로 직결된다. 비우는 편이 틀리는 것보다 낫다.
|
|
|
|
## 4. 엔티티 정합(reconciliation) — 동명 함정
|
|
|
|
- 모든 핵심 엔티티는 **Wikidata Q-ID**로 못박는다(예: 호텔 법인 vs 동명 역사·지명).
|
|
- `sameAs`에는 검증된 식별 URL만: Wikidata, 위키백과, 공식 소셜.
|
|
- 미디어 기사 URL은 sameAs가 아님(엔티티 식별자가 아니라 언급).
|
|
- Knowledge Panel이 이미 있으면 그 표기를 공식 표기와 대조해 일치시킨다.
|
|
|
|
## 5. CONFIRMED 승격 체크리스트
|
|
- [ ] 값이 정규화됨(전화 E.164 / 날짜 ISO 8601 / 언어 BCP-47 / 국가 ISO alpha-2)
|
|
- [ ] `source_ids` 1개 이상, 핵심 사실은 권위 순위 1~2
|
|
- [ ] 동일 속성 충돌 없음(`conflict` 비어 있음)
|
|
- [ ] 엔티티는 `sameAs`/Q-ID로 식별 정합 완료
|
|
- 위 충족 시에만 `status=CONFIRMED` → 빌더가 스키마로 채택.
|