Refactor JSON-LD to Schema-Driven Projection
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- backend-api-design
Research direction
Start with app/services/jsonld.py and the project_to_jsonld function, then read ADR 0019 and ADR 0009 to understand the two-tier strategy and content negotiation requirements. Done means external Organizational JSON Schema definitions override internal SQLModel json_schema_extra annotations, and the semantic graph is built dynamically without hardcoded mapping logic.
Written by the indexing model from the issue text.
Description
Currently, app/services/jsonld.py hardcodes the mapping between internal Pydantic models and external semantic ontologies (DCAT, PROV-O) via procedural dictionaries. This creates a hidden third source-of-truth. This must be refactored into a Generic Projection Engine.
Acceptance Criteria:
- Implement the Two-Tier Strategy: Parse an external Organizational JSON Schema if provided (Tier 1 override), or fallback to parsing the internal
SQLModel'sjson_schema_extraannotations (Tier 2). - Update the
project_to_jsonldfunction to construct the semantic graph dynamically based purely on those schema definitions, removing all hardcoded logic.
Governing ADR(s): ADR 0019, ADR 0009
Migrated from the internal tracker, where it was #6, opened 2026-02-25.
- Dominant language
- Python
- Stars
- 0
- Forks
- 1
- Avg merge
- 26m
- Merged PRs (30d)
- 24
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ukaea/fds
-
performance
Difficulty 4/5 3-5 days Newbie friendliness 52/100
-
api architecture feature metadata priority: high
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
architecture metadata priority: medium
Difficulty 5/5 Over a week Newbie friendliness 30/100
-
enhancement fair-compliance metadata priority: medium
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Consume external provenance: inverse PROV mapping to register upstream inputs + create a Collection Openapi fair-compliance feature metadata priority: medium
Difficulty 5/5 Over a week Newbie friendliness 35/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100