You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Create/use lutaml-path (something like object path, VPath, XPath but for lutaml-model) #173
Delivered end-to-end and now wired to lutaml-model.
The gem already carried the parser for both RS 3002 syntaxes (87 green
examples covering model-definition paths and instance paths with the
full filter grammar). What #173 asked for beyond parsing — using paths
against lutaml-model — is now in PR lutaml/lutaml-path#10:
Lutaml::Path.resolve(root, "obj.contributor[role.type='publisher'].organization.name")
walks real lutaml-model instances: Serializable attribute trees,
hashes, and collections.
Filters evaluate the full condition grammar (comparisons with
numeric coercion, list membership, existence, &&/||/!,
wildcards) against each candidate node.
Plain chains return the single value; filters and wildcards return
collections — the two return forms RS 3002 specifies.
With this, the three pieces line up: RS 3002's grammar (already
parsed here), lutaml-model's instance objects (0.8.x), and the
resolution bridge between them. Suggest closing #173 when the PR
merges, with #172 (vCard on VFORMAT) as the natural first consumer.
Delivered: lutaml/lutaml-path#10 (merged) adds the resolution half — Lutaml::Path.resolve(root, path) walks real lutaml-model instances (Serializable trees, hashes, collections) with the full RS 3002 filter grammar, and InstancePath#resolve carries it on the path object itself. The parser half was already in the gem. Closing; #172 (vCard on VFORMAT) is the natural first consumer.
Activity
HassanAkbar commentedon Jan 3, 2025
@ronaldtse From what I understand we need to support something like what xpath does i.e
lutaml_model_instance.model_path(<expression>).Is this correct?
ronaldtse commentedon Jan 3, 2025
Yes, that's correct. What we are doing in root_mappings / child_mappings is like that:
i.e.
root_units enumerated_root_units=> in YAMLinput.root_units.enumerated_root_units.We need to think about it.
ronaldtse commentedon Jan 8, 2025
We have a gem for lutaml-path.
We need a specification for lutaml-path and to extend it.
ronaldtse commentedon Oct 14, 2026
Delivered end-to-end and now wired to lutaml-model.
The gem already carried the parser for both RS 3002 syntaxes (87 green
examples covering model-definition paths and instance paths with the
full filter grammar). What #173 asked for beyond parsing — using paths
against lutaml-model — is now in PR lutaml/lutaml-path#10:
Lutaml::Path.resolve(root, "obj.contributor[role.type='publisher'].organization.name")walks real lutaml-model instances: Serializable attribute trees,
hashes, and collections.
numeric coercion, list membership, existence,
&&/||/!,wildcards) against each candidate node.
collections — the two return forms RS 3002 specifies.
With this, the three pieces line up: RS 3002's grammar (already
parsed here), lutaml-model's instance objects (0.8.x), and the
resolution bridge between them. Suggest closing #173 when the PR
merges, with #172 (vCard on VFORMAT) as the natural first consumer.
ronaldtse commentedon Oct 14, 2026
Delivered: lutaml/lutaml-path#10 (merged) adds the resolution half — Lutaml::Path.resolve(root, path) walks real lutaml-model instances (Serializable trees, hashes, collections) with the full RS 3002 filter grammar, and InstancePath#resolve carries it on the path object itself. The parser half was already in the gem. Closing; #172 (vCard on VFORMAT) is the natural first consumer.