← Back to Skills Marketplace
jg20260212

ontology (bidirectional default)

by JG20260212 · GitHub ↗ · v1.1.0 · MIT-0
cross-platform ✓ Security Clean
45
Downloads
1
Stars
1
Active Installs
1
Versions
Install in OpenClaw
/install ontology-bidir
Description
Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linkin...
README (SKILL.md)

Ontology

A typed vocabulary + constraint system for representing knowledge as a verifiable graph.

Core Concept

Everything is an entity with a type, properties, and relations to other entities. Every mutation is validated against type constraints before committing.

Entity: { id, type, properties, relations, created, updated }
Relation: { from_id, relation_type, to_id, properties }

When to Use

Trigger Action
"Remember that..." Create/update entity
"What do I know about X?" Query graph
"Link X to Y" Create relation
"Show all tasks for project Z" Graph traversal
"What depends on X?" Dependency query
Planning multi-step work Model as graph transformations
Skill needs shared state Read/write ontology objects

Core Types

# Agents & People
Person: { name, email?, phone?, notes? }
Organization: { name, type?, members[] }

# Work
Project: { name, status, goals[], owner? }
Task: { title, status, due?, priority?, assignee?, blockers[] }
Goal: { description, target_date?, metrics[] }

# Time & Place
Event: { title, start, end?, location?, attendees[], recurrence? }
Location: { name, address?, coordinates? }

# Information
Document: { title, path?, url?, summary? }
Message: { content, sender, recipients[], thread? }
Thread: { subject, participants[], messages[] }
Note: { content, tags[], refs[] }

# Resources
Account: { service, username, credential_ref? }
Device: { name, type, identifiers[] }
Credential: { service, secret_ref }  # Never store secrets directly

# Meta
Action: { type, target, timestamp, outcome? }
Policy: { scope, rule, enforcement }

Storage

Default: memory/ontology/graph.jsonl

{"op":"create","entity":{"id":"p_001","type":"Person","properties":{"name":"Alice"}}}
{"op":"create","entity":{"id":"proj_001","type":"Project","properties":{"name":"Website Redesign","status":"active"}}}
{"op":"relate","from":"proj_001","rel":"has_owner","to":"p_001"}

Query via scripts or direct file ops. For complex graphs, migrate to SQLite.

Append-Only Rule

When working with existing ontology data or schema, append/merge changes instead of overwriting files. This preserves history and avoids clobbering prior definitions.

Workflows

Create Entity

python3 scripts/ontology.py create --type Person --props '{"name":"Alice","email":"[email protected]"}'

Query

python3 scripts/ontology.py query --type Task --where '{"status":"open"}'
python3 scripts/ontology.py get --id task_001
python3 scripts/ontology.py related --id proj_001 --rel has_task

Link Entities

python3 scripts/ontology.py relate --from proj_001 --rel has_task --to task_001

Validate

python3 scripts/ontology.py validate  # Check all constraints

Constraints

Define in memory/ontology/schema.yaml:

types:
  Task:
    required: [title, status]
    status_enum: [open, in_progress, blocked, done]
  
  Event:
    required: [title, start]
    validate: "end >= start if end exists"

  Credential:
    required: [service, secret_ref]
    forbidden_properties: [password, secret, token]  # Force indirection

relations:
  has_owner:
    from_types: [Project, Task]
    to_types: [Person]
    cardinality: many_to_one
  
  blocks:
    from_types: [Task]
    to_types: [Task]
    acyclic: true  # No circular dependencies

Skill Contract

Skills that use ontology should declare:

# In SKILL.md frontmatter or header
ontology:
  reads: [Task, Project, Person]
  writes: [Task, Action]
  preconditions:
    - "Task.assignee must exist"
  postconditions:
    - "Created Task has status=open"

Planning as Graph Transformation

Model multi-step plans as a sequence of graph operations:

Plan: "Schedule team meeting and create follow-up tasks"

1. CREATE Event { title: "Team Sync", attendees: [p_001, p_002] }
2. RELATE Event -> has_project -> proj_001
3. CREATE Task { title: "Prepare agenda", assignee: p_001 }
4. RELATE Task -> for_event -> event_001
5. CREATE Task { title: "Send summary", assignee: p_001, blockers: [task_001] }

