Ontology

v1.0.0

Typed knowledge graph for structured agent memory and composable skills. Use when creating/querying entities (Person, Project, Task, Event, Document), linkin...

0· 162·0 current·0 all-time

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for onlyloveher/ont-v1.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Ontology" (onlyloveher/ont-v1) from ClawHub.
Skill page: https://clawhub.ai/onlyloveher/ont-v1
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install ont-v1

ClawHub CLI

Package manager switcher

npx clawhub@latest install ont-v1
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description (typed ontology, entity CRUD, graph queries) match the included Python script and SKILL.md workflows. Minor incoherences: skill.yaml advertises Node compatibility and a default ONTOLOGY_PATH of ~/clawd/ontology while the SKILL.md and the Python script default to memory/ontology/graph.jsonl; skill metadata/homepage fields also differ across files. These are likely packaging/documentation issues rather than functional mismatches, but you should confirm which path the agent will actually use.
Instruction Scope
SKILL.md instructs only local operations (create/query/relate/validate) against a local graph file and optional schema. The provided Python CLI implements append-only graph operations and path-resolution that restricts explicit user paths to the workspace root. There are no instructions to read unrelated system files or to send data to external endpoints in the visible code/instructions.
Install Mechanism
No install spec; the skill is instruction-only plus an included Python script. Nothing in the bundle downloads or executes external installers. Risk is limited to running the provided Python script locally.
Credentials
The skill requires no environment variables or credentials. The ontology model references credential references (secret_ref) and explicitly discourages storing secrets directly; the runtime does not request or handle external secret tokens. This is proportionate to the stated purpose.
Persistence & Privilege
The skill persists data locally (append-only JSONL under a workspace path). always:false and no special privileges are requested. Note that appended history can grow unbounded and will remain on disk; also the effective storage location may differ depending on the agent's working directory or configuration (see ONTOLOGY_PATH vs DEFAULT_GRAPH_PATH mismatch).
Assessment
This skill appears to do what it claims: local, file-backed ontology CRUD and queries implemented in Python. Before installing or running it, check these practical points: 1) Confirm which storage path will be used in your environment (SKILL.md/script default: memory/ontology/graph.jsonl; skill.yaml default: ~/clawd/ontology) and adjust ONTOLOGY_PATH if needed. 2) Review the remainder of scripts/ontology.py (the provided excerpt was truncated) to confirm there are no hidden network calls or telemetry. 3) The tool writes append-only history to disk in the agent's workspace — run it in an isolated workspace if you want to avoid mixing with other files, and plan for backups/rotation. 4) Do not store raw secrets in entity properties; follow the skill's credential_secret_ref pattern and integrate a proper secret store if you need to reference credentials. 5) The metadata mismatch (Node compatibility vs Python implementation, differing homepages/owner IDs) looks like packaging/documentation drift — treat it as a non-security issue but verify which runtime the platform will use. If you want higher assurance, ask the maintainer for a full audit of the shipped Python file and a clear statement of the canonical storage path.

Like a lobster shell, security has layers — review code before you run it.

latestvk974kmfa3xqanm93gn665g19p983pw78
162downloads
0stars
1versions
Updated 1mo ago
v1.0.0
MIT-0

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

TriggerAction
"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 workModel as graph transformations
Skill needs shared stateRead/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":"alice@example.com"}'

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.

Comments

Loading comments...