NIH | National Cancer Institute | NCI Wiki  

Error rendering macro 'rw-search'

null

Versions Compared

Key

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

...

Unified Medical Language System

The Unified Medical Language System (UMLS) and Rich Release Format (RRF)

...

Files

The UMLS' large medical thesaurus is available as a set of text based, "|' " separated files which can be made subset into individual terminologies depending on the user's needs. NCI's MetaThesaurus is also RRF formatted. We map individual terminologies, the entire NCI MetaThesaurus and the UMLS terminology SEMNET into LexGrid Using specific loaders and mappings for each.

  • Supported Coding Scheme Attributes:

...

  • These aren't mapped as categories to a model element. That is, a supported association has an attributeTag column with a corresponding name, but it's context is implied in the name of the supported attribute. For instance, supported associations will have an attributeTag of "association" but that tag corresponds to no element in the model element SupportedAssociation. Instead the context is implied in the name of the element SupportedAssociation.
  • Preferred Presentation Selection:

...

  • Preferred Presentation is determined first by sorting the presentations to include first those in the default language of the Terminology. Following that and given there is more than one presentation in the default language the "most preferred" is determined in the following manner:
    Using the "isPref" column, the "TS" and "STT" columns in the MRCONSO RRF file, or a combination of these columns. The MRRANK file overrides these columns.
  • Preferred Definition Selection:

...

  • Definitions in UMLs are not ranked, the first definition found for a concept in the source file MRDEF.RRF is set to preferred.
  • Special SNOMED adjustments for concept presentation language:

...

  • Snomed handles it's language default settings differently than other UMLS terminologies, we hard code it's default language as "en" as a result.
    Presentation language is determined by combining the values of SUI, LUI and CUI from MRCONSO and selecting the ATV value from MRSAT where SAB always equals SNOMEDCT and the ATN value is either LANGUAGECODE or SUBSETLANGUAGECODE.
  • Association Qualifiers for medDRA and others:

...

  • MedDRA employs SMQ's or Standardized Medical Queries as a method of classifying portions of this terminology. These are expressed in MRSAT.RRF when the AUI in the METAUI column is replaced by a RUI code. In LexBIG is RUI is identified in the MRREL.RRF source as relationships are loaded and the associated ATN and ATV values from the MRSAT.RRF row are populated as association qualifier name and value.
  • Hierarchies expressed in source contexts:

