JSON 규칙, 혼합형, 온톨로지의 선택 경계를 관계 깊이·변경 전파·감사 요구와 실험 절차로 요약한 대표 인포그래픽

5번 비교 실험에서는 단순한 발행 승인 문제라면 JSON 규칙, 구조화 검색 카드, SHACL이 같은 결론에 도달할 수 있음을 확인했습니다. 이번에는 질문을 한 단계 더 밀어 보겠습니다.

JSON 규칙만으로 충분한 문제와, 관계 의미·변경 영향·감사 경로를 갖춘 온톨로지가 제값을 하는 문제를 어떻게 같은 조건에서 비교하면 좋을까요?

이 글의 성격

이 글은 제품 성능 결과가 아니라 온톨로지와 JSON 규칙의 승부선을 찾기 위한 통제 실험 설계입니다. 아래에서 언급하는 “3홉 이상” 같은 경계도 문헌과 표준의 역할 차이에서 세운 사전 가설입니다. 실제 임계값은 제안한 실험을 끝낸 뒤에야 정할 수 있습니다.

조사 질문과 핵심 결론

여기서 궁금한 것은 “어느 기술이 늘 더 좋은가”가 아닙니다. 문제가 얼마나 복잡해져야 온톨로지의 의미 계층이 측정 가능한 이익을 만드는가를 살펴보려는 것입니다.

문헌과 표준만 놓고 보면 결론은 세 갈래로 나뉩니다.

  1. 단일 문서의 구조 검증과 얕은 조건 판정에서는 JSON Schema와 일반 규칙 엔진이 더 단순한 기준선이 될 가능성이 높습니다.
  2. 다중 홉 관계, 전이성·역관계·서브클래스·동일성, 여러 서비스에 흩어진 중복 의미가 늘어날수록 RDF·OWL·SPARQL 계층을 재사용할 가치가 커질 가능성이 높습니다.src_001src_002src_003
  3. 실무에서는 하나의 순수 스택보다 얕은 검증은 JSON, 관계 의미와 감사는 온톨로지로 나눈 혼합형이 더 나을 수 있습니다. 다만 정확도·지연시간·변경 범위·검토 시간을 함께 재기 전에는 단정하기 어렵습니다.

조사 범위와 방법

먼저 두 진영이 애초에 같은 종류의 도구가 아니라는 점부터 짚어 보겠습니다. JSON Schema는 JSON 인스턴스의 구조 정의와 검증에 초점을 맞춥니다. JSON-LD는 링크드데이터 직렬화 형식입니다.src_001src_002 RDF는 그래프 데이터 모델이고, OWL은 형식 의미론, SPARQL은 그래프 질의, SHACL은 RDF 그래프 검증을 맡습니다.src_003src_004src_005

그래서 이 글에서는 제품 이름끼리 바로 맞붙이지 않고 세 층으로 나누어 보겠습니다.

  • 표현과 저장: JSON 문서·JSON-LD·RDF 그래프
  • 판정과 추론: JSON 규칙·RDFS/OWL 프로파일·외부 규칙
  • 검증과 감사: JSON Schema 출력·SHACL validation report·추론 경로

일반성을 확보하기 위해 LUBM, OWL2Bench, WatDiv 같은 공개 벤치마크와 변경·감사가 중요한 버전드 도메인 시나리오를 함께 사용합니다.src_006src_007src_008src_009 특정 제품의 최적화를 표현 방식 전체의 우월성으로 착각하지 않도록, 가능하면 각 접근을 두 개 이상의 구현에서 반복합니다.

1. 먼저 역할 경계를 맞춰야 한다

JSON Schema와 규칙 엔진, RDF·OWL·SPARQL·SHACL이 각각 구조 검증·판정·관계 의미·질의·감사를 맡는 역할 경계 도판

겉모습은 비슷해도 맡은 일은 서로 다릅니다.

기술군주 역할강점비교할 때 주의할 점
JSON Schema한 JSON 인스턴스의 구조·형식 검증단순한 도입, 명확한 validation output다중 객체 관계 의미는 외부 코드가 담당
JsonLogic·JSON 규칙 엔진이벤트·정책 조건 판정규칙 이동과 애플리케이션 통합이 쉬움전역 그래프 의미와 추론은 직접 설계
JSON-LDJSON 형태의 링크드데이터 직렬화기존 JSON과 RDF 세계의 연결점직렬화 형식 자체가 추론 엔진은 아님
RDF·SPARQL그래프 표현과 다중 홉 질의관계 탐색과 URI 기반 재사용추론은 RDFS·OWL·규칙 계층이 필요
OWL 2 EL·QL·RL·DL클래스·속성 의미와 추론표현력과 계산 특성의 프로파일 선택고표현력 추론은 규모에 따라 비용 증가
SHACLRDF 그래프 제약 검증과 보고명시적인 위반 결과와 감사 산출물원출처의 사실성까지 보증하지는 않음

