Search



Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

...

Inferred relationships for concrete values, e.g. decimal, integer, string, or dateTime, should be included in a separate relationship file.

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

Image RemovedImage Added


Inferred relationships before the removal of redundant relationshiprelationships

Image RemovedImage Added

Inferred relationships after the reduction

Image RemovedImage Added

For

Concept
ShowPartsterm
t12676007 |Fracture of radius|
, the relationship
Concept
ShowPartsterm
t363698007|Finding site|
 = 
Concept
ShowPartsterm
t299701004|Bone structure of radius and/or ulna|
is inherited from
Concept
ShowPartsterm
t65966004|Fracture of forearm|
, which is a redundant relationship because |Radius bone structure| because 
Concept
ShowPartsterm
t62413002|Bone structure of radius|
is a subtype of
Concept
ShowPartsterm
t299701004|Bone structure of
forearm
radius and/or ulna|
. The relationship relationship 
Concept
ShowPartsterm
t116676008|Associated morphology|
 = 
Concept
ShowPartsterm
t19130008|Traumatic abnormality|
is inherited from
Concept
ShowPartsterm
t429353004|Injury of radius|
, which is a redundant relationship because because 
Concept
ShowPartsterm
t72704001|Fracture
| is
(morphologic abnormality)|
 is a subtype of
Concept
ShowPartsterm
t19130008|Traumatic abnormality|
.

Caption label
CapIdexample1-in-owl-axiom-refset-and-rf2-relationship-file-nnf-
CapTypeTable
Example in OWL axiom refset and RF2 relationship file (NNF)


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

Image RemovedImage Added

Inferred relationships before the removal of redundant relationship

Image RemovedImage Added

Inferred relationships after reduction

Image RemovedImage Added

For concept

Concept
ShowPartsterm
t7246002|Kidney biopsy|
, the relationship relationship 
Concept
ShowPartsterm
t363704007|Procedure site|
= 
Concept
ShowPartsterm
t64033007|Kidney structure|
is inherited from
Concept
ShowPartsterm
t118851004|Procedure on kidney|
, which is a redundant relationship to to 
Concept
ShowPartsterm
t405813007|Procedure site - Direct|
= 
Concept
ShowPartsterm
t64033007|Kidney structure|
because
because 
Concept
ShowPartsterm
t405813007|Procedure site - Direct|
is a subtype of
Concept
ShowPartsterm
t363704007|Procedure site|
. Because
. Because 
Concept
ShowPartsterm
t64033007|Kidney structure|
is a subtype of of 
Concept
ShowPartsterm
t122489005|Urinary system structure|
and
Concept
ShowPartsterm
t82849001|Retroperitoneal compartment structure|
, the inherited relationships for for 
Concept
ShowPartsterm
t405813007|Procedure site - Direct|
are also redundant.

Caption label
CapIdexample2-in-owl-axiom-refset-and-rf2-relationship-file-nnf-
CapTypeTable
Example in OWL axiom refset and RF2 relationship file (NNF)


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:

  • Attribute u is the same as or a subtype of t, and

  • D has a relationship to C via attribute s

...

     SubObjectPropertyOf(ObjectPropertyChain(r r) r) and thus it is a special case of the above.

Example for property chain:

Stated relationships

Image Removed

of

Concept
ShowPartsterm
t323739006 |Product containing precisely amoxicillin (as amoxicillin sodium) 1 gram/1 vial powder for conventional release solution for injection (clinical drug)|
 (the other model detail has been omitted):

Image Added


Stated relationships of

Concept
ShowPartsterm
t427483001 |Amoxicillin sodium (substance)|
:

Image AddedImage Removed



Inferred relationships before the removal of the redundant relationship

Image Removed

Image RemovedImage Added

Inferred relationships after the reduction

Image RemovedImage Added

For

Concept
ShowPartsterm
t323739006 |Product containing
ethyl morphine|, the relationship |has
precisely amoxicillin (as amoxicillin sodium) 1 gram/1 vial powder for conventional release solution for injection (clinical drug)|
, the relationship 
Concept
ShowPartsterm
t127489000|Has active ingredient|
= |Morphine| is inherited from  
Concept
ShowPartsterm
t372687004 |Amoxicillin|
 is inherited from
Concept
ShowPartsterm
t27658006 |Product containing
morphine|, which is a redundant relationship to |has active ingredient| = |Ethyl morphine| because |Ethyl morphine| |Is modification of| |Morphine| and |has active ingredient| has a property chain with |Is modification of|.Example in OWL axiom refset and RF2 relationship file
amoxicillin|
. If rule 1 for class inclusion was applied, the relationships would not be considered redundant because 
Concept
ShowPartsterm
t427483001 |Amoxicillin sodium (substance)|
 is not a subconcept of 
Concept
ShowPartsterm
t372687004 |Amoxicillin (substance)|
. Since
  
Concept
ShowPartsterm
t427483001 |Amoxicillin sodium|
 
Concept
ShowPartsterm
t738774007|Is modification of|
 
Concept
ShowPartsterm
t372687004 |Amoxicillin|
and property chain of "
Concept
ShowPartsterm
t127489000|Has active ingredient|
 o  
Concept
ShowPartsterm
t738774007|Is modification of|
" is a sub-property of 
Concept
ShowPartsterm
t127489000|Has active ingredient|
, rule 2 actually compares the anonymous concepts for subsumption, i.e. 
Concept
ShowPartsterm
t127489000|Has active ingredient|
 = 
Concept
ShowPartsterm
t372687004 |Amoxicillin|
 with 
Concept
ShowPartsterm
t127489000|Has active ingredient|
 = 
