Semantica × Smart Data Models · Tech Briefing
01 / 20

Open Source · Open Standards · 기술 브리핑

오픈소스로 보는
온톨로지 스택

Semantica(컨텍스트 그래프·결정 지능)와 Smart Data Models(표준 데이터 모델, Smart Water 도메인).
Palantir Ontology가 하는 일을 오픈소스와 공개 표준으로 어디까지 할 수 있는지, 두 프로젝트를 직접 받아 빌드·검증하며 정리했습니다.

GitHub semantica-agi/semantica · v0.6.7 · MIT smart-data-models/SmartWater · 7 subjects · 40 models 검증 2026-09-02 · 스키마 40/40 통과

※ 공개 저장소·문서·웹사이트를 바탕으로 만든 기술 소개 자료이며, 각 프로젝트의 공식 자료가 아닙니다. 수치는 2026-09-02 기준 저장소에서 직접 측정했습니다.

이번 브리핑은 두 개의 오픈 프로젝트를 다룹니다. 하나는 AI 에이전트를 위한 오픈소스 컨텍스트 그래프 Semantica, 다른 하나는 FIWARE 진영이 이끄는 표준 데이터 모델 Smart Data Models입니다. 앞선 Palantir 온톨로지 브리핑과 짝을 이루는 자료로, 두 프로젝트를 직접 받아 빌드하고 검증한 결과까지 함께 정리했습니다.

Agenda

순서는 네 부분입니다

01

Semantica

“AI 에이전트를 위한 오픈소스 Palantir”를 표방하는 컨텍스트 그래프 인프라. 정의, 제공 기능, 아키텍처, 결정 지능·거버넌스·추론 엔진, Knowledge Explorer.

8장
02

직접 해본 것

저장소 클론, Explorer 프론트엔드 빌드, 코어 라이브러리 실행 조건(Python·의존성) 확인. 무엇이 됐고 무엇이 안 됐는지 그대로.

2장
03

Smart Data Models

13개 도메인 1,118개 모델 중 Smart Water 7개 subject·40개 엔티티. 패키지 구조, WaterQualityObserved 해부, NGSI-LD 표현, EPANET 관망 모델, 스키마 검증 실행 결과.

7장
04

셋의 관계

Palantir Ontology · Semantica · Smart Data Models 개념 매핑, 물 사업자 적용 시나리오, 각자의 한계와 시사점, 출처.

3장

순서는 네 부분입니다. 먼저 Semantica가 무엇이고 어떻게 구성됐는지, 다음으로 제가 직접 빌드하고 실행해 본 결과, 그다음 Smart Data Models의 물 도메인 모델 40개를 구조부터 검증까지 살펴보고, 마지막으로 Palantir 온톨로지와의 개념 매핑과 적용 시나리오로 마무리합니다.

01Semantica — 정의

“The Open Source Palantir for AI Agents” — 임베딩이 아니라 의미를 다루는 인프라

  • 무엇 기업 데이터를 수집·추출해 컨텍스트 그래프 + 지식 그래프를 만들고, 그 위에서 그래프 분석·인과 추론을 수행하며 모든 결정의 계보(provenance)를 남기는 Python 라이브러리README: “Graph-Native Infrastructure for Context and Accountable AI Systems”
  • 핵심 주장 대부분의 에이전트는 유사도 점수(임베딩)로 움직인다 → 구조·관계·설명이 없다. Semantica는 LLM·벡터 스토어 아래에 놓이는 의미 계층으로, KG 구축·추론·계보는 LLM 없이 결정론적으로 동작
  • 누구를 위해 AI 플랫폼팀, Databricks·Snowflake 데이터 플랫폼팀, 컴플라이언스·감사, 규제 산업(금융·의료·법률·정부·국방), 자체 호스팅을 원하는 인프라 엔지니어
  • 현재 상태 v0.6.7 (2026-08-28, 직전 0.6.6은 08-20 — 주 단위 릴리스) · MIT · Python ≥ 3.8 · pip install semantica · 저장소 내 테스트 파일 346개 · 서브패키지 28개
getsemantica.ai 홈: Context Graph & Decision Intelligence Engine for AI Agents
getsemantica.ai · 2026-09-02 캡처
GitHub semantica-agi/semantica README
github.com/semantica-agi/semantica

Semantica는 스스로를 AI 에이전트를 위한 오픈소스 Palantir라고 부릅니다. 기업 데이터를 그래프로 구조화하고, 그 위에서 추론하고, 모든 결정의 계보를 남기는 Python 라이브러리입니다. 특징은 그래프 구축과 추론, 계보 기록이 LLM 없이도 결정론적으로 동작한다는 점입니다. 버전은 0.6.7, MIT 라이선스이고, 저장소를 열어 보면 테스트 파일이 346개, 서브패키지가 28개 있습니다.

01Semantica — What you get

README가 약속하는 8가지

1

Context Graphs

에이전트가 알고·결정하고·추론하는 모든 것을 질의 가능한 그래프로.

2

Decision Intelligence

결정을 1급 객체로: 추적·선례 검색·인과 연결.

3

Governance & Ontology

SHACL 제약, 충돌 감지, 컴플라이언스 규칙, OWL 생성, SKOS 어휘 편집기.

4

Full Auditability

모든 사실에 W3C PROV-O 계보, JSON·CSV·RDF로 감사 추적 내보내기.

5

Deterministic Reasoning

전방 연쇄·Rete·Datalog·SPARQL — 설명 가능한 추론 경로.

6