공정하게 비교하려면 각 접근이 요구하는 projection, 사전 전개, 중복 규칙, 매핑 코드까지 비용에 포함해야 합니다. RDF 그래프를 JSON 한 건으로 억지로 펴거나 단순한 폼 검증에 OWL DL 전체를 얹는다면, 출발부터 공정한 비교가 되기 어렵습니다.

2. 승부선을 만드는 세 변수

2.1 관계 깊이와 의미론

홉 수가 늘었다고 곧바로 온톨로지가 필요한 것은 아닙니다. 단순 경로 탐색이라면 일반 코드나 property graph로도 충분할 수 있습니다. 차이는 전이성, 역관계, 서브클래스, 동일성처럼 명시되지 않은 결과를 어떤 규칙으로 유도하느냐가 중요해질 때 생깁니다. OWL 2 RL은 규칙 기반 구현을 염두에 둔 프로파일이지만, 모든 문제에 OWL DL 수준의 표현력이 필요한 것은 아닙니다.src_003

2.2 중복 의미와 변경 전파

같은 개념이 스키마, 규칙 파일, 서비스 코드, 매핑에 반복되면 작은 의미 변경도 여러 아티팩트로 번집니다. 물론 온톨로지도 공짜는 아닙니다. 다만 클래스·속성·shape·query의 의존 관계를 명시해 두면 어디까지 손봐야 하는지 계산하기 쉬워집니다. 온톨로지 변경을 선언적 매핑에 전파하는 연구도 바로 이 문제를 다룹니다.src_006

2.3 감사와 설명 요구

최종 참·거짓만 필요하다면 작은 규칙이 유리합니다. 반대로 “어떤 그래프 버전과 규칙이 이 판정을 만들었는가”까지 재현해야 한다면 validation report, 유도 사실, 질의, 근거 경로가 운영 자산이 됩니다. 여기서 측정할 것은 자연어 설명이 그럴듯한지가 아닙니다. 재현 가능한 설명 패킷을 만드는 데 걸린 시간과 그 완전성을 보셔야 합니다.

승부선 가설을 직접 바꿔 보기

아래 탐색기에서 관계 홉 수, 중복 아티팩트, 변경 빈도, 감사 중요도, 필요한 의미론을 직접 바꿔 보시면 JSON 규칙·온톨로지·혼합형의 예상 운영 부담이 어떻게 달라지는지 확인하실 수 있습니다. 표시값은 측정된 성능이나 권고 임계값이 아니라 이 연구 설계의 상대 가설 지수입니다.

3. 공정한 통제 실험을 설계한다

공개 벤치마크와 버전드 도메인 데이터를 동일한 실행 조건에 넣고 정확도·지연·메모리·변경 범위·감사 시간을 수집하는 실험 파이프라인

하나의 거대한 데이터셋으로 모든 것을 재기보다, 목적에 따라 세 패밀리로 나누는 편이 좋습니다.

데이터 패밀리목적후보
추론 커버리지OWL 프로파일별 분류·질의·확장성 비교LUBM, OWL2Bench
질의 다양성홉 수와 질의 구조 변화에 따른 반응WatDiv
변경·감사스키마·정책 변경 후 영향과 설명 비용버전드 공공조달·자격심사 합성 KG

비교군은 최소 다섯 개로 구성합니다.

실험군구성확인하려는 것
RDF 기준선RDF + SPARQL, 추론 없음그래프 질의 자체의 비용
온톨로지 실무형OWL 2 RL + SHACL빠른 의미 확장과 검증·감사의 결합
온톨로지 고표현력OWL 2 EL 또는 DL분류·정합성의 표현력 상한과 비용
JSON 검증형JSON Schema + Ajv단일 문서 구조 검증 기준선
JSON 규칙형JsonLogic 또는 JSON 규칙 엔진이벤트·정책 판정과 중복 규칙 비용

Ajv는 Draft 2020-12를 지원하며 스키마를 검증 코드로 컴파일합니다.src_010 온톨로지 쪽에서는 materialization과 query-time reasoning을 한데 묶지 않습니다. 전처리 시간과 질의 시간을 따로 기록해야 비교 결과를 해석하기 쉽습니다.

측정 지표

