Page History
The logic definitions are represented by the OWL axiom refset that is a replacement of the RF2 stated relationship file. As a result, the nature of the inferred relationship file in the distribution normal form (DNF) has changed because the new DL features are not representable in the current relationships file. The inferred relationship file will maintain the same format and structure, but it is no longer equivalent to the stated form (containing all necessary and sufficient conditions). In fact, it is a collection of all the necessary conditions of precoordinated concepts and represents a subset of the full semantics.
Necessary Normal Form
The Necessary Normal Form (NNF) is a replacement for the Distribution Normal Form for inferred relationships. The NNF is a precalculated distribution form for practical purposes, for example, to support the continuity of existing implementations based on relational databases and queries by the expression constraint language.
...
The NNF does not include class disjointness, transitive properties, reflexive properties and sufficient conditions represented as General Concept Inclusions (GCIs) in the OWL axiom refset.
Rules for determining redundant relationships
Rule 1 - Class and Role inclusions
Given two relationships, A and B, A with r = C and B with s = D, within the same role group, A is redundant if:
...
Note, “crossover relationships”, where r is a supertype of s, and C is instead a subtype of D do not result in a redundant relationship.
Example for Class inclusion
Stated relationships
Inferred relationships before the removal of redundant relationship
...
referencedComponentId | owlExpression (stated relationships) | Inferred Relationships in Necessary Normal Form | |||
sourceId | destinationId | relationshipGroup | typeId | ||
125605004 | EquivalentClasses(:125605004 ObjectIntersectionOf(:64572001 ObjectSomeValuesFrom(:609096000 ObjectIntersectionOf(ObjectSomeValuesFrom(:116676008 :72704001) ObjectSomeValuesFrom(:363698007 :272673000))))) | 125605004 | 284003005 | 0 | 116680003 |
125605004 | 72704001 | 1 | 116676008 | ||
125605004 | 272673000 | 1 | 363698007 | ||
12676007 | EquivalentClasses(:12676007 ObjectIntersectionOf(:64572001 ObjectSomeValuesFrom(:609096000 ObjectIntersectionOf(ObjectSomeValuesFrom(:116676008 :72704001) ObjectSomeValuesFrom(:363698007 :62413002))))) | 12676007 | 65966004 | 0 | 116680003 |
12676007 | 429353004 | 0 | 116680003 | ||
12676007 | 72704001 | 1 | 116676008 | ||
12676007 | 62413002 | 1 | 363698007 | ||
62413002 | SubClassOf(:62413002 :299701004) | 62413002 | 299701004 | 0 | 116680003 |
Example for Role inclusion
Stated relationships
Inferred relationships before the removal of redundant relationship
...
referencedComponentId | owlExpression (stated relationships) | Inferred Relationships in Necessary Normal Form | |||
sourceId | destinationId | relationshipGroup | typeId | ||
118851004 | EquivalentClasses(:118851004 ObjectIntersectionOf(:71388002 ObjectSomeValuesFrom(:609096000 ObjectSomeValuesFrom(:363704007 :64033007)))) | 118851004 | 71388002 | 0 | 116680003 |
118851004 | 64033007 | 1 | 363704007 | ||
7246002 | EquivalentClasses(:7246002 ObjectIntersectionOf(:71388002 ObjectSomeValuesFrom(:609096000 ObjectIntersectionOf(ObjectSomeValuesFrom(:260686004 :129314006) ObjectSomeValuesFrom(:405813007 :64033007))))) | 7246002 | 118851004 | 0 | 116680003 |
7246002 | 362995002 | 0 | 116680003 | ||
7246002 | 430212007 | 0 | 116680003 | ||
7246002 | 129314006 | 1 | 260686004 | ||
7246002 | 64033007 | 1 | 405813007 | ||
405813007 | SubObjectPropertyOf(:405813007 :363704007) | 405813007 | 363704007 | 0 | 116680003 |
Rule 2 - Property chains including transitive properties
Given attribute r, s and t with a property chain SubObjectPropertyOf(ObjectPropertyChain(t s) r), and two relationships A and B, A with r = C and B with u = D, within the same role group, A is redundant if:
...
SubObjectPropertyOf(ObjectPropertyChain(r r) r) and thus it is a special case of the above.
Example for property chain:
Stated relationships
Inferred relationships before the removal of redundant relationship
...
referencedComponentId | owlExpression (stated relationships) | Inferred Relationships in Necessary Normal Form | |||
sourceId | destinationId | relationshipGroup | typeId | ||
73572009 | EquivalentClasses(:73572009 ObjectIntersectionOf(:763158003 ObjectSomeValuesFrom(:609096000 ObjectSomeValuesFrom(:127489000 :373529000)))) | 73572009 | 764887005 | 0 | 116680003 |
73572009 | 360204007 | 0 | 116680003 | ||
73572009 | 373529000 | 1 | 127489000 | ||
422453004 | EquivalentClasses(:422453004 ObjectIntersectionOf(:763158003 ObjectSomeValuesFrom(:609096000 ObjectSomeValuesFrom(:127489000 :74905005)))) | 422453004 | 73572009 | 0 | 116680003 |
422453004 | 74905005 | 1 | 127489000 | ||
127489000 | SubObjectPropertyOf(ObjectPropertyChain(:127489000 :738774007) :127489000)) | N/A | N/A | N/A | |
74905005 | SubClassOf(:74905005 ObjectIntersectionOf(:440327007 ObjectSomeValuesFrom(:738774007 :373529000))) | 74905005 | 440327007 | 0 | 116680003 |
74905005 | 373529000 | 0 | 738774007 |
Technical implementation for calculating the NNF
This fairly complex process uses the stated form and the output of the reasoner to calculate the necessary normal form which is represented in the relationship RF2 file.
The most straightforward way to produce the necessary normal form would be to use the Snomed OWL Toolkit or the Classification Service REST API which is language agnostic.
High Level Process
Classification
Read the Stated Form from RF2 files.
The following files are required: Concept, Stated Relationship, OWL Ontology Reference Set, OWL Axiom Reference Set and MRCM Attribute Domain Reference Set.
Use the OWL API to infer the class hierarchy
Build the Ontology object using:
Axioms from the OWL Axiom Reference Set, making a note of any Transitive property axioms.
Axioms created by converting Stated Relationships to OWL Axioms using the MRCM Attribute Domain Reference Set for list of attributes which should not be grouped in the given domain.
Use a reasoner to pre-compute the class hierarchy.
Necessary Normal Form Calculation
Calculating the necessary normal form happens in two passes of the hierarchy.
...