Knowledge Pipeline

다중 소스 수집 → 엔티티 인식 청킹 → NER·관계·이벤트 추출 → KG 구축, 중복 제거·충돌 처리.

7

Enterprise Connectors

Databricks(Unity Catalog·Delta Lake), Snowflake 네이티브 커넥터 — 테이블이 계보를 가진 그래프 노드로.

8

Polyglot Storage · Integrations

RDF(Oxigraph·Jena·RDF4J·Blazegraph)와 LPG(Neo4j·FalkorDB·AGE·Neptune), 벡터 스토어; LangChain·CrewAI·Agno·MCP·REST·CLI.

README가 약속하는 기능은 여덟 가지로 요약됩니다. 컨텍스트 그래프와 결정 지능이 중심이고, 그 주변에 온톨로지 거버넌스, 완전한 감사 추적, 결정론적 추론, 지식 파이프라인, 기업 데이터 플랫폼 커넥터, 그리고 여러 그래프 저장소와 에이전트 프레임워크 통합이 배치됩니다. Palantir 온톨로지 브리핑에서 본 데이터·로직·액션·보안 네 요소 중 데이터와 로직, 그리고 계보 쪽에 무게가 실려 있습니다.

01Semantica — Why

벡터 DB + RAG, LLM 메모리와 무엇이 다른가

README의 비교표: Vector DB + RAG / Plain LLM Memory / Semantica
README · Why Semantica (비교표 원문)
  • 회상 방식 임베딩 유사도·토큰 창 → 그래프 탐색 + 시맨틱 검색
  • 결정 이력·계보 저장 안 됨 → 결정은 질의 가능한 1급 객체, 사실마다 PROV-O 출처
  • 추론·정책 없음/블랙박스 → 전방 연쇄·Rete·Datalog·SPARQL, 규칙 엔진 + SHACL
  • 충돌·중복 조용히 덮어쓰기 → 감지·플래그·해소, 블로킹 + 시맨틱 중복 제거
  • 시간·멀티 에이전트 시점별 그래프 스냅샷(타임 트래블), 에이전트들이 공유하는 단일 지능 계층
POSITIONING기존 LLM·벡터 스토어·에이전트 프레임워크를 대체하지 않고 그 위에 얹는 레이어. 결정 기록·인과 추론·계보·거버넌스·감사를 추가한다는 것이 README의 요지.

README의 비교표를 그대로 가져왔습니다. 벡터 검색과 LLM 메모리는 결정 이력도, 출처도, 추론 경로도 남기지 않는 반면 Semantica는 이 모두를 그래프 구조의 속성으로 갖는다는 주장입니다. 중요한 포인트는 기존 스택을 대체하는 것이 아니라 그 위에 얹는 레이어라는 포지셔닝입니다.

01Semantica — Architecture

아키텍처 한 장 — 수집 → 추출 → 그래프 → 지능 → 저장 → 서비스

Sources semantica.ingest Files · PDF · DOCX · CSV Web · RSS · REST DB · PostgreSQL · MongoDB Snowflake · Databricks Kafka · Kinesis · Pulsar Git · Email · MCP · Parquet Prepare parse · normalize · split Ingestors (File/Web/DB…) DocumentParser · Code · Email Text · Entity · Date Normalizer entity_aware split relation · ontology_aware Extract → KG semantic_extract · conflicts · kg NER · RelationExtractor EventDetector · Triplets Conflict Detection Deduplication · Merge GraphBuilder · EntityResolver BiTemporalFact Intelligence Layer Knowledge Graph 위에서 OntologyOWL · SHACL · SKOS ReasoningRete · Datalog · SPARQL · Explain ProvenanceW3C PROV-O · 감사 추적 Context & DecisionsContextGraph · DecisionRecorder Policy · Causal ChainPolicyEngine · CausalChainAnalyzer LLM 없이 결정론적으로 동작 Storage graph_store · vector_store Neo4j · FalkorDB AGE · Neptune FAISS · Qdrant · … Outputs · Services export · visualization · explorer RDF Turtle · JSON-LD · OWL · SHACL Parquet · Cypher · GraphML · CSV REST ~78 ops · MCP 15 tools · CLI 89 cmds (실측) Knowledge Explorer (Vite + React) LangChain · CrewAI · Agno RDF · Triples triplet_store Oxigraph (내장) Jena · RDF4J Blazegraph ARCHITECTURE.md의 “Full Data Pipeline” mermaid 다이어그램을 재구성 · 서브패키지 28개 중 주요 모듈만 표기
GitHub ARCHITECTURE.md 페이지
github.com · ARCHITECTURE.md

저장소의 ARCHITECTURE.md는 소스 → 수집 → 파싱·정규화·분할 → 추출 → 충돌 감지 → 중복 제거 → KG 구축 → 지능 계층(온톨로지·추론·계보·컨텍스트) → 저장소 → 내보내기·시각화·서비스 순으로 전체 흐름을 그립니다.

결정 지능 수명주기: Record → Link → Query → Govern → Audit Export

아키텍처는 전형적인 지식 파이프라인 위에 지능 계층을 얹은 구조입니다. 파일, 웹, 데이터베이스, 스트림에서 수집한 데이터를 파싱하고 나눈 뒤 엔티티와 관계를 추출하고, 충돌과 중복을 정리해 지식 그래프를 만듭니다. 그 위에서 온톨로지, 추론, 계보, 결정 컨텍스트 네 모듈이 동작하고, 결과는 그래프 저장소와 벡터 저장소에 담겨 REST, MCP, CLI, Explorer로 나갑니다.

