{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Ontology Extraction", "description": "Domain ontology with entities, relationships, invariants, behaviors, and boundaries", "type": "object", "required": ["domain", "entities", "relationships", "boundaries"], "properties": { "domain": { "type": "string", "description": "Domain name being modeled" }, "entities": { "type": "array", "items": { "type": "object", "required": ["name", "type", "description", "properties"], "properties": { "name": { "type": "string" }, "type": { "type": "string", "enum": ["aggregate", "entity", "value_object", "event", "service"] }, "description": { "type": "string" }, "properties": { "type": "array", "items": { "type": "object", "required": ["name", "type"], "properties": { "name": { "type": "string" }, "type": { "type": "string" }, "required": { "type": "boolean" }, "description": { "type": "string" } } } } } } }, "relationships": { "type": "array", "items": { "type": "object", "required": ["from", "to", "type"], "properties": { "from": { "type": "string" }, "to": { "type": "string" }, "type": { "type": "string", "enum": ["has_many", "has_one", "belongs_to", "depends_on", "produces", "consumes"] }, "description": { "type": "string" } } } }, "invariants": { "type": "array", "items": { "type": "object", "required": ["name", "description", "scope"], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "scope": { "type": "string" } } } }, "behaviors": { "type": "array", "items": { "type": "object", "required": ["name", "actor", "description"], "properties": { "name": { "type": "string" }, "actor": { "type": "string" }, "description": { "type": "string" }, "triggers": { "type": "array", "items": { "type": "string" } }, "outcomes": { "type": "array", "items": { "type": "string" } } } } }, "boundaries": { "type": "array", "items": { "type": "object", "required": ["name", "entities"], "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "entities": { "type": "array", "items": { "type": "string" } } } } } } }