Use case: multiple sufficient sets
The following is a contrived example to focus on the interaction of ECL and the Relationships view in the presence of multiple sufficient sets. The concept 'y' is not strictly necessary for this example (since the issue revolves around whether 'x' is a match for either constraint), but it's useful for the associated exploration of the Relationships table representation.
Description Logic:
PCG-based syntax |
| Manchester (like) syntax |
|---|---|---|
a : b=c, d=e ⊑ x | sufficient condition 1 for X | Class: x SuperClassOf: a and b some c and d some e |
a : b=c, f=g ⊑ x | sufficient condition 2 for X | Class: x SuperClassOf: a and b some c and f some g |
x ⊑ a:q=r | necessary conditions for X | Class: x SubClassOf: a and q some r |
a : b=c, f=g, s=t ≡ y | necessary & sufficient condition for Y | Class: y EquivalentTo: a and b some c and f some g and s some t |
Relationships ("inferred"): Note, there's no mechanism here to group the relationships per-axiom (different from role grouping). See below for an alternative that uses normalisation via anonymous concepts.
Note the use of new concepts 'sufficient' and 'necessary' that are subtypes of 'Defining relationship' (may want both stated and inferred versions?)
id | Src | Rel | Tgt | Role Group | Characteristic Type | Comment |
|---|---|---|---|---|---|---|
1 | x | b | c | 0 | sufficient |
|
2 | x | d | e | 0 | sufficient |
|
3 | x | b | c | 0 | sufficient | identical to row 1, but "associated with row 4 as part of second axiom a:b=c,f=g [= x |
4 | x | f | g | 0 | sufficient |
|
5 | x | q | r | 0 | necessary |
|
6 | x | ISA | a | 0 | necessary |
|
7 | y | ISA | x | 0 | necessary | no y ISA a since it would be redundant; x ISA a |
8 | y | b | c | 0 | necessary |
|
9 | y | f | g | 0 | necessary |
|
10 | y | s | t | 0 | necessary |
|
11 | y | q | r | 0 | necessary |
|
Problematic ECL:
Is x a match for << a : [0..0] d = e ?
Is x a match for << a : [1..*] d = e ?
I would argue that x is a match for 1, but not for 2 since the ECL really should be matching on necessarily existing relationships. Otherwise, if it operates on "possibly existing" relationships then x would be a match to both!
Note, the same applies for y - its match status is the same as for x.
Normalised version:
a:b=c,d=e ≡ anon_1 | anon class |
|
anon_1 ⊑ x | sufficient condition 1 for X |
|
a:b=c,f=g ≡ anon_2 |
|
|
anon_2 ⊑ x | sufficient condition 2 for X |
|
x ⊑ a:q=r | necessary conditions for X |
|
a:b=c,f=g,s=t ≡ y | necessary & sufficient condition for Y |
|
In the following, I have (optionally, in the Xb rows) introduced a new special relationship code ISA_R which is
ISA in the reverse direction
always interpreted as a standalone axiom
Alternatively (as per the Xa rows), a CharacteristicType of 'sufficient' could be interpreted as "treat this as a standalone axiom".
Relationships ("inferred")
id | Src | Rel | Tgt | Role Group | Characteristic Type | Comment |
|---|---|---|---|---|---|---|
1 | anon_1 | ISA | a | 0 | necessary |
|
2 | anon_1 | b | c | 0 | necessary |
|
3 | anon_1 | d | e | 0 | necessary |
|
4a | anon_1 | ISA | x | 0 | sufficient |
|
4b | x | ISA_R | anon_1 | 0 | sufficient | ISA_R is the "reverse" of ISA to work around the need to have axiom-level grouping |
5 | anon_2 | ISA | a | 0 | necessary |
|
6 | anon_2 | b | c | 0 | necessary |
|
7 | anon_2 | f | g | 0 | necessary |
|
8a | anon_2 | ISA | x | 0 | sufficient |
|
8b | x | ISA_R | anon_2 | 0 | sufficient |
|
9 | x | ISA | a | 0 | necessary |
|
10 | x | q | r | 0 | necessary |
|
11 | y | ISA | x | 0 | necessary | no y ISA a since it would be redundant; x ISA a |
12 | y | b | c | 0 | necessary |
|
13 | y | f | g | 0 | necessary |
|
14 | y | s | t | 0 | necessary |
|
15 | y | q | r | 0 | necessary |
|
|
|
|
|
|
|
|
Copyright © 2026, SNOMED International