01Semantica — Context Graph & Decision Intelligence

결정을 1급 객체로 — 기록하고, 연결하고, 되짚고, 검사한다

  • Record record_decision() — 카테고리·시나리오·근거·결과·신뢰도를 하나의 노드로
  • Link add_causal_relationship()CAUSED · INFLUENCED · PRECEDENT_FOR 세 종류로 인과 연결코드 기준(context_graph.py); ARCHITECTURE.md의 “triggers · enables” 표기는 실제로는 허용되지 않음 — 검증 시 발견
  • Query trace_decision_chain() 인과 조상 전체, find_similar_decisions() 선례, analyze_decision_impact() 하류 영향
  • Govern check_decision_rules() — 정책 평가·컴플라이언스 게이트
  • Audit W3C PROV-O · CSV · JSON으로 규제기관 제출용 감사 추적 내보내기
비교Palantir의 Action이 “객체를 바꾸는 트랜잭션 + 검증 + 계보”라면, Semantica의 Decision은 “결정 자체를 노드로 저장해 인과·선례·정책을 그래프로 질의”하는 데 초점.
# README · Quick Start (원문)
from semantica.context import ContextGraph

graph = ContextGraph(advanced_analytics=True)

# Every agent decision becomes a queryable, auditable knowledge node
decision_id = graph.record_decision(
    category="vendor_selection",
    scenario="Choose cloud provider for HIPAA workload",
    reasoning="AWS offers BAA, mature HIPAA tooling, and existing team expertise",
    outcome="selected_aws",
    confidence=0.93,
)

# Ask "why did this happen?" and get a real, structured answer
chain     = graph.trace_decision_chain(decision_id)        # full causal ancestry
similar   = graph.find_similar_decisions("cloud vendor", max_results=5)  # precedents
impact    = graph.analyze_decision_impact(decision_id)     # downstream influence map
compliant = graph.check_decision_rules({"category": "vendor_selection"})  # policy gate

코드로 보면 개념이 분명해집니다. 결정 하나를 record_decision으로 기록하면 노드가 되고, 인과 관계로 다른 결정과 연결됩니다. 이후 왜 이 결정이 나왔는지 인과 조상을 되짚고, 비슷한 선례를 찾고, 하류 영향을 분석하고, 정책 규칙을 검사할 수 있습니다. 마지막에는 PROV-O 형식으로 감사 추적을 내보냅니다.

01Semantica — Governance & Provenance

온톨로지 거버넌스와 계보 — 표준(OWL · SHACL · SKOS · PROV-O)으로

docs.getsemantica.ai 문서 홈
docs.getsemantica.ai · 2026-09-02 캡처
  • OWL 생성·검증 OntologyGenerator·OntologyValidator — 데이터에서 온톨로지를 만들고 검증
  • SHACL 제약 그래프가 지켜야 할 형태(shape)를 선언 → 정책·컴플라이언스 규칙으로 집행
  • SKOS 어휘 통제 어휘 관리 + 비주얼 편집기 — 용어의 의미를 임베딩이 아닌 명시적 정의로
  • 충돌 감지 서로 모순되는 사실을 조용히 덮어쓰지 않고 감지·플래그·해소(ConflictDetector·SourceTracker)
  • 계보·시간 모든 사실에 W3C PROV-O 출처, BiTemporalFact·TemporalGraphQuery로 시점별 스냅샷
README의 표현“결정 계보와 감사 추적은 제품이 아니라 구조에서 따라 나오는 속성” — 규제기관의 “왜?”에 구조가 답한다는 주장.

거버넌스는 W3C 표준 위에 서 있습니다. OWL로 온톨로지를 만들고 검증하고, SHACL로 그래프가 지켜야 할 형태를 선언해 정책으로 집행하고, SKOS로 어휘를 관리합니다. 모순되는 사실은 덮어쓰지 않고 감지해서 플래그를 세우고, 모든 사실에는 PROV-O 출처가 붙습니다. 시점별 스냅샷도 지원해 특정 시각의 그래프를 되돌아볼 수 있습니다.

01Semantica — Engines & Integrations

추론 엔진 · 저장소 · 인터페이스 — 바꿔 끼울 수 있게

추론 엔진 (semantica.reasoning)

전방 연쇄(Forward chaining), Rete 네트워크, Datalog, SPARQL 추론기 + ExplanationGenerator. 모두 결정론적이며 추론 경로를 설명으로 내놓습니다 — LLM은 필요 없습니다.

ReteEngine · DatalogReasoner · SPARQLReasoner
🗄

저장소 (graph_store · triplet_store · vector_store)

LPG: Neo4j · FalkorDB · Apache AGE · Amazon Neptune(Cypher)  ·  RDF: 내장 Oxigraph · Blazegraph · Apache Jena · Eclipse RDF4J(SPARQL)  ·  Vector: FAISS · Qdrant · Weaviate · Milvus · Pinecone · PgVector (하이브리드 검색, RRF 융합)

코드 변경 없이 백엔드 교체
🔌

인터페이스 (mcp_server · cli · explorer)

REST API — 문서는 “100+”, 실측 라우트 데코레이터 87(OpenAPI 노출 약 78 operations) · MCP 서버 — 문서는 “10+”, 배포판 mcp_server 실측 15 tools + 3 resources · CLI — 문서는 “50+”, @…command 데코레이터 89 · LangChain · CrewAI · Agno 통합 · Knowledge Explorer 웹 UI.

