관점 에세이 · 2026-08-29

법은 조건문의 집합이 아니었다

세법 온톨로지를 만들며 발견한 것은 규칙을 더 많이 찾는 법이 아니라, 사건의 모양과 빠진 사실을 판별하는 법이었다

ontologyknowledge-graphretrieval

세법 온톨로지를 만들기 시작했을 때는 법도 결국 규칙의 집합이라고 생각했다. 법령에서 조건과 결과를 뽑고, 당사자 관계와 거래 정보를 넣으면 적용할 규칙을 찾을 수 있을 것 같았다. 입력이 있고, 조건이 있고, 결과가 있는 기획자로서 익숙한 그림이었다.

그래서 먼저 가족 간 거래를 모델링했다. 양도자와 양수자가 누구인지. 부모와 자녀인지, 배우자인지, 세법상 특수관계인인지. 관계를 구조화한 뒤 그 관계에 연결될 수 있는 조문을 붙였다.

최소 동작 데모에는 가상의 거래 TX-001을 넣었다. 부모인 A가 자녀인 B에게 자산을 직접 양도하는, 한 건의 매매다.

Rule Resolver를 실행하자 다섯 개 규칙이 후보로 나왔다. 처음에는 성공처럼 보였다. 가족관계를 바탕으로 관련 법령을 찾았으니까.


관계가 맞는다고 조문이 적용되는 것은 아니다

후보에는 「상속세 및 증여세법」 제44조와 「소득세법」 제101조가 들어 있었다. 상속세 및 증여세법 제44조 제1항은 배우자 또는 직계존비속에게 양도한 재산을, 원칙적으로 그 배우자등이 증여받은 것으로 추정하는 규정이다. 다만 대가를 받고 양도한 사실이 명백한 경우 등에는 적용하지 않는 예외가 있다.[1]

TX-001은 부모와 자녀 사이의 직접 양도다. 제44조 제1항을 후보로 가져오는 일은 자연스럽지만, 바로 적용이라고 표시할 수는 없다. 실제 대가 지급과 법정 예외에 관한 사실을 확인해야 한다. 정확한 표시는 패턴 일치, 사실 확인 필요에 더 가깝다.

같은 조문 제2항은 전혀 다른 사건을 요구한다. 구조를 단순하게 쓰면 다음과 같다.

A → B → C

A: 당초 양도자
B: 특수관계인인 양수자
C: A의 배우자 또는 직계존비속

A가 특수관계인 B에게 재산을 양도하고, B가 양수일부터 3년 이내에 그 재산을 A의 배우자나 직계존비속 C에게 다시 양도하는 경우다. 당초 양도자와 양수자의 소득세 결정세액 합계와 증여세액의 비교도 예외 조건으로 이어진다.[1]

TX-001에는 두 번째 양도가 없다. 그런데 관계만 보고 후보를 모으면, A와 B가 가족이라는 이유로 제44조 제2항도 함께 올라온다.

관계는 맞다. 사건의 모양은 맞지 않는다.

엔진이 틀린 조문을 "적용"했다고 말하는 순간, 그 오류는 검색 오류가 아니라 법률 판단 오류가 된다.


법은 거래 하나가 아니라 사건의 순서를 본다

소득세법 제101조에서도 같은 문제가 보였다. 제101조 제2항은 거주자가 특수관계인에게 자산을 증여한 뒤, 수증자가 그 증여일부터 10년 이내에 다시 타인에게 양도한 경우를 다룬다. 수증자의 증여세와 양도소득세 합계가 증여자가 직접 양도했을 때의 양도소득세보다 적고, 양도소득이 수증자에게 실질적으로 귀속되지 않은 경우에는 증여자가 직접 양도한 것으로 본다.[2]

A ──증여──> B ──양도──> C

엔진은 A와 B가 특수관계라는 사실만 볼 수 없다. 최소한 아래 사실을 비교해야 한다.

