156 lines
4.8 KiB
JSON
156 lines
4.8 KiB
JSON
|
|
{
|
||
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
|
|
"$id": "ucwm/schemas/constraints.json",
|
||
|
|
"title": "Constraint",
|
||
|
|
"description": "The core reasoning currency of UCWM. An explicit relation, restriction, incompatibility, requirement, or preference involving objects and/or facets.",
|
||
|
|
"type": "object",
|
||
|
|
"required": ["constraint_id", "constraint_type", "argument_refs", "polarity", "strength", "status", "source_module"],
|
||
|
|
"additionalProperties": false,
|
||
|
|
"properties": {
|
||
|
|
"constraint_id": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "Unique identifier. Format: C{sequence} e.g. C1, C14"
|
||
|
|
},
|
||
|
|
"constraint_type": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "Named relation type. Implementors should define allowed values per domain.",
|
||
|
|
"examples": [
|
||
|
|
"before",
|
||
|
|
"after",
|
||
|
|
"during",
|
||
|
|
"causes",
|
||
|
|
"enables",
|
||
|
|
"blocks",
|
||
|
|
"same_entity",
|
||
|
|
"not_same_entity",
|
||
|
|
"owns",
|
||
|
|
"transfers",
|
||
|
|
"inside",
|
||
|
|
"outside",
|
||
|
|
"adjacent",
|
||
|
|
"quantity_equals",
|
||
|
|
"quantity_sum",
|
||
|
|
"quantity_difference",
|
||
|
|
"quantity_product",
|
||
|
|
"quantity_greater",
|
||
|
|
"quantity_less",
|
||
|
|
"truth_value",
|
||
|
|
"implies",
|
||
|
|
"negates",
|
||
|
|
"contradicts",
|
||
|
|
"prerequisite",
|
||
|
|
"goal",
|
||
|
|
"has_role"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"argument_refs": {
|
||
|
|
"type": "array",
|
||
|
|
"items": { "type": "string" },
|
||
|
|
"minItems": 1,
|
||
|
|
"description": "Ordered list of object_ids or facet_ids this constraint relates. Order is significant for asymmetric relations."
|
||
|
|
},
|
||
|
|
"polarity": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["positive", "negative"],
|
||
|
|
"description": "Whether this constraint asserts or denies the relation."
|
||
|
|
},
|
||
|
|
"strength": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["hard", "soft", "probabilistic", "defeasible"],
|
||
|
|
"description": "hard=must hold; soft=preferred; probabilistic=holds with stated probability; defeasible=default, retractable by new evidence"
|
||
|
|
},
|
||
|
|
"probability": {
|
||
|
|
"type": "number",
|
||
|
|
"minimum": 0.0,
|
||
|
|
"maximum": 1.0,
|
||
|
|
"description": "Required when strength=probabilistic."
|
||
|
|
},
|
||
|
|
"status": {
|
||
|
|
"type": "string",
|
||
|
|
"enum": ["unresolved", "resolved", "contradicted", "suspended"],
|
||
|
|
"description": "Resolver lifecycle status.",
|
||
|
|
"default": "unresolved"
|
||
|
|
},
|
||
|
|
"expression": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "Optional human-readable or formal logic expression of the constraint. Informational; not authoritative.",
|
||
|
|
"examples": [
|
||
|
|
"before(E1, E2)",
|
||
|
|
"quantity(Q1) = quantity(Q2) - 3",
|
||
|
|
"owner(O3) = Entity_Alice"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"confidence": {
|
||
|
|
"type": "number",
|
||
|
|
"minimum": 0.0,
|
||
|
|
"maximum": 1.0,
|
||
|
|
"description": "Confidence that this constraint is correctly extracted."
|
||
|
|
},
|
||
|
|
"contradicted_by_refs": {
|
||
|
|
"type": "array",
|
||
|
|
"items": { "type": "string" },
|
||
|
|
"description": "constraint_ids that contradict this one. Populated by the resolver.",
|
||
|
|
"default": []
|
||
|
|
},
|
||
|
|
"supports_refs": {
|
||
|
|
"type": "array",
|
||
|
|
"items": { "type": "string" },
|
||
|
|
"description": "constraint_ids that reinforce this one.",
|
||
|
|
"default": []
|
||
|
|
},
|
||
|
|
"source_module": {
|
||
|
|
"type": "string",
|
||
|
|
"description": "Specialist or module that emitted this constraint."
|
||
|
|
},
|
||
|
|
"provenance_refs": {
|
||
|
|
"type": "array",
|
||
|
|
"items": { "type": "string" },
|
||
|
|
"default": []
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"examples": [
|
||
|
|
{
|
||
|
|
"constraint_id": "C1",
|
||
|
|
"constraint_type": "owns",
|
||
|
|
"argument_refs": ["E1", "O_apples", "Q1"],
|
||
|
|
"polarity": "positive",
|
||
|
|
"strength": "hard",
|
||
|
|
"status": "resolved",
|
||
|
|
"expression": "owns(Alice, apples, count=5) at t0",
|
||
|
|
"confidence": 0.98,
|
||
|
|
"source_module": "ownership_specialist",
|
||
|
|
"contradicted_by_refs": [],
|
||
|
|
"supports_refs": [],
|
||
|
|
"provenance_refs": ["P1"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"constraint_id": "C2",
|
||
|
|
"constraint_type": "before",
|
||
|
|
"argument_refs": ["EV_initial_possession", "EV_transfer"],
|
||
|
|
"polarity": "positive",
|
||
|
|
"strength": "hard",
|
||
|
|
"status": "resolved",
|
||
|
|
"expression": "before(E_initial_possession, E_transfer)",
|
||
|
|
"confidence": 0.99,
|
||
|
|
"source_module": "temporal_specialist",
|
||
|
|
"contradicted_by_refs": [],
|
||
|
|
"supports_refs": [],
|
||
|
|
"provenance_refs": ["P2"]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"constraint_id": "C3",
|
||
|
|
"constraint_type": "quantity_difference",
|
||
|
|
"argument_refs": ["Q_alice_final", "Q1", "Q2"],
|
||
|
|
"polarity": "positive",
|
||
|
|
"strength": "hard",
|
||
|
|
"status": "resolved",
|
||
|
|
"expression": "quantity(Q_alice_final) = quantity(Q1) - quantity(Q2)",
|
||
|
|
"confidence": 0.99,
|
||
|
|
"source_module": "quantity_specialist",
|
||
|
|
"contradicted_by_refs": [],
|
||
|
|
"supports_refs": [],
|
||
|
|
"provenance_refs": ["P3"]
|
||
|
|
}
|
||
|
|
]
|
||
|
|
}
|