Each step is validated before execution. Rollback on constraint violation.

Integration Patterns

With Causal Inference

Log ontology mutations as causal actions:

# When creating/updating entities, also log to causal action log
action = {
    "action": "create_entity",
    "domain": "ontology", 
    "context": {"type": "Task", "project": "proj_001"},
    "outcome": "created"
}

Cross-Skill Communication

# Email skill creates commitment
commitment = ontology.create("Commitment", {
    "source_message": msg_id,
    "description": "Send report by Friday",
    "due": "2026-01-31"
})

# Task skill picks it up
tasks = ontology.query("Commitment", {"status": "pending"})
for c in tasks:
    ontology.create("Task", {
        "title": c.description,
        "due": c.due,
        "source": c.id
    })

Quick Start

# Initialize ontology storage
mkdir -p memory/ontology
touch memory/ontology/graph.jsonl

# Create schema (optional but recommended)
python3 scripts/ontology.py schema-append --data '{
  "types": {
    "Task": { "required": ["title", "status"] },
    "Project": { "required": ["name"] },
    "Person": { "required": ["name"] }
  }
}'

# Start using
python3 scripts/ontology.py create --type Person --props '{"name":"Alice"}'
python3 scripts/ontology.py list --type Person

References

  • references/schema.md — Full type definitions and constraint patterns
  • references/queries.md — Query language and traversal examples

Instruction Scope

Runtime instructions operate on local files (memory/ontology/graph.jsonl and memory/ontology/schema.yaml) and provide CLI usage for create/query/relate/validate; this is within scope. The skill reads/writes workspace files and will create the memory/ontology directory when used. Validation includes property/enum/forbidden checks, relation type/cardinality validation, acyclicity for relations marked acyclic: true, and Event end >= start checks; other higher-level constraints may still be documentation-only unless implemented in code.

Usage Guidance
Install only if you want a workspace-local persistent memory graph. Avoid putting actual secrets in it, review entries before storing sensitive personal or business information, and remember that deletes remove entities from active retrieval but do not necessarily erase their historical JSONL records.
Capability Tags
requires-sensitive-credentials
Capability Assessment
Purpose & Capability
The artifact consistently describes creating, querying, relating, validating, and sharing typed ontology entities, and the script implements those local graph operations without network access, command execution, or credential harvesting.
Instruction Scope
The triggers are broad enough to activate on ordinary memory-related phrasing, but the documented behavior remains tied to ontology CRUD, relation queries, validation, and workspace-local files.
Install Mechanism
The package contains documentation, references, metadata, and one Python CLI script; no installer, startup hook, background worker, or automatic execution path was found.
Credentials
Reads and writes are limited to user-selected graph and schema files under the current workspace, with path traversal checks; this is proportionate for structured local agent memory.
Persistence & Privilege
The skill creates persistent append-only memory under memory/ontology and can append delete records or merge schema files, so users should understand that history may remain in graph.jsonl even after an entity is removed from active state.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install ontology-bidir
  3. After installation, invoke the skill by name or use /ontology-bidir
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.1.0
v1.1.0 — 2026-06-15 Fork of oswalpalash/ontology 1.0.4 (License: MIT-0) UX 改进: related 命令的 --dir 默认值从 outgoing 改为 both - 新默认下,只跑 'related --id X' 就能看到 X 的完整关系网(出边+入边),不再需要显式 --dir both - 向后兼容: --dir outgoing/incoming/both 三个值都还在,已有脚本不会破 - get_related() 函数加了 Args docstring 贡献: 小胖叮 (OpenClaw) / @JG20260212
Metadata
Slug ontology-bidir
Version 1.1.0
License MIT-0
All-time Installs 1
Active Installs 1
Total Versions 1
Frequently Asked Questions

What is ontology (bidirectional default)?

Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linkin... It is an AI Agent Skill for Claude Code / OpenClaw, with 45 downloads so far.

How do I install ontology (bidirectional default)?

Run "/install ontology-bidir" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is ontology (bidirectional default) free?

Yes, ontology (bidirectional default) is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does ontology (bidirectional default) support?

ontology (bidirectional default) is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created ontology (bidirectional default)?

It is built and maintained by JG20260212 (@jg20260212); the current version is v1.1.0.

💬 Comments