← 返回 Skills 市场
oswalpalash

ontology

作者 oswalpalash · GitHub ↗ · v1.0.4 · MIT-0
cross-platform ⚠ suspicious
175902
总下载
584
收藏
1231
当前安装
4
版本数
在 OpenClaw 中安装
/install ontology
功能描述
Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linkin...
使用说明 (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.

安全使用建议
Review this skill before installing if you do not want persistent shared agent memory. Avoid storing secrets or highly sensitive personal data, and confirm whether your environment provides access controls and a true purge/compaction process for `memory/ontology/graph.jsonl`.
功能分析
Type: OpenClaw Skill Name: ontology Version: 1.0.4 The 'ontology' skill provides a robust framework for managing a local knowledge graph (entities and relations) stored in JSONL format. The implementation in `scripts/ontology.py` includes proactive security measures such as a `resolve_safe_path` function to prevent path traversal and schema constraints in `references/schema.md` that explicitly forbid storing raw secrets like passwords or tokens. The logic is transparent, well-documented, and strictly focused on its stated purpose of structured memory management.
能力评估
Purpose & Capability
The ontology capability is coherent with the stated purpose of structured agent memory and graph-based entity CRUD, but it is designed to store potentially sensitive people, message, document, account, device, and credential-reference metadata.
Instruction Scope
The instructions explicitly support cross-skill shared state and read/write access to ontology objects, but do not define access boundaries, approval requirements, retention limits, or per-skill scoping for sensitive records.
Install Mechanism
There is no install spec, package dependency, remote script, or required credential. The included Python script uses local file operations for the ontology graph.
Credentials
The default storage path is local and purpose-aligned, and no network behavior is shown. Users should still treat the local graph as a sensitive data store.
Persistence & Privilege
The graph is append-only persistent memory, and the visible delete implementation appends a delete record rather than removing earlier create/update records from disk.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install ontology
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /ontology 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.4
- Initial release of the ontology skill for typed, constraint-validated knowledge graphs. - Supports entity and relation CRUD, property and relation validation, and graph traversal for common types such as Person, Project, Task, Event, and Document. - Provides schema-driven constraints including required properties, enums, forbidden fields, cardinality, and acyclicity. - Enables multi-step planning and shared memory across skills via structured ontology objects. - Includes CLI tooling for creating, querying, linking, and validating graph data using JSONL storage.
v0.1.2
No functional or documentation changes were detected in this release. - Version bumped to 0.1.2 with no file or content changes.
v0.1.1
- Added an "Append-Only Rule" to encourage appending or merging ontology data and schema changes rather than overwriting files, preserving history and prior definitions. - Updated quick start instructions to use `schema-append` for safely modifying schemas instead of direct file editing. - Expanded the documentation to clarify that runtime commands and validations operate on local files, create necessary directories, and are within the skill's supported behaviors. - Clarified the scope of validation: property, enum, forbidden checks, relation validation, acyclicity, and specific Event constraints are supported; higher-level constraints remain documentation unless implemented.
v0.1.0
Initial release: typed knowledge graph for agent memory, entity CRUD, relations, constraints, skill interop
元数据
Slug ontology
版本 1.0.4
许可证 MIT-0
累计安装 1277
当前安装数 1231
历史版本数 4

💬 留言讨论