Concept
ShowPartsterm
t427483001 |Amoxicillin sodium|
. Therefore, the inherited relationship is redundant and can be removed from the NNF.  
Their relationships and property chain can be demonstrated in the following diagram.

Image Added


Caption label
CapIdexample3-in-owl-axiom-refset-and-rf2-relationship-file-nnf-
CapTypeTable
Example in OWL axiom refset and RF2 relationship file (NNF)


referencedComponentId


owlExpression

(stated relationships)

Inferred Relationships in Necessary Normal Form

sourceId

destinationId

relationshipGroup

typeId

73572009

27658006

EquivalentClasses(:

73572009

27658006 ObjectIntersectionOf(:763158003 ObjectSomeValuesFrom(:609096000 ObjectSomeValuesFrom(:127489000 :

373529000

372687004))))

73572009

27658006

764887005

90704004

0

116680003

73572009

360204007

0

116680003

73572009

373529000

27658006

372687004

1

127489000

422453004

323739006

EquivalentClasses(:

422453004

323739006 ObjectIntersectionOf(:763158003 ObjectSomeValuesFrom(:609096000 ObjectSomeValuesFrom(:

127489000

762949000 :

74905005

427483001))))

422453004

323739006

73572009

27658006

0

116680003

422453004

323739006

74905005

427483001

1

127489000

762949000

127489000

SubObjectPropertyOf(ObjectPropertyChain(:127489000 :738774007) :127489000))

N/A

N/A


N/A

74905005

427483001

SubClassOf(:

74905005

427483001 ObjectIntersectionOf(:440327007 ObjectSomeValuesFrom(:738774007 :

373529000

372687004)))

74905005

427483001

440327007
373298001

0

116680003

74905005

427483001

373529000

0

738774007

372687004

0

738774007

427483001

768681000

0

726542003


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

  1. Read the Stated Form from RF2 files.

    1. The following files are required: Concept, OWL Ontology Reference Set, OWL Axiom Reference Set. 

    2. If the edition has any active stated relationships then the Stated Relationship and MRCM Attribute Domain Reference Set files are also required.

  2. Use the OWL API to infer the class hierarchy

    1. Build the Ontology object using:

      1. Axioms from the OWL Axiom Reference Set, making a note of any Transitive property and Property Chain axioms.

      2. 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.

    2. 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.org.snomed.otf.owltoolkit.normalform

  1. Walk the class hierarchy in a top-down, breadth first, order.

    1. For each class visited gather the stated attributes of this class and each inferred parent.

    2. Compare the attributes and remove those which are found to be redundant because they are less specific in terms of depth in the hierarchy.

    3. During this first pass build a hierarchy for property chains and transitive properties.

  2. Walk the class hierarchy again in the same order reducing the attributes of each class further.

    1. Compare the attributes and remove those which are found to be redundant because they are less specific in terms of depth in one of the alternate hierarchies.

For fine level detail the best source of information is the Java class org.snomed.otf.owltoolkit.normalform.RelationshipNormalFormGenerator which performs the Necessary Normal Form calculation.

Assignment for Role Group Number

It is important to clearly indicate if an attribute is grouped or not because 

Concept
ShowPartsterm
t609096000 |Role group (attribute)|
has impact to semantics and classification results. 
Concept
ShowPartsterm
t609096000 |Role group|
is represented by an integer in the field of relationshipGroup in the relationship file. In contrast,
Concept
ShowPartsterm
t609096000 |Role group|
 is represented by 
Concept
t609096000 |Role group (attribute)|
 as an object property in the OWL axiom refset. After the stated relationship file is replaced by the OWL expression refset, role group numbers need to be generated for inferred relationships.  

The following rules should be followed in the inferred relationship file to provide consistent representation aligned with the concept model diagram and the OWL axiom refset.

  1. All 

    Concept
    t116680003 |Is a|
     relationships should be assigned in role group 0;

  2. Attribute that is not grouped, not a value of 

    Concept
    ShowPartsterm
    t609096000 |Role group (attribute)|
     or grouped=0 in MRCM, should be assigned in role group 0;

  3. Attribute that is grouped, value of 
    Concept
    ShowPartsterm
    t609096000 |Role group (attribute)|
     or grouped=1 in MRCM, should be assigned a role group number that is not 0. Each 
    Concept
    ShowPartsterm
    t609096000 |Role group (attribute)|
     in the OWL axiom should be presented by a unique role group number. Note, role group merging is not covered here.

Concept
t609096000 |Role group (attribute)|
 is explicitly represented for self-grouped attributes where there is only a single attribute in a role group in an OWL axiom. However, these self-grouped attributes and values are not explicitly represented in the current relationship files. This representation has caused confusion if an attribute in role group 0 is grouped or not. The following example demonstrates the changes to assignment of role group number after the implementation of the complete OWL axiom refset.

An example for the current diagram representation for attribute in role group 0 in the stated relationship file and concept model diagram

sourceIddestinationIdrelationshipGrouptypeId
90708001640330070363698007


Image Added  


After the complete OWL axiom refset is implemented,

Concept
ShowPartsterm
t609096000 |Role group|
 in the OWL axiom refset and concept model diagram should be represented as following.

referencedComponentIdowlExpression
90708001

EquivalentClasses(:90708001 ObjectIntersectionOf(:64572001 ObjectSomeValuesFrom(:609096000 ObjectSomeValuesFrom(:363698007 :64033007))))

Image Added

Representation of 

Concept
ShowPartsterm
t609096000 |Role group|
in the NNF relationship file and concept model diagram

sourceIddestinationIdrelationshipGrouptypeId
907080017340450020116680003
907080014438200000116680003
907080012495780050116680003
90708001640330071363698007

Image Added