返回 Skill 列表
extension
分类: 开发与工程无需 API Key

ontology-core

本体驱动架构(ODA)代码库的核心本体模式验证器。验证对象类型、链接类型、动作类型和属性定义模式。生成脚手架模板并检查跨类型一致性。

person作者: jakexiaohubgithub

/ontology-core - Core Ontology Schema Validator

Version: 3.0.0 | Model: opus


Overview

| Aspect | Description | |--------|-------------| | Purpose | Validate and scaffold ODA ontology type definitions | | Output | L1: Pass/fail summary / L2: Per-file results / L3: Detailed fix suggestions | | Reference | .claude/rules/ontology.md for naming conventions and rules |


Cross-Skill Integration

| Skill | Relationship | |-------|--------------| | /ontology-objecttype | Calls this skill for validation after generation | | /ontology-why | Provides design rationale for validation errors | | /ontology-linktype | (Planned) LinkType definition assistant |


Commands

| Command | Description | |---------|-------------| | validate <file> | Validate single ontology file | | validate-all <dir> | Validate all files in directory | | scaffold <type> <name> | Generate ObjectType/LinkType/ActionType template | | check-links <dir> | Cross-validate LinkType source/target references |


Supported Types

| Type | Key Validations | |------|-----------------| | ObjectType | Primary key, properties, backing dataset | | LinkType | Cardinality, foreign key, cascade policy | | ActionType | Parameters, affected types, edit specs | | PropertyDefinition | Data type, constraints, visibility |


Validation Rules

ObjectType Rules

| Rule ID | Name | Severity | |---------|------|----------| | OT-001 | Primary Key Required | ERROR | | OT-002 | Primary Key Property Exists | ERROR | | OT-003 | Unique Property Names | ERROR | | OT-004 | Valid Status | ERROR | | OT-005 | Endorsed Requires Active | WARNING | | OT-006 | Backing Dataset RID Format | ERROR | | OT-007 | Property Data Type Valid | ERROR |

LinkType Rules

| Rule ID | Name | Severity | |---------|------|----------| | LT-001 | Source ObjectType Required | ERROR | | LT-002 | Target ObjectType Required | ERROR | | LT-003 | Cardinality Required | ERROR | | LT-004 | Foreign Key Implementation | ERROR | | LT-005 | Backing Table for N:N | ERROR | | LT-006 | No Endorsed Status | WARNING | | LT-007 | Cascade Policy Consistency | WARNING |

ActionType Rules

| Rule ID | Name | Severity | |---------|------|----------| | AT-001 | Unique Parameter Names | ERROR | | AT-002 | Required Parameters First | WARNING | | AT-003 | Affected ObjectType Exists | ERROR | | AT-004 | Hazardous Flag | WARNING | | AT-005 | Edit Spec Property Valid | ERROR | | AT-006 | Implementation Required | ERROR | | AT-007 | No Endorsed Status | WARNING |

PropertyDefinition Rules

| Rule ID | Name | Severity | |---------|------|----------| | PD-001 | Valid Data Type | ERROR | | PD-002 | Array Item Type | ERROR | | PD-003 | Struct Reference | ERROR | | PD-004 | Required Without Default | WARNING | | PD-005 | Primary Key Constraints | ERROR |


Output Format

L1 - Summary (Default)

Validation Complete: 3 files, 21 rules passed, 1 warning, 0 errors

L2 - Per-File Results

Validating: src/ontology/

src/ontology/employee.py
  ObjectType: Employee (7 passed, 1 warning)
    OT-005: Endorsed Requires Active

src/ontology/links.py
  LinkType: ProjectToEmployee (5 passed, 2 errors)
    LT-001: Source ObjectType 'Project' not found

Summary: 26 passed, 1 warning, 2 errors

L3 - Detailed with Fix Suggestions

LT-001: Source ObjectType Required
   File: src/ontology/links.py:45
   LinkType: ProjectToEmployee
   Issue: source_object_type references 'Project' which doesn't exist

   Fix: Create Project ObjectType first, or change source to existing type

   Available ObjectTypes:
   - Employee (src/ontology/employee.py)
   - Department (src/ontology/department.py)

Scaffold Templates

ObjectType Template

from ontology_definition.types import (
    ObjectType, PropertyDefinition, DataTypeSpec,
    PrimaryKeyDefinition, PropertyConstraints,
)
from ontology_definition.core.enums import DataType, ObjectStatus

{entity_name_lower}_type = ObjectType(
    api_name="{EntityName}",
    display_name="{Entity Name}",
    description="TODO: Add description",
    primary_key=PrimaryKeyDefinition(property_api_name="{entityName}Id"),
    properties=[
        PropertyDefinition(
            api_name="{entityName}Id",
            display_name="{Entity Name} ID",
            data_type=DataTypeSpec(type=DataType.STRING),
            constraints=PropertyConstraints(required=True, unique=True),
        ),
        # TODO(human): Add more properties
    ],
    status=ObjectStatus.ACTIVE,
)

LinkType Template

from ontology_definition.types import (
    LinkType, ObjectTypeReference, CardinalityConfig,
    LinkImplementation, ForeignKeyConfig,
)
from ontology_definition.core.enums import Cardinality, LinkImplementationType

{source_lower}_to_{target_lower} = LinkType(
    api_name="{Source}To{Target}",
    display_name="{Source} to {Target}",
    source_object_type=ObjectTypeReference(api_name="{Source}"),
    target_object_type=ObjectTypeReference(api_name="{Target}"),
    cardinality=CardinalityConfig(type=Cardinality.MANY_TO_ONE),
    implementation=LinkImplementation(
        type=LinkImplementationType.FOREIGN_KEY,
        foreign_key=ForeignKeyConfig(
            foreign_key_property="{target}Id",
            foreign_key_location=ForeignKeyLocation.SOURCE,
        ),
    ),
)

Package Reference

from ontology_definition.types import (
    ObjectType, LinkType, ActionType, PropertyDefinition,
)
from ontology_definition.core.enums import (
    DataType, ObjectStatus, Cardinality, LinkImplementationType,
)

Package Location: /home/palantir/park-kyungchan/palantir/Ontology-Definition/


Error Handling

| Error | Recovery | |-------|----------| | File not found | Show available files | | Parse error | Show line number and context | | Unknown type | Suggest valid type names | | Validation timeout | Save partial results |


Version History

| Version | Change | |---------|--------| | 1.0.0 | Core ontology schema validator | | 3.0.0 | Frontmatter normalization, MCP tool inclusion, duplicate removal |

End of Skill Definition