지표정의수집 방식
정확도답·위반·설명 경로가 oracle과 일치하는 비율합성 생성기의 정답 집합과 비교
응답시간질의·검증·규칙 평가의 p50·p95·p99cold·warm run 분리
메모리peak RSS와 안정 상태 RSS프로세스 계측
홉별 성능홉 수 1–6에 따른 정확도와 지연 변화동일 템플릿의 층화 실험
변경 전파영향을 받은 파일·규칙·shape·query 수dependency graph closure
유지보수 비용수정 시간, touched artifacts, 회귀 실패통제된 개발 과제와 저장소 로그
감사 비용설명 완료 시간, 완전성, 재현성인적 감사 과제와 자동 검사

실행 순서

  1. 같은 도메인 사실에서 RDF 그래프와 JSON projection을 생성합니다.
  2. 각 스택에 자연스러운 스키마·규칙·shape를 만들고 별도 버전으로 고정합니다.
  3. 추론 없는 기준선과 각 추론 모드를 나누어 실행합니다.
  4. 클래스명 변경, 속성 범위 변경, 제약 강화 같은 변화를 하나씩 주입합니다.
  5. 영향 closure, 수정 파일, 회귀 실패와 설명 패킷을 수집합니다.
  6. seed와 질의 템플릿을 바꿔 같은 작업을 반복합니다.

변경 영향은 아래처럼 추적하시면 됩니다. 두 접근 모두 의존 그래프를 만들 수 있습니다. 다만 JSON 스택의 의미가 애플리케이션 조건 코드까지 흩어져 있다면 그 코드도 반드시 비용에 포함해야 합니다.

flowchart LR
    OC[온톨로지 변경] --> OP[클래스·속성]
    OP --> SH[SHACL Shapes]
    OP --> SQ[SPARQL Queries]
    OP --> MP[매핑]
    SH --> OT[회귀 테스트]
    SQ --> OT
    MP --> OT
    OT --> OA[감사 보고서]

    JR[JSON 규칙 변경] --> JS[JSON Schema]
    JR --> JL[규칙 엔진]
    JR --> JC[조건 코드]
    JS --> JT[회귀 테스트]
    JL --> JT
    JC --> JT
    JT --> JA[감사 문서]

4. 최소 사례로 의미 차이를 고정한다

아래 RDF 예시를 보시면 서브클래스와 역관계가 함께 들어 있습니다.

@prefix ex: <http://example.org/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
 
ex:AcademicStaff a owl:Class .
ex:Professor a owl:Class ; rdfs:subClassOf ex:AcademicStaff .
 
ex:advisorOf a owl:ObjectProperty ; rdfs:subPropertyOf ex:mentorOf .
ex:mentorOf a owl:ObjectProperty ; owl:inverseOf ex:mentoredBy .
 
ex:kim a ex:Professor ; ex:advisorOf ex:lee .

이어지는 질의에서는 저장소에 직접 적혀 있지 않은 AcademicStaff 타입과 mentoredBy 역관계를 제대로 추론했는지 확인합니다.

PREFIX ex: <http://example.org/>
SELECT ?staff
WHERE {
  ?staff ex:mentoredBy ex:lee .
  ?staff a ex:AcademicStaff .
}

JSON 조건으로도 같은 판정을 만들 수 있습니다. 여기서 눈여겨볼 부분은 rolementeeIds처럼 미리 펼쳐 둔 필드입니다. 누가 언제 어떤 규칙으로 만들었는지까지 비용과 provenance에 포함해야 공정한 비교가 됩니다.

{
  "and": [{ "==": [{ "var": "role" }, "Professor"] }, { "in": ["lee", { "var": "menteeIds" }] }]
}

실험 러너에는 모든 엔진에 같은 워밍 정책, 제한 시간, 출력 형식을 적용해야 합니다. 아래 코드는 응답시간과 메모리를 모으는 최소 골격입니다. 실제 엔진 wrapper를 묶어 실행하는 작업은 이 글의 범위에 포함하지 않았습니다.

from dataclasses import dataclass
import subprocess
import time
 
import psutil
 
 
@dataclass
class RunResult:
    system: str
    task_id: str
    elapsed_ms: float
    peak_rss_mb: float
    return_code: int
 
 
def run_and_measure(system: str, task_id: str, command: list[str]) -> RunResult:
    started = time.perf_counter()
    process = subprocess.Popen(command)
    monitored = psutil.Process(process.pid)
    peak_rss = 0
 
    while process.poll() is None:
        try:
            peak_rss = max(peak_rss, monitored.memory_info().rss)
        except psutil.Error:
            pass
        time.sleep(0.01)
 
    return RunResult(
        system=system,
        task_id=task_id,
        elapsed_ms=(time.perf_counter() - started) * 1000,
        peak_rss_mb=peak_rss / (1024 * 1024),
        return_code=process.returncode,
    )

5. 분석 계획과 판정 규칙