Event 1 = Gift
Event 2 = Sale
Event 1.asset = Event 2.asset
Event 1 BEFORE Event 2
Event 2.date - Event 1.date <= 10 years
tax(Event 1 + Event 2) < tax(direct sale)

이는 조문 전체를 코드 한 줄로 번역한 것이 아니다. 배우자와 직계존비속에 관한 제외, 실질 귀속 예외도 별도의 노드로 남겨야 한다. 핵심은 조건의 개수가 아니라, 조건들이 한 거래의 속성이 아닌 여러 사건의 연결과 순서를 가리킨다는 점이다.

반면 TX-001은 부모가 자녀에게 직접 매매한 한 건의 사건이다.

A ──매매──> B

관계 일부는 일치한다. 그러나 사건의 종류와 수가 다르고 시간 순서도 없다. 제101조 제2항은 이 거래에 적용할 수 없다.

여기서 기존 Resolver의 결함이 또렷해졌다. 관련 있는 규칙을 찾는 일과, 실제 적용할 수 있는 규칙을 판정하는 일은 다른 문제다.


하나의 거래를 여러 법이 서로 다르게 본다

부모가 자녀에게 시가 10억 원인 자산을 5억 원에 양도한다고 해 보자. 경제적으로는 하나의 저가 양도다. 그러나 상속세 및 증여세법과 소득세법은 같은 사건에 서로 다른 질문을 던진다.

상속세 및 증여세법 제35조는 특수관계인 사이에 재산을 시가보다 낮게 양수하거나 높게 양도한 경우, 대가와 시가의 차액이 기준금액 이상이면 그 이익을 증여재산가액으로 보는 규정이다. 특수관계가 없는 당사자 사이에도 거래 관행상 정당한 사유가 없는 현저한 저가·고가 거래를 따로 다룬다.[3]

반면 소득세법 제101조 제1항은 특수관계인과의 거래로 양도소득세 부담을 부당하게 줄인 것으로 인정되면, 과세관청이 양도소득을 다시 계산할 수 있게 한다.[2] 전자는 자녀가 얻은 경제적 이익을, 후자는 부모의 양도소득세 부담을 묻는다.

부모 → 자녀 저가 양도를 하나의 Rule ID로 끝내면 안 된다. 하나의 현실 사건 위에 증여 이익과 양도소득세 부당행위계산이라는 관점이 겹친다. 두 규칙은 입력 일부를 공유하지만, 요구하는 계산과 결론은 같지 않다.


if-else보다 사건 그래프에 가까운 이유

처음의 모델은 이 정도였다.

IF relationship = ParentChild
THEN apply Rule X

실제 법을 모델링하려면 행위자와 역할, 관계, 사건과 자산, 가격과 시간, 사건 순서, 세액, 예외를 함께 다뤄야 했다. 그중 빠지기 쉬운 것이 Event Sequence다. 컴퓨터 입장에서 A → B와 A → B → C는 모두 자산 이동일 수 있지만, 법에서는 완전히 다른 사건이다. 조문이 묻는 것은 결과만이 아니라 누가 어떤 자산을 어떤 법적 성격의 행위로, 어느 순서에 따라 옮겼는지다.

법률 추론의 최소 단위는 단순한 엔터티-관계 트리플보다 넓어야 한다. 사람과 관계를 저장하는 데 그치지 않고, 사건을 법적 행위로 분류하고 동일 자산과 시간축으로 연결하며, 조문이 요구하는 조건과 예외를 그 위에서 평가해야 한다.

Reality
  ↓
Entity / Relationship / Event / Time
  ↓
Legal Qualification
  ↓
Applicable Rule
  ↓
Tax Outcome

Candidate와 Applicable을 분리했다

그래서 Rule Resolver의 역할을 둘로 나눴다.

첫 단계는 Candidate Retrieval이다. 가족관계, 자산 유형, 세목, 거래 유형처럼 넓은 단서로 후보를 가져온다. 두 번째 단계인 Applicability Evaluation에서 규칙이 요구하는 사건 패턴과 실제 사건 그래프를 대조한다. 다섯 개 규칙이 나온 것은 실패가 아니라, 놓치지 않기 위한 설계다.

