콘텐츠로 이동

이름표 (공개 주소)

문서
08
상태
승인 (2026-10-12)
판
v1
날짜
2026-10-12

Hahoe Genesis Protocol (HGP)의 칸 이름을 다른 기관의 프로그램도 읽을 수 있게 공개 주소에 낸다. 이 쪽이 그 주소의 사람용 설명이다.


무엇 주소 모양
이 설명 쪽 https://hgp.hahoe.io/ns/ 사람이 읽는 쪽
칸 이름의 뜻 (이름표) https://hgp.hahoe.io/ns/v1.jsonld JSON-LD 1.1 context
칸의 바탕 주소 https://hgp.hahoe.io/ns# hgp:sha256 = https://hgp.hahoe.io/ns#sha256
관계망 규칙표 https://hgp.hahoe.io/ns/relations-v1.json JSON
지문 묶음의 프로필 https://hgp.hahoe.io/ns/#fixity-v1 이 쪽 4절
  • 판 번호가 주소에 들어간다. 한 번 낸 판은 고치지 않는다. 칸을 더하거나 뜻을 바꾸면 v2를 새로 낸다. 옛 판은 그대로 남는다.
  • 칸의 바탕 주소(ns#)는 판이 바뀌어도 그대로다. 같은 칸은 늘 같은 주소다.
  • 로그인 없이 열린다. 기계용 파일은 Content-Type: application/ld+json(규칙표는 application/json), Access-Control-Allow-Origin: *로 낸다. 다른 기관의 프로그램이 바로 읽을 수 있게.

v1에는 지금 쓰는 두 묶음만 넣는다. 장부(03-manifest)의 칸은 03이 승인되면 v2에 넣는다.

칸 뜻 계산
sha256 원본 파일의 지문 SHA-256 (FIPS 180-4), 파일 바이트 그대로, 소문자 16진수 64자
root 권 지문 RFC 6962 2.1 머클 뿌리. 잎 = SHA-256(0x00 ‖ 지문), 가지 = SHA-256(0x01 ‖ 왼 ‖ 오), 홀수는 복사하지 않고 올린다. 잎의 차례는 권 안 면의 차례, 같은 원본은 처음 한 번 (02-지문 5절)
root_version 권 지문의 판. 면이 바뀌면 올라간다
method 권 지문을 만든 법 (사람이 읽는 글)
manifest 이 지문 묶음이 어느 IIIF 매니페스트의 것인가 주소
canvases 캔버스마다 한 줄
canvas IIIF 캔버스 주소 주소
derivation 화면용 줄인 사본을 원본에서 만든 법: crop [x0, y0, x1, y1] (원본 픽셀), rotate (도), reduced_long_side (픽셀)
칸 뜻 (06 4절)
id 줄의 이름표 (UUID). JSON-LD로 낼 때는 id, about, to, replaces 앞에 urn:uuid:를 붙인다
type 줄의 종류: node 점, claim 주장, view 보기
kind 점의 종류: person, group, place, event, work, thing
handle 사람이 읽는 별칭 <프로젝트>:<별칭>
about, to 주장의 대상과 관계의 상대 (이름표)
prop, value 무엇을 말하나, 그 값
role 사건에서 맡은 자리, 친척 관계 (5절)
basis stated 근거가 그대로 적음, inferred 미루어 앎
source 근거의 자리 목록
when 사실의 때 (edtf, original, calendar)
at 기록한 때 (RFC 3339)
event 줄이 하는 일: claimed, confirmed, retracted, reopened, scope_changed
status candidate 후보, confirmed 확인, retracted 물림
made_by, confirmed_by 만든 이 (사람·기계), 확인 도장 (자격 as)
scope, depositor 범위, 근거 기록의 기탁자
include, prefer, ties 보기의 규칙 (06 7절)
replaces, note 대신하는 줄, 메모
  • 장부 줄 맨 앞의 hgp 칸(규격 판, 예 "2026.10")은 이름표 이름과 겹쳐 JSON-LD로 풀지 않는다. JSON-LD로 낼 때는 conformsTo에 적는다.

IIIF 공식 검사기로 시험한 결과에 맞춘다 (hgp 이슈 #1, arkive 2026-10-12).

  • @context를 목록으로 쓰고 hgp 주소를 앞, IIIF 주소를 맨 뒤에: ["https://hgp.hahoe.io/ns/v1.jsonld", "http://iiif.io/api/presentation/3/context.json"]
  • 캔버스에는 hgp:sha256(원본 스캔 지문)을 붙여도 된다. 검사기를 통과한다.
  • 매니페스트에는 hgp:root를 붙이지 않는다. 검사기가 막는다. 권 지문은 metadata(사람용 글)와 seeAlso의 지문 묶음(기계용)에 둔다 (결정 0009).
  • context 자리에 주소 대신 객체를 적지 않는다. 검사기가 막는다.

매니페스트의 seeAlso가 가리키는 기계용 파일이다 (02-지문 9절).

{"type": "Dataset", "format": "application/json",
"profile": "https://hgp.hahoe.io/ns/#fixity-v1",
"id": "<저장고>/api/books/<권>/export/fixity"}

묶음 안의 칸은 2.1절. 묶음 맨 위에 "@context": "https://hgp.hahoe.io/ns/v1.jsonld"를 둘 수 있다. 예전 임시 이름 urn:x-hgp:fixity는 이 주소로 바꾼다.

  • 묶음 안에서는 프로필을 conformsTo로 적는다: "conformsTo": "https://hgp.hahoe.io/ns/#fixity-v1". profile은 매니페스트의 seeAlso 칸(IIIF)에서 쓰는 이름이고 v1 이름표에는 없어서, 묶음 안의 profile은 JSON-LD 처리기가 버린다 (2026-10-12 시험).

relations-v1.json은 「어느 종류의 점에 어떤 칸이 오고, 값이 어떤 모양이고, 하나인지 여럿인지」를 기계가 검사할 수 있게 적은 표다. 칸의 뜻은 06-관계망, 이 표는 모양만 정한다.

  • 어김의 두 단계. error는 장부에 들어가면 안 되는 것(근거 없음, 기계가 처음부터 확인). review는 사람이 볼 것(하나여야 할 칸에 값이 둘, 목록에 없는 자리 이름). 겹침은 고르지 않고 남긴다는 06 7절 때문에, 값이 둘인 것은 어김이 아니라 review다.
  • 기계가 낸 주장은 처음부터 confirmed일 수 없다 (error). 확인 도장은 사람만 찍는다 (결정 0006).
  • 사건 속 자리(participant의 role)는 정해 둔 값이다.
값 한국어 옛 값 (arkive가 옮길 때까지 읽음)
visitor 찾아온 이 「찾아온 이」
host 맞은 이 「맞은 이」
sender 보낸 이, 준 이 「보낸 이」, 「준 이」
recipient 받은 이 「받은 이」, 「받은 이(물건)」
companion 함께한 이 「함께한 이」

편지와 물건은 사건의 갈래(event_kind)가 이미 가르므로 「준 이」와 「보낸 이」를 하나로 둔다.

  • 친척 관계(kin의 role)는 원문의 호칭을 그대로 적는다 (족질, 족숙, 외숙 등). 한국 친족 호칭은 많고 뜻이 섬세해 목록으로 닫지 않는다. 빈 글자는 error.
  • 규칙표 모양은 JSON이다. W3C SHACL(그래프 검사 표준)로 옮겨 낼 수 있으나 지금은 하지 않는다 (참조).
표준 대응 등급
JSON-LD 1.1 (W3C) v1.jsonld는 JSON-LD 1.1 context다. 주장 줄, 점 줄, 지문 묶음, 캔버스 예를 처리기(jsonld.js 8.3.3, 안전 모드)로 펼쳐 RDF까지 바꿔 봤다 (2026-10-12) 정합
IIIF Presentation 3 3절대로 쓴 매니페스트는 공식 검사기 통과 (arkive 6권) 준수
W3C SHACL 규칙표를 SHACL로 옮길 수 있게 짰다 참조