이 실험에는 표현 방식 × 홉 수 × 데이터 규모 × 의미론 난이도 × 변경 유형이 동시에 얽혀 있습니다. 정확도에는 로지스틱 혼합효과 모형을, 지연시간과 메모리에는 로그 변환 선형 혼합효과 모형이나 감마 GLMM을 적용하는 방안을 검토합니다. 질의 템플릿, seed, 참가자는 랜덤효과로 두고 다중비교 보정과 효과크기도 함께 보고합니다.

판정은 속도 순위 하나로 끝내지 않겠습니다.

  • JSON 우세: 정확도 차이가 없고, 지연·메모리·수정 시간에서 일관되게 낮은 비용을 보입니다.
  • 온톨로지 우세: 관계·추론 과제의 정확도 또는 설명 완전성이 개선되고, 추가 운영 비용을 포함해도 변경·감사 시간이 줄어듭니다.
  • 혼합형 우세: 얕은 검증은 JSON이 유리하고 관계 의미·감사 영역에서만 온톨로지가 이익을 만듭니다.
  • 판정 보류: 효과가 데이터셋이나 엔진 하나에만 나타나거나 신뢰구간이 넓습니다.

6. 반대 근거와 대안 가설

JSON 우세, 온톨로지 우세, 혼합형 우세와 판정 보류 조건을 한 화면에서 구분하고 측정 전 가설임을 강조한 의사결정 도판

복잡한 관계를 다루기 편하다는 이유만으로 온톨로지의 총비용이 낮아지는 것은 아닙니다.

  • JSON 스택도 명시적인 dependency registry와 provenance를 갖추면 변경 추적이 나아집니다.
  • 필요한 것이 경로 질의뿐이라면 property graph와 일반 코드가 더 단순할 수 있습니다.
  • 온톨로지 전문 인력, reasoner 운영, 매핑 계층의 비용이 관계 재사용으로 얻는 이익보다 클 수 있습니다.
  • 고표현력 OWL DL은 규모와 공리 구성에 따라 상시 요청 경로에 맞지 않을 수 있습니다.
  • 제품별 최적화 차이가 표준의 역할 차이보다 더 크게 나타날 수도 있습니다.

여기서 가장 강한 대안 가설은 **“필요한 것은 온톨로지 자체가 아니라, 흩어진 의미와 의존성을 명시적으로 관리하는 계층이다”**라는 주장입니다. 이를 검증하려면 JSON 규칙 스택에도 같은 수준의 버전 관리와 의존 추적을 제공해야 합니다. 온톨로지만 잘 정비한 채 비교하면 결과가 기울어질 수 있습니다.

7. 불확실성과 한계

  • 이 글은 실험 설계이며 통합 benchmark를 실행한 결과 보고서가 아닙니다.
  • “3홉 이상”은 문헌 기반 사전 가설이지 검증된 보편 임계값이 아닙니다.
  • 공개 벤치마크가 실제 조직의 규칙 중복, 승인 절차와 인력 비용을 완전히 재현하지 못할 수 있습니다.
  • 같은 표준을 구현한 엔진 간 성능 차이가 크므로 제품 하나의 결과를 접근 방식 전체로 일반화하면 안 됩니다.
  • 사람을 대상으로 유지보수·감사 시간을 측정하려면 참가자 동의, 보상과 순서 효과 통제가 필요합니다.
  • SHACL 1.2 Rules는 2026년 7월 현재 Working Draft이므로 핵심 비교군이 아니라 탐색적 부가 실험으로 두는 편이 안전합니다.src_013

8. 실무적 의미와 조건부 권고

처음에는 작고 결정론적인 기준선이면 충분합니다. 입력 한 건의 구조와 정책을 검사한다면 JSON Schema와 일반 규칙부터 먼저 재보시면 됩니다. 관계 깊이, 의미 중복, 변경 전파, 감사 시간이 실제 병목으로 드러날 때 RDF·SPARQL·OWL RL·SHACL 계층을 더하는 편이 좋습니다.

온톨로지를 썼다는 사실 자체가 성과는 아닙니다. 도입 여부는 다음 세 질문으로 판단해 보시면 됩니다.

  1. 관계·추론 과제의 오류가 줄었습니까?
  2. 변경 후 수정·재검증 범위가 줄었습니까?
  3. 근거를 재현하는 감사 시간이 줄었습니까?

세 가지 이익이 추가 저장소, 매핑, 추론, 전문성 비용을 넘지 못한다면 작은 JSON 규칙이 더 낫습니다. 여러 도구와 에이전트가 같은 의미를 거듭 쓰고 변경 영향과 설명 경로가 운영비의 큰 몫을 차지한다면, 그때는 온톨로지 계층을 도입할 이유가 생깁니다.

참고문헌