문서 수치 vs 저장소 실측 (2026-09-02)

추론 엔진은 네 종류를 제공하고 모두 설명 가능한 결정론적 엔진입니다. 저장소는 라벨 프로퍼티 그래프와 RDF 트리플 스토어, 벡터 스토어를 코드 변경 없이 바꿔 끼울 수 있게 추상화했습니다. 인터페이스는 REST, MCP, CLI, 그리고 LangChain·CrewAI·Agno 통합까지 넓습니다. README가 말하는 CLI 50개 이상은 저장소에서 데코레이터 89개로 확인됩니다.

01Semantica — Knowledge Explorer

Knowledge Explorer — 그래프·결정·계보를 한 화면에서

직접 빌드한 Knowledge Explorer의 그래프 워크스페이스 화면
직접 빌드·렌더링 (explorer/ · npm run build · 2026-09-02)
Knowledge Explorer Decisions 화면
Decisions 뷰 · 직접 빌드
  • 화면 구성 좌측 사이드바 Knowledge Explorer · Analyze · Decisions · Enrich · Manage · Ontology Hub; README 데모는 632 nodes · 1,069 relationships. 위 화면은 제가 빌드한 번들에 저장소 테스트 픽스처(12 nodes · 7 edges)를 주입해 띄운 것(Python 백엔드 없이 요청 가로채기)
  • 기능 명령·노드·개념 검색, 거리 기반 탐색(“Distance reasoning”), 엔티티 도시에(계보·정합성 지표), 시간 축(Temporal evidence), 결정 컨텍스트
  • 구현 explorer/ — Vite 6 + React 19 + TypeScript; npm run buildsemantica/static으로 번들(2.2 MB)을 내보내 Python 패키지에 포함. Python 측 FastAPI 앱(semantica.explorer, 기본 포트 8000)이 /api·/ws로 그래프·결정·온톨로지 데이터를 서빙
  • 역할 Palantir의 Object Explorer·Vertex에 해당하는 탐색 UI — 단, 앱 빌더(Workshop)나 액션 실행 UI는 없음

Knowledge Explorer는 브라우저에서 그래프와 결정, 계보를 탐색하는 UI입니다. 데모 화면에는 632개 노드와 천여 개 관계가 로드되어 있고, 사이드바에 결정과 온톨로지 허브 메뉴가 있습니다. Palantir로 치면 Object Explorer와 Vertex를 합친 탐색 도구에 가깝고, 앱 빌더나 액션 실행 화면은 아직 없습니다.

02직접 해본 것 — Semantica

직접 해본 것 ① — 저장소 클론, Explorer 빌드, 코어 실행 조건 확인

  • 클론 git clone --depth 1 → 약 46 MB. 서브패키지 28개, 테스트 파일 346개, Dockerfile + docker-compose(.dev).yml, cookbook/(introduction · advanced · integrations), mcp/, explorer/
  • Explorer 프론트엔드 npm install(263 패키지) → npm run build 성공(12초, 2.2 MB 번들) → 비브라우저 테스트 105/105 통과 → 번들을 vite preview로 띄우고 테스트 픽스처를 주입해 화면 캡처(10장 참조). Playwright e2e만 미실행
  • 코어 라이브러리 pyproject.toml 필수 의존성에 torch · transformers · spaCy · sentence-transformers · opencv · librosa · faiss 등 포함 → 수 GB 설치. 이 PC에는 Python이 없어(Windows Store 스텁만) 코어는 코드·문서·쿡북으로 파악
  • 정석 실행 경로 Python 3.10+ 가상환경에서 pip install semanticasemantica doctor로 점검, 또는 제공된 Docker 이미지
# 실행 로그 (2026-09-02, Windows 11 · Node 24 · JDK 17)
$ git clone --depth 1 https://github.com/semantica-agi/semantica
   → 46 MB · 28 subpackages · 346 test files

$ cd explorer && npm install
   → added 263 packages

$ npm run build
   → EXIT 0 · tsc -b + vite build 12 s · 2,535 modules → semantica/static 2.2 MB (45 assets)

$ npm test
   → node --test 105/105 통과 (graph-store 1 · graph-workspace 81 · plugin-registry 7 · temporal guards 16)

$ npx vite preview --port 4173  +  puppeteer 요청 가로채기로 /api 픽스처 주입
   → 12 nodes · 7 edges 렌더 · 화면 4장 캡처 (Playwright e2e만 미실행)
   → 발견: /api 응답 형태가 어긋나면 Explore 뷰가 ErrorBoundary로 붕괴 (GraphWorkspace.tsx)

$ python --version
   → (없음) Windows Store 스텁 · 코어 미실행
$ grep -c "torch\|transformers\|spacy" pyproject.toml
   → 필수 의존성에 포함 → 수 GB 설치 필요

직접 해본 결과를 숨김 없이 정리합니다. 저장소는 얕은 클론으로 46메가바이트, 안에는 서브패키지 28개와 테스트 파일 346개가 있습니다. Explorer 프론트엔드는 Node로 빌드해 확인했습니다. 반면 코어 라이브러리는 torch와 transformers 같은 무거운 의존성이 필수여서, Python이 없는 이 환경에서는 코드와 문서, 쿡북으로 파악했습니다. 실제 도입 시에는 Docker 이미지나 별도 Python 환경이 정석입니다.

03Smart Data Models — 개요

Smart Data Models — 13개 도메인 · 82 subjects · 1,118개 공개 표준 데이터 모델

