Earlier in the projects history it was decided not to use role groups for the Observables model, mainly because at the time, the model was proposed to include nested definitions more specific than what role grouping admits. Also, the nesting patterns using role groups for procedures and findings (i.e. having more than one "part" of the procedure or more than one "condition" for the finding) does not apply to observables. There will only ever be one kind of quality and observation procedure referred to by one observable.
Below is an example of the relationship table for an observable created using SnoOwl from UNMC:
id | effectiveTime | active | moduleId | sourceId | destinationId | relationshipGroup | typeId | characteristicTypeId | modifierId |
389446341000004000 | 1 | 900000000000207000 | 799635351000004000 | 117362005 | 0 | 370132008 | 900000000000225000 | 900000000000451000 | |
154043481000004000 | 1 | 900000000000207000 | 799635351000004000 | 64195000 | 0 | 704320005 | 900000000000011000 | 900000000000451000 | |
113689121000004000 | 1 | 900000000000207000 | 799635351000004000 | 443412009 | 0 | 116680003 | 900000000000011000 | 900000000000451000 | |
953865841000004000 | 1 | 900000000000207000 | 799635351000004000 | 367651003 | 0 | 704319004 | 900000000000011000 | 900000000000451000 | |
978593911000004000 | 1 | 900000000000207000 | 799635351000004000 | 441652008 | 0 | 704327008 | 900000000000011000 | 900000000000451000 | |
326682591000004000 | 1 | 900000000000207000 | 799635351000004000 | 776042991000004000 | 0 | 9216841000004100 | 900000000000011000 | 900000000000451000 | |
557253841000004000 | 1 | 900000000000207000 | 799635351000004000 | 118536000 | 0 | 704318007 | 900000000000011000 | 900000000000451000 | |
326573721000004000 | 1 | 900000000000207000 | 799635351000004000 | 123029007 | 0 | 370134009 | 900000000000011000 | 900000000000451000 | |
232992231000004000 | 1 | 900000000000207000 | 799635351000004000 | 258066000 | 0 | 246501002 | 900000000000011000 | 900000000000451000 |
As can be seen, all relationship groups (role groups) are 0. Most attributes use to define observables are exclusive to the observables model, with the exception of 246093002 | Component (attribute) |. The same SnoOwl tool outputs observables concepts as below:
The RF2-to-OWL script provided with the international release of SNOMED CT role groups everything that isn't explicitly marked as "never grouped" by hard coding the list of attributes not to be "automagically" put into role groups. All other attributes are currently put inside a role group, even if relationshipGroup equals 0 in the RF2 file. Currently these "never grouped" attributes are:
$nevergrouped{"123005000"} = "T"; # part-of is never grouped
$nevergrouped{"272741003"} = "T"; # laterality is never grouped
$nevergrouped{"127489000"} = "T"; # has-active-ingredient is never grouped
$nevergrouped{"411116001"} = "T"; # has-dose-form is never grouped
There are three possible solutions:
- Always role group all observables into one group. + easy to achieve, - no straightforward corresponding semantics (as for findings and procedures)
- Make observables use two role groups, one for target of observation (quality, disposition, function) and one for the observation procedure, + almost as easy, - interim solution, "semi-straightforward" semantics only
- Create a new COMPONENT-like attribute exclusive to the observables model and add all observables attributes to the "never grouped" list. + easy to achieve (see David Sperzel's comment), - lack of re-use between models (procedures and observables)
- Remove role groups from evaluation procedures (which should be observables anyway?), - more invasive solution (~9000 concepts, 15 with explicit, but still only 1, role group)
- Add rules to OWL generation software (or similar) which distinguishes between observables and procedures, - more complex software --> harder to implement
- [added 2016-10-12 ] Remove implicit role grouping, as described in comment below.
11 Comments
Jim Case
Given the native role-grouping of the RF2-to-OWL script, it would be of interest to know the rationale behind that particular implementation strategy. Role groups provide a much needed construct for semantics and it inconsistent use in the terminology as a whole has caused substantial inference inconsistencies.
Kai Kewley
Could anyone explain if a non is-a relationship in group 0 within RF2 should always become an attribute in OWL which is not nested?
Following on from Jim's comment perhaps an ungrouped RF2 relationship should become an unnested OWL attribute but that conversion would not be reliable because of inconsistent use of grouping?
I would like to understand this if someone has the time to explain it to me or point me to some resources. Many thanks.
Daniel Karlsson
Hi Kai,
according to the TIG (4.3.5.2.2 Relationship Grouping) and the perl script, apart from the (currently) four attributes (127489000 | Has active ingredient (attribute) |, 123005000 | Part of (attribute) |, 272741003 | Laterality (attribute) |, and 411116001 | Has dose form (attribute) |), relationships in group 0 are always grouped.
From the TIG:
"When transforming Relationships to OWL or KRSS, all rows that have a RelationshipType that are allowed to be grouped, even if a particular row is ungrouped (i.e. even if the row has a RelationshipGroup value meaning ‘ungrouped’), must be nested under an existential restriction that represents the (potential) grouping. This existential restriction is labeled with the OWL object property called ‘Role group (attribute)’"
Note that this is currently the thing which is closest to a specification of SNOMED CT formal semantics!
/Daniel
Daniel Karlsson
Also, I sincerely believe that removing this idea of implicit relationship grouping and making relationship grouping mandatory for Clinical findings, Procedures, and Specimen and disallowed for all other hierarchies would be a step towards clarity, easy-of-use, and predictability. It would also make implementations, including SNOMED CT-2-OWL transformations, less error prone as this whole issue would disappear.
This change could be made algorithmically (e.g. by incrementing the relationshipGroup field by one for all non-IsA relationships for the specified hierarchies). Then, relationshipGroup 0 means "not grouped" and not "maybe grouped sometimes depending on hierarchy".
/Daniel
Farzaneh Ashrafi
QA resulting form the observable implementation call on October 3, 15.00 UTC:
Jim Case
Daniel,
There was a proposal on the call the other day to effectively require "role-grouping" for all non-IS A relationships that would be an attempt to clarify the perceived ambiguity around role group 0. What this would mean, as I understand it is that all non-IS A attributes would be assigned to role group "1" by default and more specific grouping needed for other hierarchies such as findings and procedures would begin numbering their groups from "2" onward. At first, I was opposed to doing this as it would add more complexity to the already complex notion of when to group, but if it could be implemented in the tooling, then that would not be as much of a problem (although I see scenarios that give me heartburn). The real question is whether this just kicks the can down the road and does not really solve the issue at hand? Thoughts?
Jim
Harold Solbrig
Jim,
This would be a good way to call attention to the issue, assuming that there is still a role group of "0" for the properties that are never grouped. Was that your intent? At the moment, the fact that we've got secret role groups and that some, but not all, of the relationships are assumed to belong to them is not widely known. Making this information obvious and explicit would be a good first step towards not kicking the can down the road. Until we can make the issue obvious and visible, it is going to be difficult to get any traction towards a real solution.
Harold
Daniel Karlsson
Yes, 0 = no group!
Daniel Karlsson
Hi Jim,
first I'm happy to do (almost) whatever is needed to facilitate implementation of the Observables model, so if this is the decision then let's go with that.
However, I think there are more issues with relationship grouping and that this is just a symptom of some underlying problems ("tip of an iceberg" kind of metaphor). I made a comment on the MAG discussion page about relationship grouping in general. This probably needs more thinking, but I believe that relationship groups just like any other part of the definition should be there for the way it represents meaning of the concept, not as a workaround for other problems. It seems that relationship groups have been applied inconsistently, at least if judged by the meaning asserted e.g. by ECE.
Another solution which would be just as easy to apply and would keep the semantics of the relationship group would be to increase the relationshipGroup with 1 for findings, procedures, and specimen in the stated definitions. At the same time, in the MRCM, make relationship grouping mandatory for said hierarchies. The idea is to remove the need for implicit relationship grouping in tools and transformations. Then, a review of existing relationship groups would be also be in order.
/Daniel
Scott Campbell
The use of role group 0 is not well known in the SNOMED CT community, nor is the impact of role grouping on descendant concepts and classification well understood. With this said, is the suggestion to move all concepts currently bound to a role group 0 to a different role group 1? If so, are all these concepts to be in the same role group 1, and therefore, shown to be explicitly part a a single role group? Or is this simply a change from the nominal role group number?
If efforts to group concepts in a single role group that were previously in independent role group 0's, why not progress to assigning unique numbers to role groups? It may be something that would benefit authoring quality/consistency, as well as, nesting.
Daniel Karlsson
The idea was to increase all groups, 0→1, 1→2, etc. Relationship group 0 would mean no group, ever.