개인적으로, 데이터 아키텍쳐 및 데이터 모델링에 관심이 있어
최종적으로 법률 데이터 기반의 언어모델을 만들기 위한 데이터 전처리 과정 전 데이터 수집단계에서부터 제대로 내가 생각하기에 데이터 아키텍처의 전반적인 절차대로 진행해 나가고자 한다.
국가법령정보 공동활용(LAW OPEN DATA) - OPEN API - OPEN API 활용가이드 - 법령 - 본문 - 현행법령 본문 조회
을 클릭하면, 다음과 같은 샘플 URL을 통해 XML구조를 파악할 수 있다.
그 중 XML 샘플 중 하나를 클릭하면 아래와 같은 창을 확인할 수 있는데, 이 샘플 페이지와 국가법령정보 공동활용에서 표로 제공하는 구조를 비교하면서 법령 본문의 XML 구조를 분석하고자 한다.
샘플 페이지를 통해 XML 구조를 분석한 결과, 법령 본문은 다음과 같은 체계를 가진 것을 확인할 수 있다.
법령 본문 XML 구조
<법령 - 법령키>
<기본정보>
<법령ID>
<공포일자>
<공포번호>
<언어>
<법종구분 - 법종구분코드>
<법령명_한글>
<법령명_한자>
<법령명약칭>
<제명변경여부>
<한글법령여부>
<편장절관>
<소관부처 - 소관부처코드>
<전화번호>
<시행일자>
<제개정구분>
<별표편집여부>
<공포법령여부>
<연락부서>
<부서단위 - 부서키>
<소관부처명>
<소관부처코드>
<부서명>
<부서연락처>
<조문>
<조문단위 - 조문키>
<조문번호>
<조문가지번호>
<조문여부>
<조문제목>
<조문시행일자>
<조문이동이전>
<조문이동이후>
<조문변경여부>
<조문제개정유형>
<조문내용>
<조문참고자료>
<항>
<항번호>
<항제개정유형>
<항제개정일자문자열>
<항내용>
<호>
<호번호>
<호내용>
<목>
<목번호>
<목내용>
<부칙>
<부칙단위 - 부칙키>
<부칙공포일자>
<부칙공포번호>
<부칙내용>
<별표>
<별표단위 - 별표키>
<별표번호>
<별표가지번호>
<별표구분>
<별표제목>
<별표시행일자>
<별표서식 파일링크>
<별표HWP파일명>
<별표서식PDF파일링크>
<별표PDF 파일명>
<별표이미지 파일명>
<별표내용>
<개정문>
<개정문내용>
<제개정이유>
<제개정이유내용>
법령 본문 XML 구조 - DB설계 고려
<법령 - 법령키> KEY(BIGINT), NO VALUE, NOT NULL
<기본정보> NO VALUE, NOT NULL
<법령ID> INT, UNIQUE, NOT NULL
<공포일자> DATE, NOT NULL
<공포번호> INT, UNIQUE, NOT NULL
<언어> CHAR(2), NOT NULL
<법종구분 - 법종구분코드> KEY(VARCHAR(20)), VALUE(VARCHAR(10)), NOT NULL
<법령명_한글> TEXT, UNIQUE, NOT NULL
<법령명_한자> TEXT, UNIQUE, NOT NULL
<법령명약칭> TEXT, UNIQUE, IS NULL
<제명변경여부> BIT(Y/N), NOT NULL
<한글법령여부> BIT(Y/N), NOT NULL
<편장절관> VARCHAR(30), NOT NULL
<소관부처 - 소관부처코드> KEY(VARCHAR(20)), VALUE(VARCHAR(50)), NOT NULL
<전화번호> VARCHAR(20), IS NULL
<시행일자> DATE, NOT NULL
<제개정구분> VARCHAR(30), NOT NULL
<별표편집여부> BIT(Y/N), NOT NULL
<공포법령여부> BIT(Y/N), NOT NULL
<연락부서> NO VALUE, NOT NULL
<부서단위 - 부서키> KEY(INT), NO VALUE, NOT NULL
<소관부처명> VARCHAR(50), NOT NULL
<소관부처코드> VARCHAR(20), NOT NULL
<부서명> VARCHAR(50), NOT NULL
<부서연락처> VARCHAR(20), IS NULL
<조문> NO VALUE, NOT NULL
<조문단위 - 조문키> KEY(INT), NO VALUE, NOT NULL
<조문번호> TINYINT, NOT NULL
<조문가지번호> TINYINT, IS NULL
<조문여부> VARCHAR(30), NOT NULL
<조문제목> TEXT, IS NULL
<조문시행일자> DATE, NOT NULL
<조문이동이전> VARCHAR(20), NOT NULL
<조문이동이후> VARCHAR(20), NOT NULL
<조문변경여부> BIT(Y/N), NOT NULL
<조문제개정유형> VARCHAR(30), IS NULL
<조문내용> LONGTEXT, NOT NULL
<조문참고자료> LONGTEXT, IS NULL
<항> NO VALUE, NOT NULL
<항번호> TINYINT, NOT NULL
<항제개정유형> VARCHAR(30), IS NULL
<항제개정일자문자열> TEXT, IS NULL
<항내용>LOGNTEXT, NOT NULL
<호> NO VALUE, IS NULL
<호번호> TINYINT, NOT NULL, INT
<호내용> NOT NULL, LONGTEXT
<목> NO VALUE, IS NULL
<목번호> TINYINT, NOT NULL
<목내용> LONGTEXT, NOT NULL
<부칙> NO VALUE, NOT NULL
<부칙단위 - 부칙키> KEY(BIGINT), NO VALUE, NOT NULL
<부칙공포일자> DATE, NOT NULL
<부칙공포번호> INT, NOT NULL
<부칙내용> LONGTEXT, NOT NULL
<별표> NO VALUE, IS NULL, NO VALUE
<별표단위 - 별표키> BIGINT, NOT NULL
<별표번호> TINYINT, NOT NULL
<별표가지번호> TINYINT, IS NULL
<별표구분> VARCHAR(30), IS NULL
<별표제목> TEXT, IS NULL
<별표시행일자> DATE, IS NULL
<별표서식 파일링크> TEXT, IS NULL
<별표HWP파일명> TEXT, IS NULL
<별표서식PDF파일링크> TEXT, IS NULL
<별표PDF 파일명> TEXT, IS NULL
<별표이미지 파일명> TEXT, IS NULL
<별표내용> LONGTEXT, NOT NULL
<개정문> NO VALUE, NOT NULL
<개정문내용> LONGTEXT, NOT NULL
<제개정이유> NO VALUE, NOT NULL
<제개정이유내용> LONGTEXT, NOT NULL