Skip to content

pv: implement sh:lessThan / sh:lessThanOrEquals — SHACL Core property-pair constraints #3611

Closed as not planned
1 of 1 issue completed
Closed as not planned

Description

@noahgift

sh:lessThanOrEquals is SHACL Core (property-pair constraint), not SPARQL. pv refuses it:

error: shape slk-post-v1/node uses unsupported lessThanOrEquals

Measured with pv 0.68.2, 2026-09-20. The refusal is loud, which is the right failure — unlike #3610's silent Pass — so this is a gap, not a truth defect, and it is small.

The case that wants it

contracts/slk-post-v1.yaml (infra, SLK-ONT-3): a Slack post split across messages carries part: {i, n}. i <= n is exactly a property-pair constraint, and without it a post declaring {i: 4, n: 3} validates clean.

Until it lands the constraint is listed under not_expressible: with the shell check that enforces it, per the one-validator rule — the fallback is named in the artifact, never a silent second validator.

Note the sibling limit, which this does NOT fix: exactly n parts exist for a post_id, i unique over 1..n is a constraint over ROWS, not a property pair, and stays outside SHACL Core either way.

Activity

  1. modified the milestones: 0.70.0, 0.71.0 on Sep 20, 2026
  2. noahgift commented on Sep 23, 2026

    @noahgift
    ContributorAuthor

    milestone → 0.71.0 per docs/roadmaps/milestone-triage-2026-09-23.md (#4024), operator approval 2026-09-23 (relayed by aprender-cf). Reason: debt ratchet pillars B/C (#3997: pv at the deepest level, ontology merge), slice 2

  3. modified the milestones: 0.71.0, 0.70.0 on Sep 23, 2026
  4. added
    ont-0.70Ontology spec work that must finish in 0.70 (operator 2026-09-23)
    on Sep 23, 2026
  5. noahgift commented on Sep 23, 2026

    @noahgift
    ContributorAuthor

    triage 2026-09-23 (aprender-dd): kept in 0.70.0 and labelled ont-0.70. Operator, verbatim (relayed by the cop aprender-cf): "the ontology spec MUST be finished in .7". Classified as ontology/SHACL spec work: its title names ONT/ontology/SHACL/capability cells, or its body cites an ONT- row.

  6. noahgift commented on Sep 23, 2026

    @noahgift
    ContributorAuthor

    Correction to the triage comment above (aprender-dd): this issue was MOVED from 0.71.0 to 0.70.0, not "kept". A failed first attempt applied the milestone before its label step errored, so the second pass read it as already in 0.70.0. The move and the reason stand.

  7. noahgift commented on Sep 24, 2026

    @noahgift
    ContributorAuthor

    Implemented on branch PMAT-3611-shacl-lessthan @ 8956066 (off batch/0.70.0; no PR — repo at the 10-PR cap, for the apr-fold batch).

    • lessThan / lessThanOrEquals parse, validate (one result per unordered value pair; an incomparable pair — IRI, string vs number — is a result, never a skip) and export to Turtle.
    • W3C property/lessThan-001, lessThan-002, lessThanOrEquals-001 vendored (ttl + translation): pass in the gate, and agree with pinned shacl 0.3.21 under make oracle.
    • aprender-contracts lib 1703/1703, ont4b2 CLI 8/8, clippy -D warnings clean. Two mutants (strict < accepts equality; incomparable treated as ordered) both killed by the unit test and the W3C cases.

    Unblocks infra slk-post-v1 part: {i, n} (move i <= n out of not_expressible:) once pv with this ships.

  8. 2 remaining items

  9. modified the milestones: 0.70.0, 0.71.0 on Oct 4, 2026
  10. added
    P1High priority
    and removed
    P0Critical priority
    on Oct 14, 2026
  11. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    P0 to P1 (2026-10-14 P0 triage): P0 now means it blocks the next release or carries the operator's own words on it; this issue does neither, so it stays on the 0.71.0 milestone at P1. The operator quote in its history is a milestone-wide triage note, not words about this issue.

  12. noahgift commented on Oct 14, 2026

    @noahgift
    ContributorAuthor

    Folded into #5308 as a checklist row (TRIAGE-100, 2026-10-14): the open-ticket cap is 100, so this ticket is now tracked on that master and closed as not planned. Nothing is lost: reopen it when its work resumes, and an open PR for it reopens it. Pushed branch: PMAT-3611-shacl-lessthan.

    Agent: aprender-clerk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High priorityont-0.70Ontology spec work that must finish in 0.70 (operator 2026-09-23)owner:aprender-a7owner sessionsize:MK̂ 3-4 h

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions