환경 설정
AI API 키를 등록하고 작업 폴더를 설정합니다. API 키는 현재 탭의 sessionStorage에 저장되며 새로고침 후에도 유지됩니다. 인증 요청은 선택한 공급자로 전송되고, 분석 시 문서·시나리오도 모델 입력에 포함됩니다. 키 지우기 버튼으로 직접 삭제할 수 있습니다.
/ 온톨로지_작업_[오늘날짜]/- schema_[시나리오ID].json- combined_schema.json- upper_ontology.json- custom_prompts.json- ontology_result_final.json- ontology_result_final.jsonld (JSON-LD · GraphDB 임포트용)- cmp_result.json (A/B/C 검증 비교 마지막 결과)- hitl_history.json (HITL 채택 이력 누적 — 통계 분석용)docs/ (업로드 문서 자동
저장)- [문서파일명]- _index.json
추천 기준일: 2026-10-02 · 실측 순위 아님 · 공식 모델 안내
추천 기준일: 2026-10-02 · 실측 순위 아님 · 공식 모델 안내
sk-proj- 등의 형식입니다. · API 데이터는 기본적으로 모델 학습에 사용되지 않음. 보관 기간은 서비스·계정 설정에 따라 다르며, 기본 악용 모니터링 로그는 최대 30일 보관될 수 있습니다.
추천 기준일: 2026-10-02 · 실측 순위 아님 · 공식 모델 안내
/v1/chat/completions)
형식을 사용합니다. Ollama는 ollama serve 실행 후 연결하세요. 브라우저 보안 정책상 file://
환경에서는 CORS 오류가 발생할 수 있습니다.file:// 환경에서는 브라우저 CORS 정책으로 로컬 서버 연결이 차단될
수 있습니다. 이 경우 이 HTML 파일을 로컬 웹서버로 서빙하거나(python -m http.server 등), Ollama에 CORS 허용
헤더를 설정하세요.test 계정으로 연결됩니다. 다수가 동시에 사용하면 Rate
Limit으로 차단될 수 있습니다. 차단 시 법령 텍스트를 직접 복사해 Step 2 파일 업로드로 대체하세요.문서 로드
부처·부서의 업무 매뉴얼, 행정 조례·법령, 표준운영절차(SOP) 등 LLM이 참조할 문서를 불러옵니다. 파일 업로드(.txt .md .pdf .docx) 또는 법제처 법령정보를 직접 검색할 수 있습니다. Step 3에서 다룰 행정 업무 영역의 문서를 먼저 수집할수록 Step 4 온톨로지 추출 품질이 높아집니다.
선택한 폴더의 파일:
대국민 알림 가상 예시 데이터 펼치기 ▾
• CSV · TSV는 헤더 행을 자동 감지해 텍스트로 변환합니다
• JSON은 배열/객체를 자동 평탄화합니다
• XML은 반복
엘리먼트를 행 단위로 변환합니다
• Excel(.xlsx)은 CSV로 변환 후 사용을 권장합니다
• 변환된 텍스트는 Step 4 온톨로지 추출에 바로
사용됩니다
• CORS 정책: 공공기관 API 중 CORS 미허용
서버는 브라우저에서 직접 호출 불가 - 이 경우 Postman으로 수집 후 .txt 파일로 붙여넣기 하세요
• 응답이 JSON 배열이면 각 항목을 별도 문서로
분리해 로드합니다
• data.go.kr 데이터셋별 활용 신청과 API 설명서를 확인하세요
• 검색 결과는 공식 포털에서 열립니다. 파일 다운로드 또는 개별 API 활용 신청 후 데이터를 불러오세요
• CORS 제한: 일부 API는 직접 호출이 안 될 수 있습니다 - 해당 데이터셋 페이지에서 미리보기 데이터를 복사해
파일로 업로드하세요
브라우저에서 DB에 직접 접속할 수 없습니다. 아래 방법으로 데이터를 추출한 뒤 파일로 업로드하세요.
R2RML 또는 Morph-KGC를 사용하면 DB 테이블을 RDF 트리플로 직접 변환할 수 있습니다. Step 9 연동 가이드의 "RDB 직접 연계" 탭을 참고하세요.
test 키로 제한 호출민원/업무 시나리오 입력
분석할 행정 민원 시나리오를 입력합니다. 도메인별 예시를 클릭하거나 직접 작성하세요.
시나리오 잘 쓰는 법 - 클릭해서 가이드 보기 펼치기 ▾
나이·직종·자격 여부·특수상황(장애·수급자 등)
허가·신청·갱신·이의신청·단속 등 행위 유형
판단이 달라지는 조건
AI가 답해야 할 핵심 질문
신청인: 일반 민원인(60대, 보행 불편). 발생일: 2024-11-01.
처리 요청: ① 긴급 보수 가능 여부, ② 담당 부서 및 처리기한, ③ 야간 임시 안전시설 설치 가능 여부."
도메인 온톨로지 추출
시나리오별로 독립된 도메인 온톨로지를 추출합니다. 각 탭에서 개별 추출하거나 한번에 모두 추출할 수 있습니다.
상위 온톨로지 추출
각 도메인 스키마에서 공통 추상 개념을 추출하고 subClassOf 관계로 연결합니다. 이것이 온톨로지 통합(Integration)의 핵심입니다. 시나리오가 1개인 경우 이 단계를 건너뛰고 Step 6으로 바로 진행해도 됩니다.
추론 규칙 확장
도메인 및 상위 온톨로지의 트리플을 조합하여 복합 조건이 발동하는 추론 규칙(SWRL 스타일)을 LLM이 도출합니다.
| 주체 (Subject) | 서술어 (Predicate) | 객체 (Object) |
|---|
지식 그래프 시각화 & 질의
추출된 온톨로지 스키마를 인터랙티브 지식 그래프로 시각화하거나, 트리플 패턴 질의로 원하는 관계를 직접 검색합니다.
그래프 읽는 법 — 초심자 안내 (펼쳐서 확인)
개념·클래스·규칙·인스턴스 하나. 클릭하면 아래에 세부 카드가 열립니다.
두 노드 사이의 관계(속성). 화살표 방향이 주어→목적어 방향입니다.
| 표시 | 레이어 | 의미 · 역할 |
|---|---|---|
| L2 owl:Class | 도메인 개념 묶음(클래스). 예: 민원인,
담당부서
|
|
| L2 상위온톨 | 여러 클래스를 묶는 추상 상위 개념. Step 5에서 추출 | |
| L3 ObjectProp | 클래스 간 관계 화살표. 예: 신청한다,
처리한다
|
|
| L3 DataProp | 클래스→값 속성. 예: 처리기한,
수수료
|
|
| L4 트리플 | 주어-서술어-목적어 지식 조각 하나. 온톨로지의 기본 단위 | |
| L4 A-Box | 실제 개별 사례 데이터. Step 6 추론 엔진의 입력값 | |
| L4 파생 | LLM이 제시한 결론 후보 (원문·입력 사실 대조 필요) | |
| L5 CRITICAL | IF-THEN 추론 규칙(별 모양). 중요도 순: CRITICAL > HIGH > MEDIUM > LOW | |
| L5 HIGH | ||
| L5 MEDIUM | ||
| L5 LOW | ||
| L5 SHACL | 데이터 제약 조건(다이아몬드). 대상 클래스에 점선으로 연결됨 | |
| L5 예외규칙 | 조건 충족 시 일반 규칙 대신 적용되는 예외 처리 규칙 |
label노드 이름 —
업무 개념
또는 규칙 식별자
layer이 도구의 시각화 계층
중 어느
레이어에 속하는지 (L2 ~ L5)
S / P / O트리플의
주어(Subject) · 서술어(Predicate) · 목적어(Object)
rule_id추론 규칙
고유 번호
(L5 SWRL 노드)
SWRL Atom규칙
조건 상세
— triple(트리플 패턴) · threshold(기준값) · swrlb(비교 방향)
severitySHACL
위반
등급 또는 SWRL 규칙 중요도 (CRITICAL / HIGH / MEDIUM / LOW)
targetClassSHACL
제약이 적용되는 대상 클래스 (L5 SHACL 노드)
W3C 배지이 노드가 참조하는 표준·규칙 어휘 (적합성 인증 아님) (RDF 1.1 / OWL 2 DL / SWRL / SHACL)
?(와일드카드)를 입력하세요. 조건 행이 여러 개면 AND 조건 - 하나의 트리플이 모든 행의 조건을 동시에 만족해야
결과에 포함됩니다. 표준 SPARQL의 변수 바인딩·조인 기능은 지원하지 않으며, 외부 서버 연동 없이 현재 메모리의 트리플에 대해 동작합니다.
| 주체 (Subject) | 서술어 (Predicate) | 객체 (Object) | |
|---|---|---|---|
검증 비교 (A/B/C Benchmarking)
동일한 질문에 대해 순수 LLM(실험 C) · 일반 텍스트 RAG(실험 A) · 온톨로지 스키마 주입(실험 B) 세 가지 답변을 비교합니다.
외부 앱 연동 테스트 가이드
추출된 온톨로지 스키마·추론 규칙·상위 온톨로지를 외부 시스템과 연동하는 방법을 단계별로 안내합니다. Python · LangChain · SPARQL · REST API 연동 코드를 환경·파일 경로·저장소·API 권한을 설정한 뒤 검증하여 사용할 수 있습니다.
@context, @graph)으로 변환된 온톨로지. GraphDB 임포트·LangChain 컨텍스트
주입에 바로 활용. 실제 연동에는 이 파일을 사용하세요.GOOGLE_API_KEY=AIza...를 저장해 두세요.
docker-compose.yml)tier2_setup.py)tier2_graph_rag.py)rdflib 설치:
pip install rdflib
pip install rdflib를 먼저 실행하세요.
pip install rdflib langchain langchain-google-genai이 도구의 구현 방식: 아래 코드는 추출한 스키마 전체를 텍스트로 변환해 시스템 프롬프트에 주입하는 컨텍스트 주입(Context Injection) 방식입니다. 실제 Graph RAG는 GraphDB 등 트리플 스토어에서 SPARQL 질의로 관련 서브그래프만 동적으로 탐색·주입하며, 대규모 데이터에서 더 효율적입니다. GraphDB 연동 후 실제 Graph RAG가 동작하는 흐름(SPARQL 조회 → 관련 트리플 반환 → LLM 주입)은 Step 10 > 시퀀스 다이어그램에서 확인할 수 있습니다.
R2RML 예시: 가상 테이블 COMPLAINT의 ID와 DEPT_CODE를 매핑합니다. 실제 테이블·컬럼·네임스페이스로 변경하세요.
@prefix rr: <http://www.w3.org/ns/r2rml#> .
@prefix ex: <https://example.org/ontology#> .
<#ComplaintMap> a rr:TriplesMap ;
rr:logicalTable [ rr:tableName "COMPLAINT" ] ;
rr:subjectMap [ rr:template "https://example.org/complaint/{ID}" ; rr:class ex:Complaint ] ;
rr:predicateObjectMap [ rr:predicate ex:departmentCode ;
rr:objectMap [ rr:column "DEPT_CODE" ] ] .
기존 DB를 활용할 수 있지만 접근 권한, 데이터 형식, 성능과 매핑 정확도를 별도로 검증해야 합니다.
| 구분 | 오늘 실습 환경 | 실제 행정망 적용 시 |
|---|---|---|
| LLM API | 외부 클라우드 (Gemini/GPT/Claude) 또는 로컬 모델 | 내부 sLLM 또는 승인된 G2B API |
| 데이터 저장 | 브라우저 저장소 및 선택한 작업 폴더 | 내부망 GraphDB / 온프레미스 서버 |
| 민감 데이터 | 가상 시나리오만 사용 권장 | 개인정보·비공개 데이터 외부 전송 금지 |
| 네트워크 | 인터넷 연결 필요 | 행정망(폐쇄망) 내부에서만 동작 |
| 이 도구 자체 | 주요 라이브러리 로컬 번들; API·일부 기능은 네트워크 필요 | 내부 서버 배포 또는 오프라인 번들 사용 |
GPU 서버 필요, 초기 구축 비용 발생.
상용 클라우드 불필요, 행정망 내 설치 가능.
가장 빠른 도입 경로이나 계약·심의 기간 필요.
새 도메인 수동 추가 (고급 사용자용 · 펼쳐서 직접 입력)
@graph 출력.표준: RDF 1.1 Concepts
sh:NodeShape,
sh:targetClass, sh:minCount, sh:severity. Step 4 GUI
편집기 + Step 6의 제한된 로컬 minCount 검사 + Step 7 시각화 + JSON-LD 내보내기 포함.표준: SHACL W3C Rec
{
"@context": {
"owl": "http://www.w3.org/2002/07/owl#",
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"sh": "http://www.w3.org/ns/shacl#",
"ont": "http://admin.go.kr/ontology#"
},
"@graph": [
{ "@id": "ont:시민", "@type": "owl:Class" },
{ "@id": "ont:시민Shape", "@type": "sh:NodeShape",
"sh:targetClass": { "@id": "ont:시민" },
"sh:property": [{
"@type": "sh:PropertyShape",
"sh:path": { "@id": "ont:제출한다" },
"sh:minCount": 1,
"sh:severity": { "@id": "sh:Violation" }
}]
},
{ "@id": "ont:INF_01", "@type": "ont:InferenceRule",
"ont:swrlCondition": "시민(?x) ∧ 검사만료일경과(?x, true)",
"ont:swrlAction": "과태료부과(?x, 40000)" }
]
}
| 표준 | 이 솔루션의 역할 | 표준과 구현의 구분 | 검증 레벨 | 적용 단계 |
|---|---|---|---|---|
| RDF 1.1 | 주어·서술어·목적어 데이터 모델 | 트리플 최소 개수는 표준 요건이 아닙니다. 중복 문장은 RDF 그래프에서 같은 사실이며 개수가 늘지 않습니다. | 로컬 구조 검사 | 3·4·6 |
| OWL 2 / RDFS | 클래스·속성·계층 공리 | domain/range는 유형을 추론합니다. 주어·목적어 이름이 domain/range와 같아야 하는 제약이 아닙니다. 전체 OWL 2 DL 일관성은 검사하지 않습니다. | 모델링 검토 | 4·5·6·7 |
| SWRL | 교육용 IF-THEN 규칙 | W3C Member Submission입니다. 단일 조건·상수·다중 결론을 허용합니다. 도구의 문자열 규칙은 실행 가능한 SWRL 직렬화가 아닙니다. | LLM 검토 후보 | 4·6 |
| SHACL | 제약 초안·일부 로컬 검사 | 현재 로컬 검사는 명시적 target_class, 단순 path, min_count에 한정됩니다. 미지원 제약·대상 없음은 별도 표시합니다. sh:Info도 표준 심각도이며 severity는 필수가 아닙니다. | 제한된 검사 | 4·6·7·9 |
| JSON-LD 1.1 | RDF 직렬화 | 이 도구는 @context와 @graph를 사용합니다. 여섯 접두사나 @graph가 모든 JSON-LD 문서의 필수 요건은 아닙니다. 외부 시스템 적재 전 스키마·IRI·규칙 표현을 확인하세요. | 내보내기 형식 | 9 |
| Step | RDF 1.1 | OWL 2 DL | RDFS | SWRL | SHACL | JSON-LD |
|---|---|---|---|---|---|---|
| Step 4 도메인 온톨로지 | ||||||
| Step 5 상위 온톨로지 | - | - | - | |||
| Step 6 추론 규칙 | - | - | ||||
| Step 7 지식 그래프 | - | - | - | - | ||
| Step 9 연동 가이드 | - | - | - | - |