smartdatamodels.org 홈: 도메인 목록과 FIWARE·IUDX·OASC·TM Forum 로고
smartdatamodels.org · 2026-09-02 캡처
GitHub smart-data-models/SmartWater
github.com/smart-data-models/SmartWater
  • 누가 FIWARE Foundation · TM Forum · IUDX · OASC(Open & Agile Smart Cities)가 이끄는 글로벌 프로그램 — 오픈 라이선스(CC BY 4.0)
  • 무엇 도시·물·에너지·농식품 등 도메인별 공통 데이터 모델: JSON Schema + NGSI-LD @context + 예제 페이로드 + 자동 생성 스펙
  • 규모 공식 목록(official_list_data_models.json, 2026-09-02) 기준 13 도메인 · 82 subjects · 1,118 data models; Smart Water는 7 subjects · 40 models
  • 확장 경로 Incubated → Candidates(기존 표준·온톨로지를 SDM 형태로 번역) → 정식. 최근 UNTP 디지털 제품 패스포트, CityJSON(33), Gaia-X 온톨로지(165), ERA 철도(74) 후보 추가

Smart Data Models는 FIWARE 재단과 TM Forum, IUDX, OASC가 함께 이끄는 표준 데이터 모델 프로그램입니다. 오늘 기준 공식 목록에는 13개 도메인, 82개 subject, 1,118개 데이터 모델이 등록되어 있고, 각 모델은 JSON 스키마와 NGSI-LD 컨텍스트, 예제, 자동 생성 문서로 구성됩니다. 기존 표준을 번역해 들여오는 Candidates 저장소가 최근 활발합니다.

03Smart Data Models — 패키지 구조

모델 하나 = 폴더 하나 — 스키마·모델·예제·문서·내보내기가 한 세트

# dataModel.WaterQuality/WaterQualityObserved/  (저장소 실물)
WaterQualityObserved/
├─ schema.json          JSON Schema · $schemaVersion 0.0.6
│                          allOf → GSMA-Commons + Location-Commons
├─ model.yaml           속성·설명·태그 — 문서 자동 생성의 원본
├─ examples/            10개 변형
│   ├─ example.json               NGSI-v2 keyvalues
│   ├─ example.jsonld             NGSI-LD keyvalues (+@context)
│   ├─ example-normalized.json    NGSI-v2 normalized
│   ├─ example-normalized.jsonld  NGSI-LD normalized
│   └─ …geojson 변형
├─ doc/spec.md          자동 생성 스펙 (다국어 spec_*.md)
├─ schema.sql           관계형 DDL 내보내기
├─ schemaDTDL.json      Azure Digital Twins DTDL
├─ swagger.yaml         OpenAPI 정의
├─ ADOPTERS.yaml · notes.yaml · README.md
  • 공통 스키마 모든 모델이 common-schema.jsonGSMA-Commons(id · type · dateCreated · dateModified · source · name · description · owner …)와 Location-Commons(GeoJSON location · address · areaServed)를 상속
  • 하나의 원본, 여러 표현 같은 모델을 JSON Schema · SQL · DTDL · OpenAPI로 내보내 이기종 시스템이 같은 어휘를 씀
  • 예제 8~10종 v2/LD × keyvalues/normalized 조합 — 컨텍스트 브로커(Orion-LD 등)에 그대로 POST 가능
  • 거버넌스 $schemaVersion 버전 관리, ADOPTERS(채택 기관), 기여 매뉴얼·PR 기반 변경

모델 하나는 폴더 하나입니다. 저장소에서 WaterQualityObserved 폴더를 열어 보면 JSON 스키마, 모델 정의 YAML, 열 가지 예제 변형, 자동 생성 스펙 문서, 그리고 SQL과 DTDL, OpenAPI 내보내기가 한 세트로 들어 있습니다. 모든 모델은 공통 스키마의 GSMA-Commons와 Location-Commons를 상속해 id, type, 위치 같은 기본 속성을 통일합니다.

03Smart Data Models — Smart Water

Smart Water — 7개 subject, 40개 엔티티 (서브모듈 저장소 7개를 모두 받아 집계)

Subject (저장소)엔티티대표 엔티티 · 관계
WaterQuality3WaterQualityObserved(61 props) · WaterQualityPredicted · SludgeQualityObserved → refPointOfInterest 관계
WaterDistribution1WaterDistributionNetwork(21) — 도시 상수도망 요약
WaterConsumption1WaterConsumptionObserved(13) — 스마트 미터 소비·누수 알람·유량
WasteWater7WasteWaterPlant · WasteWaterTank · Blower · OffGasStack · WaterProcess … → startsAt / endsAt
OpenChannelManagement10OpenChannel · Junction · SluiceGate · Spillway · RegulationStructure … → upstreamNode / downstreamNode
WaterDistributionManagementEPANET11Junction · Pipe · Pump · Tank · Valve · Reservoir · Curve · Pattern · WaterNetwork · SimulationScenario(45) · Result
SatelliteImagery7EOProduct · EOSatelliteImagery · EOInstrument · EOAnalysis … → observedBy / isAnalysisOf
GitHub dataModel.WaterQuality 저장소
github.com/smart-data-models/dataModel.WaterQuality

Smart Water 도메인은 SmartWater 저장소가 7개 서브모듈을 가리키는 구조라, 실제 모델은 7개 저장소를 따로 받아야 합니다. 모두 받아 집계하면 40개 엔티티입니다. 수질 관측, 상수도망, 소비량, 하수처리, 개수로 관리, EPANET 관망 시뮬레이션, 위성 영상까지 물 관리의 데이터 계층을 넓게 덮습니다.

