Align artifacts with canonical URT v5.1 specification
Fixes inconsistencies discovered during audit against urt-taxonomy/: - urt_profile ENUM: Add 'lite' and 'core' profiles (was missing) - USN format: Use canonical regex from spec (was non-compliant) - USN valence encoding: Add V0 (0) and V± (±) support - USN grammar: Add Lite (URT:L:) and Core (URT:C:) formats - Dimension codes: Fix temporal (TC/TR/TH/TF), evidence (ES/EI/EC), comparative (CR-N/CR-B/CR-W/CR-S) in decisions doc - LLM contract: Full USN regex validation pattern Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -243,8 +243,8 @@ Return valid JSON matching the schema exactly. No markdown, no explanations.
|
||||
},
|
||||
"usn": {
|
||||
"type": "string",
|
||||
"pattern": "^URT:S:[OPJEAVR][1-4]\\.[0-9]{2}",
|
||||
"description": "URT String Notation for audit"
|
||||
"pattern": "^URT:S:[OPJEAVR][1-4]\\.[0-9]{2}(\\+[OPJEAVR][1-4]\\.[0-9]{2}){0,2}:[+\\-0±][123]:[1-3][1-3]T[CRHF]\\.E[SIC]\\.[NBWS]$",
|
||||
"description": "URT String Notation for audit (Standard profile)"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ CREATE TYPE urt_actionability AS ENUM ('A1', 'A2', 'A3');
|
||||
CREATE TYPE urt_temporal AS ENUM ('TC', 'TR', 'TH', 'TF');
|
||||
CREATE TYPE urt_evidence AS ENUM ('ES', 'EI', 'EC');
|
||||
CREATE TYPE urt_comparative AS ENUM ('CR-N', 'CR-B', 'CR-W', 'CR-S');
|
||||
CREATE TYPE urt_profile AS ENUM ('standard', 'full');
|
||||
CREATE TYPE urt_profile AS ENUM ('lite', 'core', 'standard', 'full');
|
||||
CREATE TYPE urt_confidence AS ENUM ('high', 'medium', 'low');
|
||||
CREATE TYPE urt_relation AS ENUM ('cause_of', 'effect_of', 'contrast', 'resolution');
|
||||
CREATE TYPE urt_entity_type AS ENUM ('location', 'staff', 'product', 'process', 'time', 'other');
|
||||
@@ -411,15 +411,20 @@ ALTER TABLE review_spans
|
||||
ADD CONSTRAINT chk_no_self_relation
|
||||
CHECK (related_span_id IS NULL OR related_span_id != span_id);
|
||||
|
||||
-- USN format validation based on profile
|
||||
-- Standard: V[+-0±]:I[123]:CODE (e.g., "V-:I2:J1.01")
|
||||
-- Full: V[+-0±]:I[123]:CODE:S[123]:A[123]:T[CRHF]:E[SIC] (e.g., "V-:I3:J1.01:S2:A2:TC:ES")
|
||||
-- USN format validation based on profile (URT v5.1 canonical format)
|
||||
-- Lite: URT:L:{domain}:{valence}{intensity}
|
||||
-- Core: URT:C:{category}:{valence}{intensity}
|
||||
-- Standard: URT:S:{subcode}[+{sec}]:{valence}{intensity}:{S}{A}{T}.{E}.{CR}
|
||||
-- Full: URT:F:{subcode}[+{sec}]:{valence}{intensity}:{S}{A}{T}.{E}.{CR}[:{causal}]
|
||||
-- Examples: URT:L:O:+2 | URT:C:J1:-3 | URT:S:J1.03:-2:22TC.ES.N | URT:F:J1.01:-3:23TR.ES.S:CD.O,MG.O
|
||||
ALTER TABLE review_spans
|
||||
ADD CONSTRAINT chk_usn_format
|
||||
CHECK (
|
||||
usn IS NULL OR
|
||||
(profile = 'standard' AND usn ~ '^V[+\-0±]:I[123]:[OPJEAVR][1-4]\.[0-9]{2}$') OR
|
||||
(profile = 'full' AND usn ~ '^V[+\-0±]:I[123]:[OPJEAVR][1-4]\.[0-9]{2}:S[123]:A[123]:T[CRHF]:E[SIC]$')
|
||||
(profile = 'lite' AND usn ~ '^URT:L:[OPJEAVR]:[+\-0±][123]$') OR
|
||||
(profile = 'core' AND usn ~ '^URT:C:[OPJEAVR][1-4]:[+\-0±][123]$') OR
|
||||
(profile = 'standard' AND usn ~ '^URT:S:[OPJEAVR][1-4]\.[0-9]{2}(\+[OPJEAVR][1-4]\.[0-9]{2}){0,2}:[+\-0±][123]:[1-3][1-3]T[CRHF]\.E[SIC]\.[NBWS]$') OR
|
||||
(profile = 'full' AND usn ~ '^URT:F:[OPJEAVR][1-4]\.[0-9]{2}(\+[OPJEAVR][1-4]\.[0-9]{2}){0,2}:[+\-0±][123]:[1-3][1-3]T[CRHF]\.E[SIC]\.[NBWS](:(CD|MG|SY)\.[STEOFRPCSHX](,(CD|MG|SY)\.[STEOFRPCSHX])*)?$')
|
||||
);
|
||||
|
||||
-- Foreign keys for review_spans
|
||||
|
||||
@@ -76,15 +76,15 @@ Based on: v3.1.2 (commit f998277)
|
||||
- `urt_actionability` — A1, A2, A3
|
||||
|
||||
**Context & Evidence:**
|
||||
- `urt_temporal` — T1, T2, T3
|
||||
- `urt_evidence` — E1, E2, E3
|
||||
- `urt_comparative` — CR1, CR2, CR3
|
||||
- `urt_temporal` — TC (current), TR (recent), TH (historical), TF (future)
|
||||
- `urt_evidence` — ES (stated), EI (inferred), EC (contextual)
|
||||
- `urt_comparative` — CR-N (none), CR-B (better), CR-W (worse), CR-S (same)
|
||||
|
||||
**Classification:**
|
||||
- `urt_profile` — factual, emotional, comparative, etc.
|
||||
- `urt_profile` — lite, core, standard, full
|
||||
- `urt_confidence` — low, medium, high
|
||||
- `urt_relation` — elaborates, contrasts, causes, etc.
|
||||
- `urt_entity_type` — person, product, location, etc.
|
||||
- `urt_relation` — cause_of, effect_of, contrast, resolution
|
||||
- `urt_entity_type` — location, staff, product, process, time, other
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ The Universal Review Taxonomy (URT) is a classification system for customer feed
|
||||
|
||||
### Key Characteristics
|
||||
|
||||
- **Three Profiles**: Core, Standard, Full (increasing detail)
|
||||
- **Four Profiles**: Lite, Core, Standard, Full (increasing detail)
|
||||
- **Seven Domains**: Covering all aspects of customer experience
|
||||
- **Tier-3 Canonical Codes**: Format `X#.##` (e.g., J1.02, P2.15)
|
||||
- **Dimensional Annotation**: Valence, intensity, specificity, and more
|
||||
@@ -129,8 +129,10 @@ USN is a compact string encoding for URT annotations.
|
||||
### Grammar
|
||||
|
||||
```
|
||||
Standard: URT:S:{codes}:{V}{I}:{S}{A}{T}.{E}.{CR}
|
||||
Full: URT:F:{codes}:{V}{I}:{S}{A}{T}.{E}.{CR}:{causal}
|
||||
Lite: URT:L:{domain}:{V}{I}
|
||||
Core: URT:C:{category}:{V}{I}
|
||||
Standard: URT:S:{subcode}[+{sec}]:{V}{I}:{S}{A}{T}.{E}.{CR}
|
||||
Full: URT:F:{subcode}[+{sec}]:{V}{I}:{S}{A}{T}.{E}.{CR}[:{causal}]
|
||||
```
|
||||
|
||||
### Encoding Rules
|
||||
@@ -138,6 +140,8 @@ Full: URT:F:{codes}:{V}{I}:{S}{A}{T}.{E}.{CR}:{causal}
|
||||
**Valence**:
|
||||
- `+` for V+
|
||||
- `-` for V-
|
||||
- `0` for V0
|
||||
- `±` for V±
|
||||
|
||||
**Intensity**:
|
||||
- `1` for I1
|
||||
|
||||
Reference in New Issue
Block a user