Problem
extract_restrictions() in rdf_parser.py silently drops any owl:hasValue restriction
where the value is a literal (e.g. owl:hasValue false, owl:hasValue "active"). Only
URIRef values are imported and stored.
This is because class_restrictions.value_uri and SnapshotRestriction.value_uri are
typed exclusively for URIs.
Current impact
Low — evrepo-core and ESEA vocabs only use URI values for hasValue. The
ontology-expressivity.ttl test fixture was adjusted to use a URI value to work around
this gap.
Scope
rdf_parser.py:extract_restrictions() — stop skipping literal values
class_restrictions table — add a value_literal column (or rename/generalize value_uri)
SnapshotRestriction schema — support literal values
skos_export_service.py — emit owl:hasValue with literal when appropriate
Context
Identified during Epic #108 Stripe 5 (PR #145).
Problem
extract_restrictions()inrdf_parser.pysilently drops anyowl:hasValuerestrictionwhere the value is a literal (e.g.
owl:hasValue false,owl:hasValue "active"). OnlyURIRefvalues are imported and stored.This is because
class_restrictions.value_uriandSnapshotRestriction.value_uriaretyped exclusively for URIs.
Current impact
Low — evrepo-core and ESEA vocabs only use URI values for hasValue. The
ontology-expressivity.ttltest fixture was adjusted to use a URI value to work aroundthis gap.
Scope
rdf_parser.py:extract_restrictions()— stop skipping literal valuesclass_restrictionstable — add avalue_literalcolumn (or rename/generalizevalue_uri)SnapshotRestrictionschema — support literal valuesskos_export_service.py— emitowl:hasValuewith literal when appropriateContext
Identified during Epic #108 Stripe 5 (PR #145).