03Smart Data Models — 모델 해부

WaterQualityObserved — 수질 관측 한 건을 61개 속성으로

  • 정의 “강·호수·바다 등 특정 수체 단면의 수질 파라미터” · $schemaVersion 0.0.6 · 필수 id · type · dateObserved · location
  • 물리·화학 temperature · conductivity · turbidity · salinity · pH · orp · O2 · bod · cod · tss · tds · alkalinity · flow
  • 영양염·이온 NH4 · NH3 · NO3 · NO2 · PO4 · Cl- · sulphate · fluoride · N-TOT · P-TOT · TKN
  • 중금속·기타 As · Cd · Cr(III/VI) · Cu · Fe · Hg · Ni · Pb · Zn … · 계면활성제 4종 · THC · escherichiaColi · enterococci · Chla(클로로필)
  • 확장·관계 measurand(임의 측정항목 문자열 배열), componentAnalyzed/Name/concentration, 관계 refPointOfInterest → 관측 지점 엔티티
# examples/example.json — NGSI-v2 keyvalues (세비야 D1 지점, 발췌)
{
  "id": "waterqualityobserved:Sevilla:D1",
  "type": "WaterQualityObserved",
  "dateObserved": "2017-01-31T06:45:00Z",
  "location": { "type": "Point", "coordinates": [ -5.993307, 37.362882 ] },
  "measurand": [ "NO3, 0.01, M1, Concentration of Nitrates" ],
  "temperature": 24.4,
  "conductivity": 0.005,
  "pH": 7.4,
  "NO3": 0.01,
  "flow": 127.53,
  "alkalinity": 0.1,
  "sulphate": 143.3,
  "Pb": 0.0,  "Hg": 0.0,  "Cd": 0.001,
  "total-surfactants": 0.3,
  "refPointOfInterest": "…:PointOfInterest:Sevilla:D1"
}

대표 모델인 WaterQualityObserved를 해부해 보면, 수질 관측 한 건을 61개 속성으로 표현합니다. 필수는 아이디, 타입, 관측 시각, 위치 넷뿐이고, 나머지는 온도, 전기전도도, 산도부터 질산염, 중금속, 대장균까지 선택 속성입니다. 정의되지 않은 측정 항목은 measurand 배열로 넣을 수 있고, 관측 지점은 관계로 연결됩니다.

03Smart Data Models — NGSI-LD

같은 데이터, 두 표현 — keyvaluesnormalized(Property · Relationship · GeoProperty)

# example.jsonld — keyvalues (사람이 읽기 쉬운 형태)
{
  "id": "urn:ngsi-ld:WaterQualityObserved:…:Sevilla:D1",
  "type": "WaterQualityObserved",
  "dateObserved": "2017-01-31T06:45:00Z",
  "location": { "type": "Point", "coordinates": [ -5.99, 37.36 ] },
  "pH": 7.4,
  "temperature": 24.4,
  "refPointOfInterest": "urn:ngsi-ld:PointOfInterest:…",
  "@context": [
    "https://smartdatamodels.org/context.jsonld"
  ]
}
# example-normalized.jsonld — NGSI-LD normalized (브로커 저장 형태)
{
  "id": "urn:ngsi-ld:WaterQualityObserved:…:Sevilla:D1",
  "type": "WaterQualityObserved",
  "dateObserved": { "type": "Property",
    "value": { "@type": "DateTime", "@value": "2017-01-31T06:45:00Z" } },
  "location": { "type": "GeoProperty",
    "value": { "type": "Point", "coordinates": [ -5.99, 37.36 ] } },
  "pH": { "type": "Property", "value": 7.4 },
  "temperature": { "type": "Property", "value": 24.4 },
  "refPointOfInterest": { "type": "Relationship",
    "object": "urn:ngsi-ld:PointOfInterest:…" },
  "@context": [ "https://smartdatamodels.org/context.jsonld" ]
}

Property · Relationship · GeoProperty

속성 값은 Property, 다른 엔티티를 가리키면 Relationship(object에 URN), 위치는 GeoProperty. 단위·관측시각 같은 메타데이터를 속성 안에 중첩할 수 있습니다.

@context = 어휘의 URL

smartdatamodels.org/context.jsonld가 각 속성명을 전역 URI로 해석해 줍니다. Palantir의 Property가 Ontology Manager에 정의되듯, 여기서는 JSON-LD 컨텍스트가 의미를 고정합니다.

Context Broker

이 normalized 문서를 Orion-LD(FIWARE) 같은 NGSI-LD 컨텍스트 브로커에 POST하면 저장·구독·질의가 되고, Smart Data Models가 그 공용 스키마 역할을 합니다.

같은 관측 데이터를 두 가지로 표현합니다. 왼쪽 keyvalues는 사람이 읽기 쉬운 평평한 형태, 오른쪽 normalized는 속성마다 Property, Relationship, GeoProperty 타입을 명시한 브로커 저장 형태입니다. 맨 아래 컨텍스트 URL이 각 속성명의 의미를 전역적으로 고정합니다. Palantir에서 Ontology Manager가 속성을 정의하는 역할을 여기서는 JSON-LD 컨텍스트가 맡는 셈입니다.

03Smart Data Models — EPANET

EPANET 관망 모델 — 수리 시뮬레이션 입력을 11개 엔티티