...

  • Hierarchies in the UMLS are expressed in the MRREL.RRF file as source, target pairs. However source hierarchies may also be expressed in the MRHEIR.RRF file. These context based hierarchies are realized in LexBIG by accessing the MRHEIR source where the HCD column value is populate. When this is the case, as in MESH, the path of AUI's to root from the code in the HCD column is processed as a hierarchy. LexBIG's behavior is as follows:

      ...

        • Entries in MRHIER that define multiple contexts (HCD field) per CUI will trigger additional tracking within the LexBIG environment.

      ...

        • Each link is tracked via the corresponding contextual chain(Path To Root field). To do this, we add association qualifiers that tag the association between each participating concept. The qualifier name is 'HCD' and the value will be the HCD field value from the MRHIER file.

      ...

        • An individual association between two concepts can participate in multiple context chains by assigning additional association qualifiers. A complete flow across the entire chain of links (essentially reconstructing PTR field) can be derived by recursive evaluation of surrounding links that have the same context qualifications. Since each concept can carry multiple text presentations, property qualifiers will be used to track the individual terms used in each context.

      ...

        • As with associations, multiple qualifiers can be assigned to each text property. Once again, the qualifier name will be 'HCD' and the value will be the HCD field value from the MRHIER file.

      ...

        • In order to query context-specific relationships, we can first use the API to filter the relationships a concept participates in, then query neighboring nodes to determine the complete context path, and finally map back to specific terms through the registered HCD qualifiers .

      OBO Mapping

      The OBO each remark in the document header will be combined and put into the coding scheme entityDescription.

      ...

      DatatypeProperty Representation

      Owl

      ...

      Code Block
      <owl:DatatypeProperty rdf:ID="currency">
                <rdfs:domain rdf:resource="#Money"/>
                <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#string"/>
           </owl:DatatypeProperty>

      In LexGrid, a DatatypeProperty is combination of a conceptProperty and Assocation.

      Concept Property

      Code Block
      <lgCon:concept id="Money">
            <lgCommon:entityDescription>Money</lgCommon:entityDescription>
            ....
           <lgCon:conceptProperty propertyId="P0003" propertyName="currency">
              <lgCommon:text>xsd:string</lgCommon:text>
            </lgCon:conceptProperty>
          </lgCon:concept>

      Association

      Code Block
      <lgRel:association id="hasDomain" forwardName="hasDomain" 
      isReflexive="false" isSymmetric="false" 
      isTransitive="true" reverseName="kindIsDomainOf">  
            <lgRel:sourceConcept sourceEntityType="association" 
      sourceId="currency">
              <lgRel:targetConcept targetEntityType="concept" 
      targetId="Money"/>
            </lgRel:sourceConcept>
      
       <lgRel:association id="currency">
            <associationProperty propertyId="P0007" 
      propertyName="isDatatypeProperty">
              <lgCommon:text>true</lgCommon:text>
            </associationProperty>
            <associationProperty propertyId="P0008" 
      propertyName="isObjectProperty">
              <lgCommon:text>false</lgCommon:text>
            </associationProperty>
          </lgRel:association>
      
       <lgRel:association id="datatype" forwardName="datatype">
            <lgRel:sourceConcept sourceEntityType="association" 
      sourceId="currency">
              <lgRel:targetDataValue dataId="D0001">
                <lgRel:dataValue>string</lgRel:dataValue>
              </lgRel:targetDataValue>

      Equivalent Class Representation

      Owl

      ...

      Code Block
      <owl:Class rdf:ID="Father">
          <owl:equivalentClass>
            <owl:Class>
              <owl:intersectionOf rdf:parseType="Collection">
                <owl:Class rdf:about="#Person"/>
                <owl:Restriction>
                  <owl:onProperty>
                    <owl:FunctionalProperty rdf:about="#hasSex"/>
                  </owl:onProperty>
                  <owl:hasValue rdf:resource="#MaleSex"/>
                </owl:Restriction>
                <owl:Restriction>
                  <owl:someValuesFrom rdf:resource="#Person"/>
                  <owl:onProperty>
                    <owl:ObjectProperty rdf:about="#hasChild"/>
                  </owl:onProperty>
                </owl:Restriction>
              </owl:intersectionOf>
            </owl:Class>
          </owl:equivalentClass>
        </owl:Class>

      In LexGrid, the equivalentClass is represented as an Association.

      Association

      Code Block
      <lgRel:association id="equivalentClass" 
      forwardName="equivalentClass" isReflexive="true" isSymmetric="true" 
      isTransitive="true" reverseName="equivalentClass"> 
        <lgRel:sourceConcept sourceEntityType="concept" sourceId="Father">
              <lgRel:targetConcept targetEntityType="concept" 	targetId="A38"/>
            </lgRel:sourceConcept>

      Restriction Representation

      Owl

      ...

      Code Block
      <owl:Class rdf:ID="Large-Format">
                <rdfs:subClassOf rdf:resource="#Camera"/>
                <rdfs:subClassOf>
                     <owl:Restriction>
                           <owl:onProperty rdf:resource="#body"/>
                           <owl:allValuesFrom rdf:resource="#BodyWithNonAdjustableShutterSpeed"/>
                     </owl:Restriction>
                </rdfs:subClassOf>
           </owl:Class>

      In LexGrid, a restriction is a combination of association and qualifier.

      Association

      ...

      Code Block
      <lgRel:association codingSchemeId="p1" id="body" 
      forwardName="body" isFunctional="false" 
      isReverseFunctional="false" 
      isSymmetric="false" isTransitive="false"> 
            <lgRel:sourceConcept sourceCodingScheme="p1" 
      sourceEntityType="concept" sourceId="Large-Format">
              <lgRel:targetConcept targetEntityType="concept" 
      targetId="BodyWithNonAdjustableShutterSpeed">
                <lgRel:associationQualification 
      associationQualifier="owl:allValuesFrom"/>
              </lgRel:targetConcept>
            </lgRel:sourceConcept>
            <associationProperty propertyId="P0021" 
      propertyName="isDatatypeProperty">
              <lgCommon:text>false</lgCommon:text>
            </associationProperty>
            <associationProperty propertyId="P0022" 
      propertyName="isObjectProperty">
              <lgCommon:text>true</lgCommon:text>
            </associationProperty>
          </lgRel:association>

      Additional Examples

      Owl

      ...

      Code Block
      <owl:Class rdf:ID="Father">
          <owl:equivalentClass>
            <owl:Class>
              <owl:intersectionOf rdf:parseType="Collection">
                <owl:Class rdf:about="#Person"/>
                <owl:Restriction>
                  <owl:onProperty>
                    <owl:FunctionalProperty rdf:about="#hasSex"/>
                  </owl:onProperty>
                  <owl:hasValue rdf:resource="#MaleSex"/>
                </owl:Restriction>
                <owl:Restriction>
                  <owl:someValuesFrom rdf:resource="#Person"/>
                  <owl:onProperty>
                    <owl:ObjectProperty rdf:about="#hasChild"/>
                  </owl:onProperty>
                </owl:Restriction>
              </owl:intersectionOf>
            </owl:Class>
          </owl:equivalentClass>
        </owl:Class>
      LexGrid

      ...

      Code Block
      <lgRel:association id="equivalentClass" 
      forwardName="equivalentClass" isReflexive="true" 
      isSymmetric="true" 
      isTransitive="true" reverseName="equivalentClass"> 
        <lgRel:sourceConcept sourceEntityType="concept" 
      sourceId="Father">
              <lgRel:targetConcept targetEntityType="concept" 	
      targetId="A38"/>
            </lgRel:sourceConcept>
      
      
       <lgRel:association codingSchemeId="" id="hasSex" 
      forwardName="hasSex" isFunctional="true" 
      isReverseFunctional="false" 
      isSymmetric="false" isTransitive="false"> 
          <lgRel:sourceConcept sourceEntityType="concept" 
      sourceId="A38">
              <lgRel:targetConcept targetEntityType="concept" 
      targetId="MaleSex">
                <lgRel:associationQualification 
      associationQualifier="owl:hasValue"/>
              </lgRel:targetConcept>
      
      <lgRel:association codingSchemeId="rdfs" id="subClassOf" 
      forwardName="subClassOf" isFunctional="false" 
      isReflexive="true" 
      isSymmetric="false" isTransitive="true" 
      reverseName="hasSubClass"> 
         <lgRel:sourceConcept sourceEntityType="concept" 
      sourceId="A38">
              <lgRel:targetConcept targetEntityType="concept" 
      targetId="Person"/>
            </lgRel:sourceConcept>
      
       <lgRel:association codingSchemeId="" id="hasChild" 
      forwardName="hasChild" isFunctional="false" 
      isReverseFunctional="false" isSymmetric="false" 
      isTransitive="false"> 
         <lgRel:sourceConcept sourceEntityType="concept" 
      sourceId="A38">
              <lgRel:targetConcept targetEntityType="concept" 
      targetId="Person">
                <lgRel:associationQualification 
      associationQualifier="owl:someValuesFrom"/>
              </lgRel:targetConcept>
      
      <lgCon:concept id="A38" isAnonymous="true">
            <lgCommon:entityDescription>Person and 
      (hasSex has MaleSex) 
      and (hasChild some Person)</lgCommon:entityDescription> 
            <lgCon:presentation propertyId="P0002" 
      propertyName="textualPresentation" isPreferred="true">
              <lgCommon:text>Person and (hasSex has MaleSex) and 
      (hasChild 
      some Person)</lgCommon:text>
            </lgCon:presentation>
            <lgCon:conceptProperty propertyId="P0001" 
      propertyName="type">
              <lgCommon:text>owl:intersectionOf</lgCommon:text>
            </lgCon:conceptProperty>
          </lgCon:concept>

      ...

      Anonymous LexGrid concepts are created for property restrictions (UnionOf, hasValue).

      Example 1

      Owl

      ...

      Code Block
      <owl:Class>
              <owl:unionOf rdf:parseType="Collection">
                <owl:Class rdf:about="#Hot"/>
                <owl:Class rdf:ID="Medium"/>
                <owl:Class rdf:about="#Mild"/>
              </owl:unionOf>
            </owl:Class>
      LexGrid

      ...

      Code Block
      <lgCon:concept id="A17" isAnonymous="true">
            <lgCommon:entityDescription>Hot or Medium or 
      Mild</lgCommon:entityDescription>
            <lgCon:presentation propertyId="P0001" 
      propertyName="textualPresentation" isPreferred="true">
              <lgCommon:text>Hot or Medium or Mild</lgCommon:text>
            </lgCon:presentation>
            <lgCon:conceptProperty propertyId="P0002" 
      propertyName="isUnion">
              <lgCommon:text>true</lgCommon:text>
            </lgCon:conceptProperty>
            <lgCon:conceptProperty propertyId="P0003" 
      propertyName="isIntersection">
              <lgCommon:text>false</lgCommon:text>
            </lgCon:conceptProperty>
            <lgCon:conceptProperty propertyId="P0004" 
      propertyName="isEnumeration">
              <lgCommon:text>false</lgCommon:text>
            </lgCon:conceptProperty>
          </lgCon:concept>

      Example 2

      Owl

      ...

      Code Block
                 <owl:Restriction>
                      <owl:onProperty rdf:resource="#hasTopping"/>
                      <owl:allValuesFrom>
                          <owl:Class>
                              <owl:unionOf rdf:parseType="Collection">
                                  <owl:Class rdf:about="#MozzarellaTopping"/>
                                  <owl:Class rdf:about="#PeperoniSausageTopping"/>
                                  <owl:Class rdf:about="#JalapenoPepperTopping"/>
                                  <owl:Class rdf:about="#TomatoTopping"/>
                                  <owl:Class rdf:about="#HotGreenPepperTopping"/>
                              </owl:unionOf>
                          </owl:Class>
                      </owl:allValuesFrom>
                  </owl:Restriction>
      LexGrid

      ...

      Code Block
      <lgRel:association id="hasTopping" forwardName="hasTopping" 
      isFunctional="false" isNavigable="true" isReverseFunctional="true" 
      isSymmetric="false" isTransitive="false">
      
          <lgRel:sourceEntity sourceCodingScheme="pizza" 
      sourceEntityType="concept" sourceId="AmericanHot">
              <lgRel:targetEntity targetCodingScheme="pizza" 
      targetEntityType="concept" targetId="A16">
                <lgRel:associationQualification 
      associationQualifier="owl:allValuesFrom"/>
              </lgRel:targetEntity>
            </lgRel:sourceEntity>
        </lgRel:association>
      
      
              <rdfs:subClassOf>
                  <owl:Restriction>
                      <owl:onProperty rdf:resource="#hasTopping"/>
                      <owl:allValuesFrom>
                          <owl:Class>
                              <owl:unionOf rdf:parseType="Collection">
                                  <owl:Class 
      rdf:about="#MozzarellaTopping"/>
                                  <owl:Class 
      rdf:about="#PeperoniSausageTopping"/>
                                  <owl:Class 
      rdf:about="#JalapenoPepperTopping"/>
                                  <owl:Class rdf:about="#TomatoTopping"/>
                                  <owl:Class 
      rdf:about="#HotGreenPepperTopping"/>
                              </owl:unionOf>
                          </owl:Class>
                      </owl:allValuesFrom>
                  </owl:Restriction>
              </rdfs:subClassOf>
      
      
      <lgCon:concept id="A16" isActive="true" isAnonymous="true">
            <lgCommon:entityDescription>MozzarellaTopping or 
      PeperoniSausageTopping or JalapenoPepperTopping or TomatoTopping or 
      HotGreenPepperTopping</lgCommon:entityDescription>
            <lgCon:presentation propertyId="P0002" 
      propertyName="textualPresentation" isPreferred="true">
              <lgCommon:text>MozzarellaTopping or PeperoniSausageTopping 
      or JalapenoPepperTopping or TomatoTopping or 
      HotGreenPepperTopping</lgCommon:text>
            </lgCon:presentation>
            <lgCon:conceptProperty propertyId="P0001" propertyName="type">
              <lgCommon:text>owl:unionOf</lgCommon:text>
            </lgCon:conceptProperty>
          </lgCon:concept>

      ...