Commit 4f0020c
committed
fix(shaclgen): emit sh:minCount/maxCount 0 for zero cardinality values
The SHACL generator used Python truthiness checks for
minimum_cardinality and maximum_cardinality:
if s.minimum_cardinality: # 0 is falsy!
if s.maximum_cardinality: # 0 is falsy!
Since int(0) evaluates as False in Python, setting
maximum_cardinality: 0 (which should produce sh:maxCount 0,
meaning the property MUST NOT appear) silently emitted nothing.
This patch changes both checks to explicit `is not None`
comparisons, matching the pattern already used in the OWL
generator (owlgen.py lines 627-640) for the same attributes.
sh:maxCount 0 is valid per the W3C SHACL specification and means
"this property must not exist on any conforming node". This is
the standard mechanism for suppressing inherited properties on
subclasses via slot_usage with maximum_cardinality: 0.
Signed-off-by: Carlo van Driesten <carlo.van-driesten@bmw.de>1 parent 2b95fc5 commit 4f0020c
3 files changed
Lines changed: 61 additions & 2 deletions
File tree
- packages/linkml/src/linkml/generators
- tests/linkml/test_generators
- input/shaclgen
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
169 | 169 | | |
170 | 170 | | |
171 | 171 | | |
172 | | - | |
| 172 | + | |
173 | 173 | | |
174 | 174 | | |
175 | 175 | | |
| |||
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
182 | | - | |
| 182 | + | |
183 | 183 | | |
184 | 184 | | |
185 | 185 | | |
| |||
Lines changed: 19 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
17 | 17 | | |
18 | 18 | | |
19 | 19 | | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
20 | 31 | | |
21 | 32 | | |
22 | 33 | | |
| |||
28 | 39 | | |
29 | 40 | | |
30 | 41 | | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
568 | 568 | | |
569 | 569 | | |
570 | 570 | | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
571 | 611 | | |
572 | 612 | | |
573 | 613 | | |
| |||
0 commit comments