GitHub dataModel.WaterDistributionManagementEPANET 저장소
github.com/smart-data-models/dataModel.WaterDistributionManagementEPANET
  • 노드 Junction(12 props) · Reservoir(14, headPattern · hasInlet/hasOutlet) · Tank(22, volumeCurve)
  • 링크 Pipe(16) · Pump(18, headCurve · pumpPattern · efficCurve · energyPattern) · Valve(16, valveCurve) — 모두 startsAt / endsAt으로 노드에 연결
  • 보조 데이터 Curve(펌프·밸브·체적 곡선) · Pattern(시간대별 수요 패턴)
  • 시나리오 WaterNetwork(isComposedOf · hasSubNetwork) → SimulationScenario(45 props, hasInputNetwork · hasSimulationResult) → SimulationResult
  • 의미 EPANET .inp의 섹션(JUNCTIONS · PIPES · PUMPS · TANKS · PATTERNS · CURVES …)을 NGSI-LD 엔티티와 관계로 옮긴 것 — 관망을 그래프로 저장·질의 가능
연결 고리관망은 본질적으로 노드-링크 그래프. 이 모델을 Semantica의 그래프 저장소에 넣으면 “이 밸브를 닫으면 어느 수용가가 영향받나” 같은 경로 질의가 자연스럽습니다.

EPANET 서브젯은 미국 EPA의 관망 수리 시뮬레이터 입력을 그대로 엔티티로 옮긴 것입니다. 접합점, 저수지, 탱크가 노드이고 관, 펌프, 밸브가 링크로서 시작 노드와 끝 노드 관계를 갖습니다. 시간대별 수요 패턴과 곡선, 그리고 시나리오와 결과 엔티티까지 있어 관망 전체를 그래프로 저장하고 질의할 수 있습니다.

02직접 해본 것 — Smart Water 검증

직접 해본 것 ② — 40개 모델의 예제를 스키마로 검증: 40 / 40 통과

40 / 40example.json (NGSI-v2 keyvalues) → schema.json 유효
40 / 40example.jsonld (NGSI-LD keyvalues + @context) 유효
7원격 $ref 스키마 — common-schema · GeoJSON Point/MultiPoint · EPANET/WasteWater 공통
1.4 sNode 24 + ajv 8, 힙 40 MB — 단일 인스턴스로 40개 컴파일
# validate2.js — 핵심 (Node 24, ajv + ajv-formats)
const refs = collectRemoteRefs(allSchemas)   // $ref 루트 URL 7개
await fetchAll(refs)                          // 한 번만 가져와 캐시
const ajv = new Ajv({ strict: false }); addFormats(ajv)
for (const [url, s] of remote) ajv.addSchema(strip(s), url)
for (const e of entities) {                  // 40개
  const validate = ajv.compile(strip(e.schema))
  validate(e.example_json)   // → true ×40
  validate(e.example_jsonld) // → true ×40
}
  • 첫 시도 실패의 교훈 엔티티마다 새 Ajv 인스턴스 + 비동기 loadSchema로 원격 $ref를 반복 로딩 → 힙 4 GB 초과(OOM). 원격 스키마를 한 번만 받아 단일 인스턴스에 등록하니 1.4초
  • 메타스키마 GeoJSON 스키마는 draft-07 선언 → $schema를 제거하고 draft-07 Ajv로 컴파일
  • normalized 예제 스키마는 keyvalues 형태를 기술하므로 NGSI-LD normalized는 구조 점검(속성마다 type + value/object) — 40개 중 34개 완전 일치, 나머지는 createdAt/modifiedAt 같은 시스템 속성이 평문(NGSI-LD 규격상 허용)
  • 의미 표준 모델의 예제와 스키마가 서로 맞는다는 것 = 이 모델로 데이터를 만들면 브로커·검증기가 그대로 받는다는 뜻

두 번째로 직접 해본 것은 스키마 검증입니다. 40개 모델의 예제 페이로드를 각 JSON 스키마로 검증했고, 키밸류 형태와 JSON-LD 형태 모두 40개 전부 통과했습니다. 첫 시도는 원격 스키마를 반복해서 불러오다 메모리를 다 써 실패했는데, 원격 스키마 7개를 한 번만 받아 단일 인스턴스에 등록하자 1.4초에 끝났습니다. 표준 모델의 예제와 스키마가 서로 맞는다는 확인입니다.

04셋의 관계 — 개념 매핑

Palantir Ontology · Semantica · Smart Data Models — 같은 층, 다른 층

관점Palantir Foundry OntologySemantica (OSS)Smart Data Models (NGSI-LD)
타입 정의Object type · Property · Interface (Ontology Manager)OWL 클래스 · SHACL shape · SKOS 어휘 (OntologyGenerator)JSON Schema + @context (schema.json · model.yaml)
인스턴스 · 관계Object · Link type (search around)KG 노드 · 엣지 (RDF 트리플 / LPG), 시간축 사실Entity · Relationship(object URN) · GeoProperty
변경 · 액션Action type — 검증·알림·writeback 포함 트랜잭션Decision 객체 기록(record_decision) — 원천 시스템 writeback은 없음없음 — 브로커 CRUD·구독(NGSI-LD API)이 대신
로직 · 추론Function(TS/Python) · AIP Logic(LLM)Rete · Datalog · SPARQL · 전방 연쇄 (결정론적) + PolicyEngine없음 (스키마만)
계보 · 감사Decision lineage · 객체 편집 이력W3C PROV-O 사실 단위 계보 · 감사 내보내기dateCreated/Modified · source 속성 수준
보안 · 권한객체·속성 단위 정책, 마킹, 목적 기반정책 엔진·SHACL 규칙 (플랫폼 권한은 배포 환경 몫)해당 없음 (브로커/플랫폼 몫)
앱 · 시각화Workshop · Object Explorer · Quiver · VertexKnowledge Explorer(탐색) · KGVisualizer없음 (FIWARE 생태계 도구 활용)
표준성 · 라이선스독자 모델 · 상용 SaaS/온프렘W3C 표준(RDF·OWL·SHACL·SKOS·PROV-O) · MITETSI NGSI-LD · JSON Schema · CC BY 4.0

