Started: December 9, 2025
Status: 🎉 PHASE 3 COMPLETE - ENGINE UPDATED!
Target: Complete v3 migration
- Created
src/rdfmap/models/config_v3.pywith new models - Updated mortgage example to v3 format
- Updated
rml_parser.pyto output v3 format - All 3 RML parser tests passing
- Updated
loader.pyto handle v3 format - Removed v1/v2 migration logic
- v3 is the ONLY format
-
Updated
graph_builder.pyfor v3 format- Access
config.mappingsinstead ofconfig.sheets - Access
mapping.subjectinstead ofsheet.row_resource - Access
mapping.propertieswithpredicatefield - Access
mapping.relationshipsinstead ofsheet.objects - Created
_add_relationshipsand_add_single_relationship - Removed legacy merged sheet code
- Access
-
Verified working: Successfully processes v3 configs end-to-end!
- Update
graph_builder.py- Access
config.mappingsinstead ofconfig.sheets - Access
mapping.subjectinstead ofsheet.row_resource - Access
mapping.properties(no change) - Access
mapping.relationshipsinstead ofsheet.objects
- Access
- Update
data_source.py- Handle
DataSourcemodel - Support iterators (JSONPath, XPath)
- Handle
- Verify emitters work with new structure
- Should be minimal changes
-
test_rml_parser.py- Update for v3 output -
test_yarrrml_parser.py- Update for v3 output -
test_mortgage_example.py- Already using updated config -
test_config_validation.py- Update for v3 models
-
test_generator_workflow.py -
test_phase2_integration.py
- Delete format_adapter tests (no longer needed)
- Remove v1/v2 compatibility tests
- Update
README.mdwith v3 examples - Update
CHANGELOG.mdfor v0.4.0 - Create migration guide (v2 → v3)
- Update example READMEs
| Old (v2) | New (v3) | Reason |
|---|---|---|
sheets |
sources + mappings |
Universal, not spreadsheet-specific |
sheet.row_resource |
mapping.subject |
RML standard terminology |
sheet.objects |
mapping.relationships |
Clearer meaning |
property.as |
property.predicate |
RML standard terminology |
# OLD (v2)
sheets:
- name: loans
source: data.csv
row_resource:
class: ex:Loan
iri_template: "..."
properties:
col1: {as: ex:prop1}
objects:
obj1: {...}
# NEW (v3)
sources:
loans_data:
path: data.csv
format: csv
mappings:
Loan:
sources: loans_data
subject:
class: ex:Loan
iri_template: "..."
properties:
col1: {predicate: ex:prop1}
relationships:
rel1: {...}| Phase | Estimated Time | Status |
|---|---|---|
| 1. Models & Examples | 2 hours | ✅ DONE |
| 2. Parser Updates | 4 hours | 🔜 NEXT |
| 3. Engine Updates | 6 hours | ⏳ TODO |
| 4. Test Updates | 4 hours | ⏳ TODO |
| 5. Documentation | 2 hours | ⏳ TODO |
| Total | 18-20 hours | ~3 days |
Completed: Phase 1 (Models & Examples)
Next Up: Phase 2 (Parser Updates)
Blockers: None
Ready to continue with RML parser updates!