required_relationship
required_transaction_pattern
required_event_sequence
required_temporal_condition
required_price_condition
required_tax_comparison
exception

그러면 TX-001의 결과는 더 정직하게 표현할 수 있다.

상속세 및 증여세법 제44조 ①
  → CANDIDATE
  → 직접 양도 패턴은 일치
  → 대가 지급과 예외 사실 확인 필요
  → INSUFFICIENT_FACTS 또는 APPLICABLE

상속세 및 증여세법 제44조 ②
  → CANDIDATE
  → A → B → C 재양도 패턴 불일치
  → NOT_APPLICABLE

소득세법 제101조 ②
  → CANDIDATE
  → 증여 → 재양도 패턴 불일치
  → NOT_APPLICABLE

APPLICABLE과 NOT_APPLICABLE만으로는 부족했다. 이전 증여와 증여일을 모르는데 10년 이내 재양도를 판단하거나, 거래가액과 시가를 모른 채 저가 양수를 판정할 수는 없다.

CANDIDATE
APPLICABLE
NOT_APPLICABLE
INSUFFICIENT_FACTS

INSUFFICIENT_FACTS는 실패 상태가 아니다. 엔진이 임의로 결론 내리는 대신 "이전 증여 여부와 증여일이 필요하다"고 말할 수 있게 한다. 대화형 서비스라면 그 값은 다음 질문의 근거가 된다. 무엇을 아직 모르는지 드러내는 쪽이 더 안전하다.


현실을 법이 읽을 수 있는 형태로 바꾸는 일

개발의 복잡성은 보통 컴포넌트가 늘고 상태가 오가면서 생긴다. 경계와 인터페이스를 정리하면 어느 정도 관리할 수 있다. 법은 다르다. 한 규칙 안에 관계, 사건, 시간, 가격, 세액, 예외가 함께 들어가며, 법률·시행령·시행규칙도 연결된다. 엔진의 모듈 경계는 구현을 관리해 줄 수는 있어도 현실의 조건을 삭제해 주지는 않는다.

처음에는 세금 계산기를 만들고 싶었다. 하지만 세액 계산보다 먼저 풀어야 할 문제가 훨씬 많았다. 실제 가족관계와 세법상 특수관계는 같은 말이 아니고, 현실의 거래와 세법상 거래 분류도 자동으로 일치하지 않는다. 같은 사건도 여러 법이 서로 다른 관점에서 평가한다.

그래서 온톨로지가 필요한 이유도 달리 보이기 시작했다. 온톨로지는 검색을 잘하기 위한 지식 그래프만은 아니다. 현실의 사건을 법이 읽는 단위로 바꾸고, 그 변환 과정에서 무엇이 확인됐고 무엇이 비어 있는지를 남기는 중간 언어에 가깝다.

LLM은 법령 몇 개를 읽고 설명하는 데 유용하다. 그러나 여러 가족의 관계, 자산, 수십 건의 거래, 서로 다른 시점의 법령과 예외를 결합해 수백 개 시나리오를 재현 가능하게 비교하려면 다른 종류의 시스템이 필요하다. 후보를 찾는 언어 능력과 적용을 판정하는 사건 모델을 분리하는 시스템이다.

그 시스템을 만들며 법을 배운다. 동시에 현실이 왜 생각보다 훨씬 모델링하기 어려운지도 배운다.

참고와 범위

이 글의 거래와 인물은 모델링 설명을 위한 가상 사례다. 실제 세무 판단은 거래 당시의 법령, 계약·대금 지급·자금 출처 자료, 자산 평가, 예외 요건 등 개별 사실관계에 따라 달라진다.

[1]: 국가법령정보센터, 상속세 및 증여세법 제44조 (2026-08-29 확인).

[2]: 국가법령정보센터, 소득세법 제101조 (2026-08-29 확인).

[3]: 국가법령정보센터, 상속세 및 증여세법 제35조 (2026-08-29 확인).