역할로 보면 — Smart Data Models데이터 계층의 공통 어휘, Semantica그래프·추론·계보의 의사결정 계층(오픈소스), Palantir앱·액션·보안까지 묶은 통합 상용 플랫폼. 셋은 경쟁보다 층이 다른 구성 요소에 가깝습니다.

이제 셋을 한 표에 놓습니다. 타입 정의는 Palantir가 Ontology Manager, Semantica가 OWL과 SHACL, Smart Data Models가 JSON 스키마와 컨텍스트로 합니다. 큰 차이는 액션과 앱입니다. Palantir만 원천 시스템에 되쓰는 액션과 앱 빌더를 갖고 있고, Semantica는 결정을 기록하고 추론하는 데, Smart Data Models는 어휘를 통일하는 데 집중합니다. 경쟁 관계보다 층이 다른 구성 요소로 보는 것이 맞습니다.

04셋의 관계 — 시사점 · 출처

물 사업자에 적용하면 — 표준으로 담고, 그래프로 잇고, 결정을 남긴다

  • ① 표준화 수질 센서 → WaterQualityObserved, 관망 도면(EPANET .inp) → Junction·Pipe·Pump·Tank, 검침 → WaterConsumptionObserved로 매핑
  • ② 컨텍스트 브로커 Orion-LD 등에 NGSI-LD로 적재 — 공공·타 기관과 같은 어휘로 교환, 스키마로 자동 검증(오늘 40/40)
  • ③ 그래프 계층 Semantica로 관망·관측·민원 문서를 KG로 통합, EPANET 관계(startsAt/endsAt)를 그대로 그래프 경로 질의에 사용
  • ④ 결정 기록 밸브 조작·수질 경보·정비 결정을 record_decision으로 남겨 선례 검색·인과 추적·PROV-O 감사
  • ⑤ 앱·액션 현업 화면·writeback·권한은 자체 구축 또는 상용 플랫폼(Palantir 등) 몫 — 여기가 오픈소스 스택의 빈 자리

SEMANTICA

  • github.com/semantica-agi/semantica — README · ARCHITECTURE.md · CHANGELOG (v0.6.7, 2026-08-28) · pyproject.toml
  • getsemantica.ai · docs.getsemantica.ai · 데모 영상(README 링크)
  • 실측: 서브패키지 28 · 테스트 파일 346 · CLI 데코레이터 89 · REST 라우트 87(OpenAPI 약 78) · MCP tools 15 (2026-09-02 얕은 클론, HEAD 8e7aaee)

SMART DATA MODELS

  • smartdatamodels.org · github.com/smart-data-models/SmartWater (서브모듈 7개)
  • dataModel.WaterQuality · WaterDistribution · WaterConsumption · WasteWater · OpenChannelManagement · WaterDistributionManagementEPANET · SatelliteImagery
  • official_list_data_models.json (2026-09-02): 13 domains · 82 subjects · 1,118 models
  • 검증: Node 24 · ajv 8 · ajv-formats — 원격 스키마 7개, 40/40 · 40/40, 1.4 s

※ 공개 자료 기반 기술 소개용 자료이며 각 프로젝트의 공식 자료가 아닙니다. 화면 캡처는 2026-09-02 헤드리스 Chrome 1440×900.

한계도 함께Semantica는 0.6.x 초기 단계·Python 전용·의존성 무거움·writeback 없음 / SDM은 스키마일 뿐 브로커·앱이 필요 / Palantir는 비용과 종속. 공공 상호운용성은 SDM, 설명 가능한 AI 파일럿은 Semantica, 전사 운영 플랫폼은 상용이 현실적 조합.

마지막으로 물 사업자에 적용한다면 이런 순서입니다. 센서와 관망, 검침 데이터를 Smart Data Models로 표준화해 컨텍스트 브로커에 담고, Semantica로 그래프로 잇고 결정을 기록합니다. 현업 화면과 원천 시스템 되쓰기, 권한은 오픈소스 스택의 빈 자리라 자체 구축이나 상용 플랫폼이 필요합니다. 공공 상호운용성은 표준 모델로, 설명 가능한 AI 파일럿은 Semantica로, 전사 운영은 상용 플랫폼으로 조합하는 것이 현실적입니다. 출처는 화면의 링크에 정리했습니다. 감사합니다.

NARRATION

Open Source · Open Standards · 기술 브리핑

Semantica × Smart Data Models

20장 · 약 5분 · 자동 재생. 두 오픈 프로젝트를 직접 받아 빌드·검증하며 정리한 기술 브리핑입니다.
하단 자막이 내레이션이며, 화면을 클릭하면 확대됩니다.

모바일에서는 좌우로 밀어 슬라이드를 넘기고, ▶ 버튼을 누르면 자동 재생됩니다.

Space재생/일시정지이동I목차C자막F전체화면Esc닫기
오프닝
1 / 20