Skip to main content
Glama
nrwoodpsh
by nrwoodpsh

py-ontology-server-starter

Ontology knowledge server starter — FastAPI semantic layer + Apache Jena Fuseki triplestore, consumed via both REST and MCP.

Declare Palantir-style object-centric ontologies (Object Type / Property / Link Type) in code, and handle storage and querying with W3C standards (RDF / SPARQL 1.1). Since the application code uses only the SPARQL standard, you can swap the store for GraphDB or another triplestore without changing the app.

┌─ 소비자 ──────────────────────────────┐
│  AI 에이전트(MCP)      앱·사람(REST)   │
└──────────┬───────────────┬───────────┘
           │               │
   mcp_server.py       api/rest.py      ← 이중 어댑터
           └───────┬───────┘
            ontology/ + store/           ← 코어: 온톨로지 정의 + SPARQL 클라이언트
                   │
        Apache Jena Fuseki (docker)      ← 저장·SPARQL·추론
                   ▲
             ingest/ 파이프라인           ← 지식원 → RDF 변환·적재

Quick Start

# 1. 트리플스토어 기동
docker compose up -d fuseki          # http://localhost:3030 (admin / admin)

# 2. 앱 설치
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# 3. 샘플 데이터 적재 (CSV → RDF → Fuseki)
python -m ontology_server.ingest.example_csv data/sample/organizations.csv \
  --object-type organization --push

# 4. REST 서버 기동
uvicorn ontology_server.main:app --reload
# → http://localhost:8000/docs
curl localhost:8000/objects/organization

Related MCP server: mcp-ubergraph-query

MCP Adapter (for AI agents)

Runs over the stdio transport. In a Claude Code project's .mcp.json:

{
  "mcpServers": {
    "ontology": {
      "command": "/절대경로/.venv/bin/python",
      "args": ["-m", "ontology_server.mcp_server"]
    }
  }
}

Provided tools: list_object_types (schema discovery) · search_objects (instance lookup by type) · sparql_query (read-only direct query).

Adapting to Your Domain

  1. Replace src/ontology_server/ontology/sample.py with your domain ontology — change only the Object Type / Link Type declarations and the REST, MCP, and query builders follow along.

  2. Add per-source ingestion modules under src/ontology_server/ingest/ (see example_csv.py).

  3. If external integration or standards compliance is required, settle on a real URI scheme for namespaces and maintain an OWL schema document alongside.

Tests

pytest                       # 단위 테스트 (Fuseki 불필요)
RUN_INTEGRATION=1 pytest     # Fuseki 기동 상태에서 통합 테스트 포함

Structure

Path

Role

ontology/model.py

Object/Link Type definition framework (Palantir-style)

ontology/sample.py

Sample ontology — the file you replace in your project

store/sparql.py

SPARQL 1.1 client (the point where you can swap the store)

api/rest.py

REST adapter

mcp_server.py

MCP adapter

ingest/

Knowledge source → RDF ingestion pipeline

docker-compose.yml

Starts Fuseki

License

MIT

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol server that provides read-only access to Ontotext GraphDB, enabling LLMs to explore RDF graphs and execute SPARQL queries.
    2
    10 npm
    16
    GPL 3.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query the Ubergraph biomedical ontology SPARQL endpoint with tools for custom SPARQL queries, term lookup, search, and hierarchy traversal.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with ontologies through the Ontology Access Kit, providing ontology querying and management capabilities.
    5
    MIT