NIH | National Cancer Institute | NCI Wiki  

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
{scrollbar:icons=false}
h1. {page-info:title}
{panel:title=Contents of this Page}
{toc:minLevel=2}
{panel}

h2. Overview

This section is part of the [LexEVS 5.0 Design and Architecture Guide]. It provides detail on how different formats are loaded into the LexEVS v5.0 model.

h2. Unified Medical Language System

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

h2. OBO Mapping

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

For example: 

{code}remark: autogenerated-by:     DAG-Edit version 1.320
remark: saved-by:             mariacos
remark: date:                 Fri Jun 27 09:41:28 EDT 2003
remark: version: $Revision: 1.1 ${code}

h2. Protege OWL


h3. DatatypeProperty Representation

h4. Owl

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

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

h4. Concept Property

{code}<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>{code}

h4. Association

{code}<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>{code}

h3. Equivalent Class Representation

h4. Owl

{code}<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>{code}

In LexGrid, the equivalentClass is represented as an Association.

h4. Association

{code}<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>{code}

h3. Restriction Representation

h4. Owl

{code}<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>{code}

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

h4. Association

{code}<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>{code}

h4. Additional Examples

h5. Owl

{code}<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>{code}


h5.  LexGrid

{code}<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>{code}

h3. Property Restriction Representation

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

h4. Example 1

h5. Owl

{code}<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>{code}

h5. LexGrid

{code}<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>{code}

h4. Example 2

h5. Owl
{code}           <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>{code}

h5. LexGrid

{code}<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>{code}

h2. NCI OWL

Top-level containers for relations are created, which separate the association types based on the notion of 'associations' and 'roles' as defined by NCI:

* Associations are "non-inheritable, non-defining relations between concepts"
* Roles are "inheritable relationships"

A LexGrid concept is created for every anonymous class present in the OWL ontology.

If no equivalent class for a concept, it is considered primitive and is indicated by creating a concept property set to 'true.'


h3. Embedded XML

Property text with embedded XML fragments are identified by by the following identifiers:

* qual-name
* qual-value
* qual

If the extracted tag is one of XML Text identifiers:
 
* Value
* term-name
* def-definition
* go-term

The text of the property is set to the tag value.

If the extracted tag is one of XML Source Name identifiers:

* term-source
* def-source

A property source is created and the tag value identifies the source.

If the property is a presentation and the extracted tag is XML Representational Form:

term-group

The representational form of the presentation property is set to the tag value.

If the extracted tag is one of DB XRef Prefix:

dbxref.*

A property qualifier is created.  The property qualifier id is set to the tag, the value is set to the tag value.

h2. HL7 RIM

h3. Building a Single Coding Scheme

To build a single coding scheme from the HL7 MS Access database, implementation is similar to how the NCI MetaThesaurus is stored in LexGrid.

For example, here is how entries MTHU021347 and MTHU033458 in ICPC2ICD10ENG (NCI MethThesaurus C1394796) are structured in LexGrid:

* *Coding Scheme:* NCI MetaThesaurus - urn:oid:2.16.840.1.113883.3.26.1.2
* *Concept Code:* C1394796
* *Entity Description:* decompensation; heart, senile
* *Status:* Active
* *Is Active:* true
* *Is Anonymous:* false
* *Presentation:* decompensation; heart, senile
* *Property Name:* textualPresentation
* *Property Id:* T-1
* *Language:* ENG
* *Is Preferred:* true
* *Representational Form:* PT
* *Source:* ICPC2ICD10ENG , *Role:* null, *SubRef:* null
* *Property Qualifier Id:* source-code , *Property Qualifier Content:* MTHU021347
* *Presentation:* heart; decompensation, senile
* *Property Name:* textualPresentation
* *Property Id:* T-2
* *Language:* ENG
* *Is Preferred:* false
* *Representational Form:* PT
* *Source:* ICPC2ICD10ENG , Role:''' null, SubRef: null
* *Property Qualifier Id:* source-code , *Property Qualifier Content:* MTHU033458
* *ConceptProperty:* Mental or Behavioral Dysfunction
* *Property Name:* Semantic_Type
* *Property Id:* SemType-1

In HL7, code systems, concepts, and designations are in the following tables:

The following table is for VCS_concept_code_xref.

|| Internal concept identifier || Code system || OID || Concept code || Case difference	Status ||
| 10011 | 2.16.840.1.113883.5.55 | M | 0 | A |
| 10011 | 2.16.840.1.113883.5.55 | R | 0 | A |
| 10013 | 2.16.840.1.113883.5.55 | RQ | 0 | A |
| 10014 | 2.16.840.1.113883.5.55 | NP | 0 | A |
| 10015 | 2.16.840.1.113883.5.55 | NR | 0 | A |
| 10016 | 2.16.840.1.113883.5.55 | RE | 0 | A |
| 10017 | 2.16.840.1.113883.5.55 | X | 0 | A |
| 10019 | 2.16.840.1.113883.5.57 | R | 0 | A |
| 10020 | 2.16.840.1.113883.5.57 | D | 0 | A |
| 10021 | 2.16.840.1.113883.5.57 | I | 0 | A |
| 10022 | 2.16.840.1.113883.5.57 | K | 0 | A |
| 10023 | 2.16.840.1.113883.5.57 | V | 0 | A |
| 10025 | 2.16.840.1.113883.5.57 | ESA | 0 | A |
| 10026 | 2.16.840.1.113883.5.57 | ESD | 0 | A |
| 10027 | 2.16.840.1.113883.5.57 | ESC | 0 | A |
| 10028 | 2.16.840.1.113883.5.57 | ESAC | 0 | A |

The following table is for VCS_concept_designation.

|| Internal Id || Designation || seq - for case differences || language || preferredForLanguage ||
| 10011 | Mandatory | 0 | en | -1 |
| 10011 | Required - V2.x | 0 | en | 0 |

The following table is a query of HL7 internal id, concept code and designation.

|| codeSystemName || Code system OID || Internal concept identifier || Concept code || Designation ||
| HL7ConformanceInclusion | 2.16.840.1.113883.5.55 | 10011 | R | Required - V2.x |
| HL7ConformanceInclusion | 2.16.840.1.113883.5.55 | 10011 | M | Mandatory |
| HL7ConformanceInclusion | 2.16.840.1.113883.5.55 | 10011 | M | Required - V2.x |
| HL7ConformanceInclusion | 2.16.840.1.113883.5.55 | 10011 | R | Mandatory |


h3. Representing HL7 in LexGrid
To represent HL7 in LexGrid:

* A single coding scheme will be created in LexGrid.
* Each *VCS_concept_code_xref.internalId* will be represented as a LexGrid Concept Code.
* The LexGrid Concept Code will be generated by the concatination of *VCS_concept_code_xref.internalId* and *VCS_concept_code_xref.conceptCode2* (separated by a colon ':' ).
* Not only the duplicates that exist within coding schemes will be dealt with using the id/mnemonic concatenation but also those duplicates that exist between coding schemes. 
* A LexGrid Concept Code Presentation Property will be created for each HL7 designation (VCS_concept_designation).
* The Presentation Property will include Presentation (HL7 Designation), Source (HL7 codeSystemName)  and a Property Qualifier of source-code (HL7 Concept Code).

For example, the following structure represents both HL7 10011 entries in code system 2.16.840.1.113883.5.55:

* *Coding Scheme:* HL7 - urn:oid:2.16.840.1.113883.3.26.1.2
* *Concept Code:* {highlight:blue}10011:M{highlight}
* *Entity Description:* >The message element must appear every time the message is communicated and its value must not be null.  This condition is subject to the rules of multiplicity and conditionality. If a non-null default value is defined for the element, a null value may be communicated.
* *Status:* Active
* *Is Active:* true
* *Is Anonymous:* false
* *Presentation:* {highlight:blue}Mandatory{highlight}
** *Property Name:* textualPresentation
** *Property Id:* T-1
** *Language:* ENG
** *Is Preferred:* true
** *Representational Form:* PT
** *Source:* {highlight:blue}HL7ConformanceInclusion{highlight} , *Role:* null, *SubRef:* null
** *Property Qualifier Id:* {highlight:blue}source-code{highlight} , *Property Qualifier Content:* {highlight:blue}M{highlight}
* *Presentation:* {highlight:blue}Required - V2.x{highlight}
** *Property Name:* textualPresentation
** *Property Id:* T-2
** *Language:* ENG
** *Is Preferred:* false
** *Representational Form:* PT
** *Source:* {highlight:blue}HL7ConformanceInclusion{highlight} *Role:* null, *SubRef:* null
** *Property Qualifier Id:* {highlight:blue}source-code{highlight} , *Property Qualifier Content:* {highlight:blue}M{highlight}
* *Coding Scheme:* HL7 - urn:oid:2.16.840.1.113883.3.26.1.2
* *Concept Code:* {highlight:blue}10011:R{highlight}
* *Entity Description:* >The message element must appear every time the message is communicated and its value must not be null.  This condition is subject to the rules of multiplicity and conditionality. If a non-null default value is defined for the element, a null value may be communicated.
* *Status:* Active
* *Is Active:* true
* *Is Anonymous:* false
* *Presentation:* {highlight:blue}Mandatory{highlight}
** *Property Name:* textualPresentation
** *Property Id:* T-1
** *Language:* ENG
** *Is Preferred:* true
** *Representational Form:* PT
** *Source:* {highlight:blue}HL7ConformanceInclusion{highlight} , *Role:* null, *SubRef:* null
** *Property Qualifier Id:* {highlight:blue}source-code{highlight} , *Property Qualifier Content:* {highlight:blue}R{highlight}
* *Presentation:* Required - V2.x
** *Property Name:* textualPresentation
** *Property Id:* T-2
** *Language:* ENG
** *Is Preferred:* false
** *Representational Form:* PT
** *Source:* {highlight:blue}HL7ConformanceInclusion{highlight}, *Role:* null, *SubRef:* null
** *Property Qualifier Id:* {highlight:blue}source-code{highlight} , *Property Qualifier Content:* {highlight:blue}R{highlight}

h3. Loading the HL7 RIM as a Monolithic Coding Scheme
To load the HL7 Rim as a monolithic coding scheme:

# Load coding scheme data as HL7 Rim Metadata from the Model table (rather than the coding scheme data for each HL7 coding scheme).
## Mapping of these values will be incomplete:
### Mapping proposal:
|| LexGrid || HL7 RIM ||
| <codingSchemeName> | <modelID> |
| <formalName> | <name> |
| <registeredName> | http://www.hl7.org/Library/data-model/RIM * |
| <defaultLanguage> | en* |
| <representsVersion> | <versionNumber> |
| <isNative> | 0* |
| <approximateNumberofConcepts> | Result of count on concept bearing table? |
| <firstRelease> | MISSING |
| <modifiedInRelease> | MISSING |
| <deprecated> | MISSING |
| <entityDescription> | <description> |
| <copyright> | MISSING |	
## No URN exists and we may need to consider creating one (see entry for registeredName).
# Locate and load all mappings (such as supportedAssociations and supportedProperties).
## Create a supportedHiearchy with a root node of @ on hasSubtype?
# Iterate through the code system table rows and get each coding scheme.
## Create and persist an "@" node in the database
## Prepare an artificial "top node" for each coding scheme.  (Metadata persisted here as concept properties?)  This will result in 250 top nodes. 
### The artificial top nodes will need to have a concept code created for them.
### Attach to "@" the artificial top nodes as a hasSubtype.
### Locate the actual top nodes of each coding scheme by querying the relations table to see  if they exist as a target code, if not, they are top nodes so attach them to the artificial top node via hasSubtype.
## Translate the RRF source property loads to the EMF world.
### Load the concepts ensuring that the coding scheme name is loaded as a "source" property
### Load the relations ensuring that the source and target coding scheme data is loaded with the coding scheme name.
# Concurrent to this process create an updated "HL7 RIM to LexGrid for NCI" mapping from the current Excel mapping document.

h2. LexGrid Text

The text files that can be imported must use the following formats.  Items surrounded by <> are required.  Items further surrounded by [] are optional.  \t represents a tab - the default delimiter - however other delimiters may be used.

Lines beginning with # are comments.
 
h3. Format A
 
{code}<codingSchemeName>\t<codingSchemeId>\t<defaultLanguage>\t<formal
Name>[\t<version>][\t<source>][\t<description>][\t<copyright>]
<name1>[\t <description>] 
\t <name2>[\t <description>] 
\t\t <name3>[\t <description>]
\t\t <name4>[\t <description>]{code}
 
*  The leading tabs represent hierarchical "hasSubtype" relationship nesting:
(name1 hasSubtype name2 and name2 hasSubtype name3)
*  Concept Codes will be automatically generated.
* If a name is used more than once - it will be assigned the same code.  
* If a description is used more than once (for a given name) only the first description will be stored.
 
h3. Format B

In this format, concept codes can be provided.  This is the same as "Format A" with the inclusion of concept codes as part of the input. 
 
{code}<code>\t<name>[\t<description>]{code}
 
If the same code occurs twice, the names must match.  Description rules same as "Format A."

h3. Example of Format A

{code}
<nowiki>#</nowiki>lines starting with "#" are comments

<nowiki>#</nowiki>blank lines are ok 

<nowiki>#</nowiki>the first "real" line of the file must be of the following format:
<nowiki>#</nowiki><codingSchemeName>\t<codingSchemeId>\t<defaultLanguage>\t<formalName>[\t<version>][\t<source>][\t<description>][\t<copyright>]

colors	1.2.3	en	colors coding scheme	 1.0	Someone's Head	a simple example coding scheme using colors	This isn't worth copyrighting

<nowiki>#</nowiki>The rest of the file (for format A) should look like this:

Color	        Holder of colors
Red
Green	        The color Green
Light Green	foobar
Dark Green	The color dark green
Blue
Red
Green	        The color Green
{code}

h3. Example of Format B

{code}
<nowiki>#</nowiki>lines starting with "#" are comments

<nowiki>#</nowiki>blank lines are ok 

<nowiki>#</nowiki>the first "real" line of the file must be of the following format:
<nowiki>#</nowiki><codingSchemeName>\t<codingSchemeId>\t<defaultLanguage>\t<formalName>[\t<version>][\t<source>][\t<description>][\t<copyright>]

colors2	1.2.4	en	colors coding scheme	1.1	Someone's Head	a simple example coding scheme using colors	This isn't worth copyrighting

<nowiki>#</nowiki>The rest of the file (for format B) should look like this:

1	Color	             Holder of colors
4	Red
6	Green	             The color Green
7	Light Green
8	Dark Green
5	Blue
8	Dark Green	     The color dark green
6	Green	             A different color of green
{code}

h2. LexEVS Loader Mappings

The following sections give detailed mappings from source formats to LexEVS.

h3. OWL Mapping - 4.2.1

The following table is for OWL Mapping - Protégé (4.2.1).

|| OWL Element||LexGrid||Comments ||
|| OWL:  RDF Schema Features || || ||
| owl:ontology | codingScheme | |
| xml:lang | codingScheme.defaultLanguage | Default is 'en' |
| dc:title | codingScheme.formalName | |
| rdfs:label | codingScheme.localName | |
| URI | codingScheme.registeredName | |
| owl:versionInfo | codingScheme.representsVersion | Default is 'UNASSIGNED' |
| dc:rights | codingScheme.copyright | |
| | | |
| owl:Class (Thing, Nothing) | concept | | 
| rdf:ID | concept.conceptCode | |
| | concept.isActive | Hard coded as "Active" | |
| | concept.isAnonymous | |
| rsfs:label | concept.entityDescription | |
| rdf:comment | concept.comment | |
| | | | 
| rdfs:subClassOf | association | |
| | association.id = "subClassOf" | |
| | association.forwardName = "subClassOf" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |
| | association.isSymmetric="false" | |
| | association.isTransitive="true" | |
| rdf:Property (ObjectProperty) | association | An association between two classes (hasDomain, hasRange) |
| | | |
| | association
concept.conceptProperty | An association between one class (domain) and one asscoication (hasDomain and hasDataProperty).  The conceptProperty defines the range. |
| | | |
| rdfs:subPropertyOf | association | |
| | association.id = "subPropertyOf" | |
| | association.forwardName = "subPropertyOf" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |
| | association.isSymmetric="false" | |
| | association.isTransitive="true" | |
| | | |
| rdfs:domain | association | |
| | association.id = "hasDomain" | |
| | association.forwardName = "hasDomain" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="false" | |
| | association.isSymmetric="false" | |
| | association.isTransitive="true" | |
| | | |
| rdfs:range | association | |
| | association.id = "hasRange" | |
| | association.forwardName = "hasRange" | | 
| | association.isNavigable = "true" | |
| | association.isReflexive="false" | |
| | association.isSymmetric="false" | | 
| | association.isTransitive="false" | |
| | | |
| Individual | association | A 'hasInstance' association is created.  (ie. sourceId = Country, targetId = America) |
| | association.id = "hasInstance" |
|| OWL (In)Equality || || ||
| owl:equivalentClass | association | |
| | association.id = "equivalentClass" | |
| | association.forwardName = "equivalentClass" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |
| | association.isSymmetric="true" | |
| | association.isTransitive="true" | |
| | association.reverseName="equivalentClass" | |
| | | |
| owl:equivalentProperty | association | |
| | association.id = "equivalentProperty" | |
| | association.forwardName = "equivalentProperty" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |
| | association.isSymmetric="true" | |
| | association.isTransitive="true" | |
| | association.reverseName="equivalentProperty" | |
| | | |
| owl:sameAs | association | |
| | association.id = "sameAs" | | 
| | association.forwardName = "sameAs" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |
| | association.isSymmetric="true" | |
| | association.isTransitive="true"	| |
| | association.reverseName="sameAs" | |
| | | |
| differentFrom | association | |
| | association.id = "differentFrom" | |
| | association.forwardName = "differentFrom" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | | 
| | association.isSymmetric="true" | |
| | association.isTransitive="true" | |
| | association.reverseName= "differentFrom" | |
| | | |
| owl:AllDifferent | association | |
| | association.id = "AllDifferent" | |
| | association.forwardName = "AllDifferent" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |
| | association.isSymmetric="true" | |
| | association.isTransitive="true" | |
| | association.reverseName= "AllDifferent" | |
| | | |
|| || OWL:  Property Characteristics || || ||
| owl:inverseOf | association | |
| | association.id = "inverseOf" | |
| | association.forwardName = "inverseOf" | |
| | association.isFunctional = "false" | | 
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | | 
| | association.isSymmetric="true" | |
| |association.isTransitive="true" | |
| |association.reverseName="inverseOf" | |
| | | |
| owl:TransitiveProperty | association.isTransitive | association property 'isTransitive' |
| owl:SymmetricProperty | association.isSymmetric | association property 'isSymmetric' |
| owl:InverseFunctionalProperty | association.isReverseFunctional | association property 'isReverseFunctional' |
| owl:FunctionalProperty | association.isFunctional | association property 'isFunctional' |
|| OWL:  Property Restrictions || || ||
| owl:Restriction | concept | Create an anonymous concept for the restriction |
| | concept.id | System generated |
| | concept.isActive = true | |
| | concept.isAnonymous = true | Hardcoded "True" |
| | | |
| owl:onProperty | association.id | |
| | | |
| owl: allValuesFrom | concept.entityDescription | String of allValuesFrom values |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of allValuesFrom values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:unionOf" | |
| | | |
| owl: someValuesFrom | concept.entityDescription | String of someValuesFrom values |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of someValuesFrom values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| owl:intersectionOf | concept.entityDescription | String of intersectionOf values (ie. Pizza and not VegetarianPizza) |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of intersectionOf values (ie. Pizza and not VegetarianPizza) |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| UnionOf | concept.conceptProperty.text = "owl:unionOf" |
| | | |
| owl:complementOf | association | association.id = "subClassOf" |
| | | |
| owl:oneOf | concept.entityDescription | String of oneOf values |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of oneOf values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| owl:hasValue | associationQualification.nameAndValueList.content | |
| owl:minCardinality | concept.entityDescription | String of minCardinality Values (ie.  (hasTopping min 3) and Pizza) |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of minCardinality Value (ie.  (hasTopping min 3) and Pizza) |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| owl:maxCardinality | concept.entityDescription | String of maxCardinality Values (ie.  (hasTopping max 2) and Pizza) |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of maxCardinality Values (ie.  (hasTopping max 2) and Pizza) |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | String of cardinality Values |
| owl:cardinality | concept.entityDescription | |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of cardinality Values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | | 
| | | |
| owl:disjointWith | association | association.id = "disjointWith" |
|| OWL:  Annotation Property || || ||
| rdfs:label | Presentation | |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. | |
| | concept.presentation.propertyName = "textualPresentation" | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | Value of rdfs:label |
| | | |
| rdfs:comment | Comment | |
| | concept.comment.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.comment.propertyName = "comment" | Hardcoded "comment" |
| | concept.presentation.text | Value of rdfs:comment |
| | | |
| rdfs:seeAlso | conceptProperty | |
| rdfs:isDefinedBy | conceptProperty | |
|| OWL:  Versioning || || ||
| owl:versionInfo | codingScheme.representsVersion | |
| priorVersion | Not Mapped | |
| backwardCompatibleWith | Not Mapped | | 
| owl:incompatibleWith | association | |
| | association.id = "incompatibleWith" | |
| | association.forwardName = "incompatibleWith" | |
| | association.isFunctional = "false" | |
| | association.isNavigable = "true" | |
| | association.isReflexive="true" | |	
| | association.isSymmetric="true" | |	
| | association.isTransitive="true" | |
| | association.reverseName="incompatibleWith" | |
| DeprecatedClass | Concept attribute setIsActive = false | Not Mapped |
| DeprecatedProperty | Not Mapped | |


h3. OWL Mapping - 5.0

| *OWL Mapping - Protégé (5.0)* |
|| OWL Element || LexEVS || Comments ||
|| OWL:  RDF Schema Features || || ||
| owl:ontology | codingScheme |
| xml:lang | codingScheme.defaultLanguage | Default is 'en' |
| dc:title | codingScheme.formalName |
| rdfs:label | codingScheme.localName |
| URI | codingScheme.registeredName |
| owl:versionInfo | codingScheme.representsVersion | Default is 'UNASSIGNED' |
| dc:rights | codingScheme.copyright |
| |
| owl:Class (Thing, Nothing) | concept |
| rdf:ID | concept.conceptCode |
| | concept.isActive | Hard coded as "Active" |
| | concept.isAnonymous |
| | concept.isDefined |
| rsfs:label | concept.entityDescription |
| rdf:comment | concept.comment |
| |
| rdfs:subClassOf | association |
| | association.id = "subClassOf" |
| | association.forwardName = "subClassOf" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| rdf:Property (ObjectProperty) | association | An association between two classes (domain, range) |
| |
| rdf:Property (DatatypeProperty) | association
concept.conceptProperty | An association between one class (domain) and one asscoication (domain and hasDataProperty).  The conceptProperty defines the range. |
| |
| rdfs:subPropertyOf | association |
| | association.id = "subPropertyOf" |
| | association.forwardName = "subPropertyOf" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| rdfs:domain | association |
| | association.id = "domain" |
| | association.forwardName = "domain" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| rdfs:range | association |
| | association.id = "range" |
| | association.forwardName = "range" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| Individual | association | An 'instance' association is created.  (ie. sourceId = Country, targetId = America) |
| | association.id = "instance" |
|| OWL (In)Equality || || ||
| owl:equivalentClass | association |
| | association.id = "equivalentClass" |
| | association.forwardName = "equivalentClass" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| |
| owl:equivalentProperty | association |
| | association.id = "equivalentProperty" |
| | association.forwardName = "equivalentProperty" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| |
| owl:sameAs | association |
| | association.id = "sameAs" |
| | association.forwardName = "sameAs" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| |
| differentFrom | association |
| | association.id = "differentFrom" |
| | association.forwardName = "differentFrom" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| | association.reverseName= "differentFrom" |
| |
| owl:AllDifferent | association |
| | association.id = "AllDifferent" |
| | association.forwardName = "AllDifferent" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| | association.reverseName= "AllDifferent" |
| |
|| OWL:  Property Characteristics || || ||
| owl:inverseOf | association |
| | association.id = "inverseOf" |
| | association.forwardName = "inverseOf" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| |
| owl:TransitiveProperty | association.isTransitive | association property 'isTransitive' |
| owl:SymmetricProperty | association.isSymmetric | association property 'isSymmetric' |
| owl:InverseFunctionalProperty | association.isReverseFunctional | association property 'isReverseFunctional' |
| owl:FunctionalProperty | association.isFunctional | association property 'isFunctional' |
|| OWL:  Property Restrictions || || ||
| owl:Restriction | concept | Create an anonymous concept for the restriction |
| | concept.id | System generated |
| | concept.isActive = true |
| | concept.isAnonymous = true | Hardcoded "True" |
| |
| owl:onProperty | association.id |
| |
| owl: allValuesFrom | concept.entityDescription | String of allValuesFrom values |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of allValuesFrom values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:unionOf" |
| |
| owl: someValuesFrom | concept.entityDescription | String of someValuesFrom values |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of someValuesFrom values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| |
| owl:intersectionOf | concept.entityDescription | String of intersectionOf values (ie. Pizza and not VegetarianPizza) |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of intersectionOf values (ie. Pizza and not VegetarianPizza) |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| UnionOf | concept.conceptProperty.text = "owl:unionOf" |
| |
| owl:complementOf | association | association.id = "subClassOf" |
| |
| owl:oneOf | concept.entityDescription | String of oneOf values |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of oneOf values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| owl:hasValue | associationQualification.nameAndValueList.content |
| owl:minCardinality | concept.entityDescription | String of minCardinality Values (ie.  (hasTopping min 3) and Pizza) |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of minCardinality Value (ie.  (hasTopping min 3) and Pizza) |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| owl:maxCardinality | concept.entityDescription | String of maxCardinality Values (ie.  (hasTopping max 2) and Pizza) |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of maxCardinality Values (ie.  (hasTopping max 2) and Pizza) |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | String of cardinality Values | |
| owl:cardinality | concept.entityDescription | |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | String of cardinality Values |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| owl:disjointWith | association | association.id = "disjointWith" |
|| OWL:  Annotation Property || || ||
| rdfs:label | Presentation |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName = "textualPresentation" | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | Value of rdfs:label |
| |
| rdfs:comment | Comment |
| | concept.comment.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.comment.propertyName = "comment" | Hardcoded "comment" |
| | concept.presentation.text | Value of rdfs:comment |
| |
| rdfs:seeAlso | conceptProperty |
| rdfs:isDefinedBy | conceptProperty |
|| OWL:  Versioning || || ||
| owl:versionInfo | codingScheme.representsVersion |
| priorVersion | Not Mapped |
| backwardCompatibleWith | Not Mapped |
| owl:incompatibleWith | association |
| | association.id = "incompatibleWith" |
| | association.forwardName = "incompatibleWith" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| DeprecatedClass | Concept attribute setIsActive = false | Not Mapped |
| DeprecatedProperty | Not Mapped |

h3. OWL Mapping - NCI OWL

| *OWL Mapping - NCI OWL* |
|| OWL Element || LexGrid || Comments ||
|| OWL:  RDF Schema Features || || ||
| owl:ontology | codingScheme | Hardcoded "NCI_Thesaurus" |
| xml:lang | codingScheme.defaultLanguage | Hardcoded "en" |
| dc:title | codingScheme.formalName | Hardcoded "NCI Thesaurus" |
| rdfs:label | codingScheme.localName | Hardcoded "NCI_Thesaurus" |
| | Hardcoded "40010" |
| | Hardcoded "urn:oid:2.16.840.1.113883.3.26.1.1" |
| URI | codingScheme.registeredName | Hardcoded "http://ncicb.nci.nih.gov/xml/owl/EVS/Thesaurus.owl#" |
| owl:versionInfo | codingScheme.representsVersion |
| dc:rights | codingScheme.copyright | Read from hardcoded "Terms.txt" file . |
| rdfs:comment | codingScheme.entityDescription |
| | codingScheme.isNative | Hardcoded "true" |
| |
| owl:Class (Thing, Nothing) | concept |
| code | concept.id |
| | concept.isActive | Hard coded as "true" unless class "owl:DeprecatedClass", then 'false' |
| | concept.isAnonymous |
| rsfs:label | concept.entityDescription |
| rdf:comment | concept.comment |
| |
| | conceptProperty | Indicate whether the concept is primative (has no equavalent classes) |
| | concept.conceptProperty.propertyName | Hard coded as "primitive" |
| | concept.conceptProperty.text | "true" |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| |
| | presentation | Provide default presentation to match concept entity description if not provided as property |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "NCI_Preferred_Term" |
| rdfs:label | concept.presentation.text | concept.entityDescription |
| |
| | conceptProperty | Property with designated concept name label (per NCI requirements and used in codeToName/nameToCode lookup). |
| | concept.conceptProperty.propertyName | Hard coded as "CONCEPT_NAME" |
| rdfs:label | concept.conceptProperty.text | concept.entityDescription |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| |
| | relation | Top-level container for associations (non-inheritable, non-defining relationships between concepts. |
| | relations.dc | Hard coded as "associations" |
| | relations.isNative | Hard coded as "true" |
| | relations.entityDescription | Hard coded as "Non-inheritable non-defining relations." |
| |
| | relation | Top-level container for roles (inheritable relationships) |
| | relations.dc | Hard coded as "roles" |
| | relations.isNative | Hard coded as "true" |
| | relations.entityDescription | Hard coded as "Inheritable/defining relations." |
| |
| rdfs:subClassOf | association | Association for subtype hierarchy. |
| | association.id = "hasSubtype" |
| | association.forwardName = "hasSubtype" |
| | association.reverseName = "isA" |
| | association.isNavigable = "true" | Hard coded as "true" |
| | Hard coded as "true" |
| | Hard coded as "false" |
| | Hard coded as "true" |
| |
| hasElement | association | Association used to register component classes as elements of anonymous node representations. |
| | association.id = "hasElement" |
| | association.forwardName = "hasElement" |
| | association.isNavigable = "true" | Hard coded as "true" |
| | Hard coded as "false" |
| | Hard coded as "true" |
| |
| rdfs:domain | association | Association for role_has_domain relations |
| | association.id = "Role_Has_Domain" |
| | association.forwardName = "roleHasDomain" |
| | association.reverseName = "kindIsDomainOf" |
| | association.isNavigable = "true" | Hard coded as "true" |
| | Hard coded as "false" |
| | Hard coded as "false" |
| | Hard coded as "true" |
| |
| rdfs:range | association | Association for range relations |
| | association.id = "Role_Has_Range" |
| | association.forwardName = "roleHasRange" |
| | association.reverseName = "kindIsRangeOf" |
| | association.isNavigable = "true" | Hard coded as "true" |
| | Hard coded as "false" |
| | Hard coded as "false" |
| | Hard coded as "false" |
| |
| |
| |
| rdf:Property (ObjectProperty) | association | An association between two classes (hasDomain, hasRange) |
| |
| |
| rdfs:subPropertyOf | Not Mapped |
| |
| |
|| OWL (In)Equality || || ||
| |
| owl:equivalentClass | association | Association for equivalent class. |
| | association.id = "equivalentClass" |
| | association.forwardName = "equivalentClass" |
| | association.reverseName = "equivalentClass" |
| | association.isNavigable = "true" | Hard coded as "true" |
| | Hard coded as "true" |
| | Hard coded as "true" |
| | Hard coded as "true" |
| |
|| OWL:  Property Characteristics || || ||
| owl:inverseOf | association |
| | association.id = "inverseOf" |
| | association.forwardName = "inverseOf" |
| | association.isFunctional = "false" |
| | association.isNavigable = "true" |
| |
| |
| |
| |
| |
| owl:TransitiveProperty | association.isTransitive | association property 'isTransitive' |
| owl:SymmetricProperty | association.isSymmetric | association property 'isSymmetric' |
| owl:InverseFunctionalProperty | association.isReverseFunctional | association property 'isReverseFunctional' |
| owl:FunctionalProperty | association.isFunctional | association property 'isFunctional' |
|| OWL:  Property Restrictions || || ||
| owl:Restriction | concept | Anonymous concept created. |
| | concept.entityDescription = "RestrictionOn: " + association name | Concatination of "Restriction On: "  and assocation name |
| | concept.isAnonymous = true |
| |
| owl: allValuesFrom | associationQualification.association.Qualifier = "AllValuesFrom" |
| owl: someValuesFrom | associationQualification.association.Qualifier = "someValuesFrom" |
| owl:intersectionOf | concept.entityDescription | Concatination of "Restriction On: "  and assocation name |
| | concept.isAnonymous = true |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | Set to concept.entityDescription |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:intersectionOf" | |
| | | |
| |
| owl:unionOf | concept.entityDescription | Concatination of "Restriction On: "  and assocation name |
| | concept.isAnonymous = true |
| | concept.presentation.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyName | Hardcoded "textualPresentation" |
| | concept.presentation.isPreferred = true | Hardcoded "true" |
| | concept.presentation.text | Set to concept.entityDescription |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = type | Hardcoded "type" |
| | concept.conceptProperty.text = "owl:unionOf" |
| |
| |
| owl:oneOf | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName = "owl:oneOf" | Hardcoded "owl:oneOf" |
| | concept.conceptProperty.text | String of oneOf values |
| |
|| OWL:  Annotation Property || || ||
| rdfs:comment | Comment |
| | concept.comment.propertyId | Generated value for property textual presentation using "P" concatenated with a steadily incremented numerical value. |
| | concept.comment.propertyName = "comment" | Hardcoded "comment" |
| | concept.presentation.text | Value of rdfs:comment |
| |
| rdfs:seeAlso | conceptProperty |
| rdfs:isDefinedBy | conceptProperty |
|| OWL:  Versioning || || ||
| owl:versionInfo | codingScheme.representsVersion |
| priorVersion | Not Mapped |
| backwardCompatibleWith | Not Mapped |
| DeprecatedClass | Not Mapped |
| DeprecatedProperty | Not Mapped |
{code}

h3. Legacy Complex Prop Mapping
{code}
| *Legacy Complex Properties Mapping* |
| tag | presentation | source | represenational form | qualifier | model element | value column name | model element |
| |
| go-term | x | propertyValue |
| go-id | x | propertyQualifierId | val1 | PropertyQualifier attribute content? |
| go-source | x | propertyQualifierId | val1 | PropertyQualifier attribute content? |
| source-date | x | propertyQualifierId | val1 | PropertyQualifier attribute content? |
| |
| term-name | x | propertyValue |
| term-group | x | representationalForm | property attribute |
| term-source | x | attributeValue | source |
| |
| def-source | x | attributeValue | source |
| def-definition | x | propertyValue | definition |
| Definition_Review_Date | x | propertyQualifierId | val1 | PropertyQualifier attribute content? |
| Definition_Reviewer_Name | x | propertyQualifierId | val1 | PropertyQualifier attribute content? |

h3. UMLS SemNet Mapping

| *UMLS SemNet Mapping* |
|| _RRF File Name_ || _RRF Column Name_ || _RRF Definition_ || _NCI Meta only_ || _LexGrid Model Element_ || _comments_ ||
| <big>*Coding Scheme*</big> |
| | codingScheme.representsVersion |
| | codingScheme.codingScheme | hard coded in java file as "UMLS_SemNet" |
| | codingScheme.formalName | hard coded in java file as "UMLS Semantic Network" |
| | codingScheme.defaultLanguage | hard coded in java file as "en" |
| | codingScheme.approxNumConcepts | hard coded in java file as |
| | codingScheme.entityDescription | hard coded in java file as "The UMLS Semantic Network is one of three UMLS Knowledge Sources developed as part of the Unified Medical Language System project. The network provides a consistent categorization of all concepts represented in the UMLS Metathesaurus." |
| license.txt | codingScheme.copyright | Read from license.txt file or hard coded reference in java file |
| | codingScheme.registeredName | hard coded in java file as "urn:lsid:nlm.nih.gov:semnet" |
| | codingScheme.concepts.dc | hard coded in java file as "concepts" |
| | codingScheme.relations.dc | hard coded in java file as "relations" |
| | codingScheme.mappings.dc | hard coded in java file as "mappings" |
| |
| | codingScheme.localNameList |
| | codingScheme.localNameList. | hard coded in java file as "UMLS_SemNet" |
| | codingScheme.localNameList |
| | codingScheme.localNameList. |
| | codingScheme.source |
| | codingScheme.source.content |
| | codingScheme.localNameList |
| | codingScheme.localNameList. |
| | codingScheme.localNameList |
| | codingScheme.localNameList. |
| | codingScheme.localNameList |
| | codingScheme.localNameList. |
| | codingScheme.localNameList |
| | codingScheme.localNameList. |
| | mappings.supportedFormat |
| | mappings.supportedFormat.localId | hard coded in java file as "text/plain" |
| | mappings.supportedFormat.urn | hard coded in java file as "urn:oid:2.16.840.1.113883.6.10:text_plain" |
| | mappings.supportedAssociation |
| SRDEF | RL | mappings.supportedAssociation.localId |
| | mappings.supportedContext |
| | mappings.supportedSource |
| | mappings.supportedSource.localId | hard coded in java file as "NLM" |
| | mappings.supportedSource.urn | hard coded in java file as "urn:lsid:nlm.nih.gov" |
| | mappings.supportedHierarchy |
| | mappings.supportedHierarchy.localId | hard coded in java file as "is_a" |
| | mappings.supportedHierarchy.isForwardNavigable | hard coded as "true" |
| | mappings.supportedHierarchy.rootCode | hard coded as "@" |
| | mappings.supportedHierarchy.associationList | hard coded in java file as "hasSubtype" |
| | mappings.supportedAssociationQualifier |
| SRFLD | COL | mappings.supportedProperty |
| | mappings.supportedProperty.localId | If SRDEF appears in the FIL column then this is treated a potential supported property and is entered in supported properties as such. |
| | mappings.supportedProperty.urn | hard coded in java file as "" |
| | mappings.supportedLanguage |
| | mappings.supportedLanguage.localId | hard coded in java file as "en" |
| | mappings.supportedLanguage.urn | hard coded in java file as "urn:oid:2.16.840.1.113883.6.84:en" |
| | mappings.supportedCodingScheme |
| | mappings.supportedCodingScheme.localId | hard coded in java file as "UMLS_SemNet" |
| | mappings.supportedCodingScheme.urn | hard coded in java file as "urn:lsid:nlm.nih.gov:semnet" |
| | mappings.supportedRepresentationalForm |
| | mappings.supportedConceptStatus |
| | mappings.supportedPropertyLink |
| | mappings.supportedPropertyQualifier |
| | mappings.supportedDataType |
| <big>*Concepts*</big> |
| SRDEF | UI | concept.id(inherited from Entity) |
| SRDEF | STY/RL | concept.enitityDescription(inheritance path Entity->versionableAndDescribable) |
| | concept.conceptProperty |
| SRDEF | NH | concept.conceptProperty.text.content |
| | concept.conceptProperty.format | hard coded in java file as "text/plain" |
| | concept.conceptProperty.propertyName | hard coded in java file as "NH" |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation |
| | concept.presentation.propertyName (inherited from Property) | Hard coded in java file as "STY/RL" or "ABR" |
| | concept.presentation.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| SRDEF | STY/RL, ABR | concept.presentation.text.content |
| | concept.presentation.format | hard coded in java file as "text/plain" |
| | concept.presentation.isPreferred | hard coded in java file as true. |
| | concept.definition.propertyName (inherited from Property) | Hard coded in java file as "DEF" |
| | concept.definition.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| SRDEF | DEF | concept.definition.text.content |
| | concept.definition.format | hard coded in java file as "text/plain" |
| | concept.definition.isPreferred | hard coded in java file as true. |
| | concept.comment |
| SRDEF | EX | concept.comment.propertyName (inherited from Property) | Hard coded in java file as "EX" |
| | concept.comment.text.content |
| | concept.comment.format | hard coded in java file as "text/plain" |
| | concept.comment.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.instruction |
| | concept.instruction.propertyName (inherited from Property) | Hard coded in java file as "UN" |
| SRDEF | UN | concept.instruction.text.content |
| | concept.instruction.format | hard coded in java file as "text/plain" |
| | concept.instruction.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| |
| <big>*Relations*</big> |
| SRSTR | RL | association.id (inherited from Entity) | In the case of RL value is "isa" the id is hard coded to hasSubtype.  The direction of the association is also reversed |
| | association.isTransitive | hard coded to true if the value of RL is "isa" |
| SRSTR | RL | association.forwardName | Reversed when value of RL is "isa" |
| SRSTR | STY/RL | associationInstance.sourceId | Reversed when value of RL is "isa" |
| SRSTR | STY/RL | associationTarget.targetId |
| SRDEF | RIN | association.reverseName |
| SRDEF | DEF | association.entityDescription.content (inheritance path for entityDescription is Entity->versionableAndDescribable) | When SRDEF value RT is "RL" |
| SRSTRE1 | UI/STY(first argument) | associationInstance.sourceId | Reversed when value of RL is "isa" |
| SRSTRE1 | UI/STY(2nd argument) | associationTarget.targetId | Reversed when value of RL is "isa" |

h3. UMLS Mapping
| *UMLS Mapping* |
|| _RRF File Name_ || _RRF Column Name_ || _RRF Definition_ || _NCI Meta only_ || _LexGrid Model Element_ || _comments_ ||
| <big>*Coding Scheme*</big> |
| MRSAB.RRF | SVER | Release date or version number of a source | codingScheme.representsVersion |
| MRSAB.RRF | SSN | Source short name | codingScheme.codingScheme |
| MRSAB.RRF | SON | Source Official Name | codingScheme.formalName |
| MRSAB.RRF | LAT | Language of Term(s) | codingScheme.defaultLanguage |
| MRSAB.RRF | TRF | Term frequency for a source | codingScheme.approxNumConcepts |
| MRSAB.RRF | SCIT | Source citation | codingScheme.entityDescription | inherits entityDescription from versionableAndDescribable |
| MRSAB.RRF | SCC | Content contact info for a source | codingScheme.copyright |
| | codingScheme.registeredName | Pulled from iso mapping configuration file using method getISOString(RSAB from MRSAB.RRF) |
| MRDOC.RRF | EXPL | Detailed explanation | x | codingScheme.representsVersion | Where Dockey = "RELEASE" and value = "umls.release.name" |
| | x | codingScheme.codingScheme | Hard coded in java file as "NCI MetaThesaurus" |
| | x | codingScheme.formalName | Hard coded in java file as "NCI MetaThesaurus" |
| | x | codingScheme.defaultLanguage | Hard coded in java file as "ENG" |
| MRCONSO.RRF | x | codingScheme.approxNumConcepts | Count of CODE value in MRCONSO.RRF |
| | x | codingScheme.entityDescription | Hard coded in java file as "NCI MetaThesaurus loaded from RRF files." |
| | x | codingScheme.copyright | Hard coded in java file as "Some material in the NCI Metathesaurus is from copyrighted sources of the respective copyright claimants. All sources appearing in the NCI Metathesaurus are licensed or authorized for NCI use. Users of the NCI Metathesaurus are responsible for compliance with the terms of these licenses and with any copyright restrictions and are referred to NCI Center of Bioinformatics for license terms and to the copyright notices appearing in the original sources, all of which are obtainable online by reference at http://ncimeta.nci.nih.gov/." |
| | codingScheme.localNameList | Hard coded as constant in java file as "localName" |
| MRSAB.RRF | SON | Source Official Name | codingScheme.localNameList. |
| | codingScheme.localNameList | Hard coded as constant in java file as "localName" |
| | codingScheme.localNameList. | Pulled from iso mapping configuration file using method getISOString(RSAB from MRSAB.RRF) |
| | codingScheme.source | Hard coded as constant in java file as "source" |
| MRDOC.RRF | EXPL | Detailed explanation | codingScheme.source.content | String concatenation of "UMLS-" and value of EXPL |
| | x | codingScheme.localNameList | Hard coded as constant in java file as "localName" |
| | x | codingScheme.localNameList. | Hard coded in java file as "NCI Thesaurus" |
| | x | codingScheme.localNameList | Hard coded as constant in java file as "localName" |
| | x | codingScheme.localNameList. | Hard coded in java file as "NCI_Thesaurus" |
| | x | codingScheme.localNameList | Hard coded as constant in java file as "localName" |
| | x | codingScheme.localNameList. | Hard coded in java file as "10001" |
| | x | codingScheme.localNameList | Hard coded as constant in java file as "source" |
| | x | codingScheme.localNameList. | Hard coded in java file as "RRF Files" |
| | mappings.supportedFormat | Hard coded as constant in java file as "Format" |
| | mappings.supportedFormat.localId | Hard coded as one of several constants in a java file |
| | mappings.supportedAssociation | Hard coded as constant in java file as "Association" |
| MRREL.RRF | REL, RELA | Relationship,  Relationship attribute | mappings.supportedAssociation.localId |
| | mappings.supportedContext | Hard coded as constant in java file as "Context" May not be used in individual RRF load |
| | mappings.supportedSource | Hard coded as constant in java file as "Source"  May not be used in individual RRF load |
| |
| | mappings.supportedHierarchy | Hard coded as constant in java file as "Hierarchy" |
| | mappings.supportedAssociationQualifier | Hard coded as constant in java file as "AssociationQualifier" |
| | mappings.supportedProperty | Hard coded as constant in java file as "Property" |
| | mappings.supportedLanguage | Hard coded as constant in java file as "Language" |
| | mappings.supportedCodingScheme | Hard coded as constant in java file as "CodingScheme" |
| | mappings.supportedRepresentationalForm | Hard coded as constant in java file as "RepresentationalForm" |
| | mappings.supportedConceptStatus | Hard coded as constant in java file as "ConceptStatus" |
| | mappings.supportedPropertyLink | Hard coded as constant in java file as "PropertyLink" |
| | mappings.supportedPropertyQualifier | Hard coded as constant in java file as "PropertyQualifier" |
| | mappings.supportedDataType | Hard coded as constant in java file as "DataType" |
| <big>*Concepts*</big> |
| MRCONSO.RRF | CODE | Unique Identifier or code for string in source | concept.conceptCode |
| MRCONSO.RRF | CUI | Unique identifier for concept | x | concept.conceptCode |
| | concept.isActive | Hardcoded in parameter as true. |
| | concept.conceptStatus | Hard coded as constant in java file as "Active" |
| | concept.isAnonymous | Hardcoded in parameter as false. |
| MRCONSO.RRF | STR | String | concept.entityDescription |
| |
| |
| | concept.conceptProperty.Format | Hard coded as constant in java file as "text/plain" or null |
| | concept.conceptProperty.propertyName | May be hard coded as constant in java file as one of several properties. |
| | concept.conceptProperty.usageContext |
| | concept.conceptProperty.propertyId | Generated value for property using "P" concatenated with a steadily incremented numerical value. |
| | concept.presentation.propertyId | Generated value for property textual presentation using "T" concatenated with a steadily incremented numerical value. |
| | concept.comment.propertyId | Generated value for property comment using "C" concatenated with a steadily incremented numerical value. |
| | concept.definition.propertyId | Generated value for property definition using "D" concatenated with a steadily incremented numerical value. |
| | concept.instruction.propertyId | Generated value for property instruction using "I" concatenated with a steadily incremented numerical value. |
| MRCONSO.RRF | CUI | Unique identifier for concept | concept.conceptProperty.text.content. |
| | concept.conceptProperty.propertyId | Generated value for property using "CUI" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName | hard coded as constant in java file as "UMLS_CUI" |
| | concept.conceptProperty.propertyType | hard coded as constant in java file as "property" |
| | concept.conceptProperty.format | left as null |
| MRSTY.RRF | STY | Semantic type | concept.conceptProperty.text.content |
| | concept.conceptProperty.propertyId | Generated value for property using "SemType" concatenated with a steadily incremented numerical value. |
| | concept.conceptProperty.propertyName | hard coded as constant in java file as "Semantic_Type" |
| | concept.conceptProperty.propertyType | hard coded as constant in java file as "property" |
| | concept.conceptProperty.format | Hard coded as constant in java file as "text/plain" |
| MRCONSO.RRF | LAT | Language of Term(s) | concept.conceptProperty.language | Logic of code simply selects the first definition in the source as the preferred source |
| MRCONSO.RRF | TS | Term status | concept.presentation.isPreferred | One or a combination of these RRF values determines whether a presentation is preferred: LAT, TS, STT, ISPREF, RANK. |
| MRCONSO.RRF | STT | String type | concept.presentation.isPreferred | One or a combination of these RRF values determines whether a presentation is preferred: LAT, TS, STT, ISPREF, RANK. |
| MRCONSO.RRF | ISPREF | Indicates whether AUI is preferred | concept.presentation.isPreferred | One or a combination of these RRF values determines whether a presentation is preferred: LAT, TS, STT, ISPREF, RANK. |
| MRRANK.RRF | RANK | Termgroup ranking | concept.presentation.isPreferred | One or a combination of these RRF values determines whether a presentation is preferred: LAT, TS, STT, ISPREF, RANK. |
| | concept.presentation.isPreferred |
| MRDEF.RRF | DEF | Definition | concept.definition.text.content |
| | concept.definition.isPreferred | Logic of code simply selects the first definition in the source as the preferred source |
| |
| MRSAT.RRF | ATN | Attribute name | concept.conceptProperty.propertyType | Translated to a  LexGrid property type. For values AN, CX, HN  this property is typed as a "COMMENT" in LexGrid.  For value EV this property is typed "PRESENTATION"  This only occurs when the STYPE points to the CODE, SCUI or SDUI columns in MRREL.RRF or MRCONSO.RRF.  If the STYPE points to SAUI then the values are loaded as property qualifiers. |
| MRSAT.RRF | ATV | Attribute value | concept.conceptProperty.propertyValue |
| MRSAT.RRF | ATN | Attribute name | concept.conceptProperty.propertyQualifier.propertyQualifierId | If the STYPE points to SAUI then the value is loaded as a property qualifier attribute |
| MRSAT.RRF | ATV | Attribute value | concept.conceptProperty.propertyQualifier.content | If the STYPE points to SAUI then the value is loaded as a property qualifier attribute |
| MRCONSO.RRF | SAB | x | concept.conceptProperty.source.content |
| | x | concept.conceptProperty.propertyQualifier.propertyQualifierId | hard coded as constant in java file as "source-code" |
| MRCONSO.RRF | CODE | x | concept.conceptProperty.propertyQualifier.content |
| | x | concept.conceptProperty.propertyQualifier.propertyQualifierId | hard coded as constant in java file as "AUI" |
| MRCONSO.RRF | AUI | x | concept.conceptProperty.propertyQualifier.content |
| | concept.presentation.representationalForm | When ATN value is EV this presentation will be given a representationalForm of "Abbrev." |
| MRCONSO.RRF | TTY | Term type in source | concept.presentation.representationForm | When TTY value is FN then representationalForm is represented as "Full Form"  Otherwise the representationalForm is the same as the TTY source (i.e. if TTY is PT then representationalForm is PT.)  PT is one of the preferred presentations. |
| | concept.conceptProperty.propertyQualifier.propertyQualifierId | hard coded as "HCD" |
| MRHIER.RRF | HCD | Source asserted hierarchical number or code for this atom in this context | concept.conceptProperty.propertyQualifier.content | This propertyQualifier is present when the HCD is populated in the the MRHIER file.  The corresponding code and property for concept or code is qualified as a code or concept with a context derived heirarchy. |
| <big>*Relations*</big> |
| MRREL.RRF | CUI1 | Unique identifier for first concept |
| MRREL.RRF | AUI1 | Unique identifier for first atom |
| MRCONSO.RRF | CODE | Unique Identifier or code for string in source | ConceptReference.conceptCode (Model element is a ResolvedConceptReference with the value sourceOf attached to the appropriate AssociationList containing this particular REL or RELA association name.) | Mapping to the CODE depends upon the CUI or a combination of CUI and AUI values.  If the CODE value is "NOCODE" then LexBIG concatenates "NOCODE" with a "-" and the CUI value.  Target or source code value requires use of the DIR flag which indicates the directionality of the relationship in REL or RELA.  CUI1 can be used as a pointer to the source CODE value if DIR equals Y, else CUI1 is the targetCode.  Similarly, if an AUI exists AUI1 can be an indicator for CODE value to be either or source or target depending on the DIR flag. |
| MRREL.RRF | CUI2 | Unique identifier for second concept |
| MRREL.RRF | AUI2 | Unique identifier for second atom |
| MRCONSO.RRF | CODE | Unique Identifier or code for string in source | ConceptReference.conceptCode (Model element is a ResolvedConceptReference with the value targetOf attached to the appropriate AssociationList containing this particular REL or RELA association name.) | Mapping to the CODE depends upon the CUI or a combination of CUI and AUI values.  If the CODE value is "NOCODE" then LexBIG concatenates "NOCODE" with a "-" and the CUI value.  Target or source code value requires use of the DIR flag which indicates the directionality of the relationship in REL or RELA.  CUI2 can be used as a pointer to the source CODE value if DIR equals Y, else CUI1 is the targetCode.  Similarly, if an AUI exists AUI2 can be an indicator for CODE value to be either or source or target depending on the DIR flag. |
| MRREL.RRF | DIR | Source asserted directionality flag | The UMLS directional flag. Y indicates that this is the direction of the RELA relationship in its source; N indicates that it is not; otherwise indicates that it is not important or has not yet been determined.  (If blank RELA, we interpret as 'N', based on empirical review of meta files). |
| |
| MRREL.RRF | RELA | Relationship attribute | association.id (id inherited from Entity) | Source defined associations. If RELA value is "inverse_isa" then it is changed to "hasSubtype."  All others mapped as defined in source. |
| |
| MRREL.RRF | REL | Relationship | association.id (id inherited from Entity) | UMLS defined associations |
| |
| |
| MRSAT.RRF | METAUI | Metathesaurus asserted unique identifier | Presence of RUI in MRSAT.RRF METAUI column indicates the association defined in MRREL has an association qualifier.  Currently only MedDRA uses these. |
| MRSAT.RRF | ATN | AssociatedConcept.nameAndValueList.name |
| MRSAT.RRF | ATV | AssociationQualification.nameAndValueList.content |
| | AssociatedConcept.nameAndValueList.name | qualifier name is hard coded to "HCD"  This association qualifier is attached to an association when the HCD field in MRHIER.RRF is populated.  Associations are identified by evaluating a structured series of AUI's that describe the path to root  (PTR field in MRHIER) Once these associations are identified they have and association qualifier attached to them with the value of the HCD loaded as the qualifier. |
| MRHIER.RRF | HCD | AssociationQualification.nameAndValueList.content |
| MRSAB.RRF | SSN | Source short name | association.codingSchemeId (Inherited from Entity) |
| MRREL.RR | REL or RELA | Relationship or Relationship attribute | association.forwardName | unqualified REL or RELA value (inverse_isa remains the same) |
| MRDOC.RRF | EXPL | Detailed explanation | association.reverseName | Where DOCKEY in MRDOC equals REL or RELA and value is the association name and TYPE is REL or  RELA name prepended to  "_inverse". |
| | association.inverse | Hard coded as a blank string. |
| | association.isAntiReflexive | hard coded to null. |
| | association.isAntiSymmetric | hard coded to null. |
| | association.isAntiTransitive | hard coded to null. |
| | association.isAntiTransitive | hard coded to null. |
| | association.isNavigable | hard coded as Boolean with value true. |
| | association.isReflexive | hard coded to null. |
| | association.isReverseFunctional | hard coded to null. |
| | association.isSymmetric | hard coded to null. |
| MRREL.RRF | SAB, REL, RELA | Source abbreviation | association.isTransitive | True when the name of the association can be mapped to a source defined in the SAB attribute of MRREL.RRF.  Not the SAB value itself, but extrapolated from it using SAB to REL, RELA relationship. |
| | association.isTranslationAssociation | hard coded to null. |
| | association.targetCodingScheme | hard coded to null. |
| | association.entityDescription.content (inheritance path for entityDescription is Entity->versionableAndDescribable) | Hard coded to: "UMLS-defined relationships" |
| |
| | relations.dc | If REL,  this is hard coded as "UMLS-Relations" if RELA then it is hard coded to "Relations" |
| MRREL.RRF | REL, RELA | x | propertyLink.link | This is a link established when the MRREL.RRF file contains a relationship where the CUI is related to itself.  Under these conditions the relationship is mapped as a property link with  the MRREL defined relationship mapped as the link value. |
| | x | propertyLink.sourceProperty | Generated as a propertyId for concept, ex: "T-10" This is retrieved based on the AUI value in MRCONSO.RRF from the entityPropertyMultiAttrib table where the AUI equals the attributeValue column. |
| | x | propertyLink.targetProperty | Generated as a propertyId for concept, ex: "T-10" This is retrieved based on the AUI value in MRCONSO.RRF from the entityPropertyMultiAttrib table where the AUI equals the attributeValue column. |


h3. SNOMED UMLS Mapping

| *SNOMED UMLS Mapping* |
|| RRF File Name || RRF Column Name || RRF Definition || LexGrid Model Element || comments ||
| RSAB.RRF | SVER | Release date or version number of a source | codingScheme.representsVersion |
| RSAB.RRF | SSN | Source short name | codingScheme.codingScheme? |
| RSAB.RRF | SON | Source Official Name | codingScheme.formalName |
| | Hard coded to "en" | codingScheme.defaultLanguage |
| MRSAT.RRF | ATV | concept.presentation.language | Unique to snomed. |


h3. OBO Mapping

| *OBO Mapping* |
|| OBO Class || OBO Entity || LexGrid Model Element || Notes ||
| Document Header | format-version | Not mapped. |
| Document Header | data-version | CodingScheme.representsVersion | Creates a codingSchemeVersion and SystemRelease record. If not specified, then hard coded "UNASSIGNED" |
| Document Header | version | CodingScheme.representsVersion | Deprecated - use data-version if present. |
| Document Header | date | Not mapped. |
| Document Header | saved-by | Ignored but included if contained in the remark entity. |
| Document Header | auto-generated-by | Ignored but included if contained in the remark entity. |
| Document Header | subsetdef | Not mapped. |
| Document Header | import | Deprecated - Imports are used to assemble a larger document from smaller. |
| Document Header | typeref | Deprecated. |
| Document Header | synonymtypedef | Not mapped. |
| Document Header | idspace | Not mapped.The idspace is a triple - localName, URN and description. |
| Document Header | default-relationship-id-prefix | Not mapped. |
| Document Header | id-mapping | CodingScheme.supportedAssociation | This is more generalized than the LexGrid model, as it supports mapping between *any* id's.  Note that its primary purpose, however, is to handle supportedAssociation. |
| Document Header | remark | CodingScheme.entityDescription | Will combine multiple remark entities into the entityDescription. |
| Document Header | default-namespace | codingScheme.codingScheme | Will use default-namespace if provided;  otherwise will use filename without the extension. |
| Document Header | default-namespace | codingScheme.formalName | Will use default-namespace if provided;  otherwise will use filename without the extension. |
| Document Header | default-namespace | codingScheme.registeredName | Combination of "urn:lsid:bioontology.org:" and if provided, the value in "default-namespace"; but if not will use filename without the extension. |
| | codingScheme.defaultLanguage | Hardcoded "en" |
| | codingScheme.isNative | Hardcoded "true" |
| Stanza | id | CodedEntry.conceptCode |
| Stanza | name | CodedEntry.entityDescription |
| | CodedEntry.presentation[VKC:'textualPresentation'].text |
| | CodedEntry.presentation[VKC:'textualPresentation'].isPreferred = true |
| Stanza | alt_id |
| | | CodedEntry.property[VKC:'alt_id'].propertyId |
| | CodedEntry.property[VKC:'alt_id'].text |
| Stanza | is_anonymous | CodedEntry.isAnonymous = true |
| Stanza | is_obsolete | CodedEntry.isActive = false |
| Stanza | def | CodedEntry.definition |
| | CodedEntry.definition.isPreferred = true |
| Stanza | def.dbxref | See dbxref |
| |
| Stanza | comment | CodedEntry.comment.text |
| Stanza | subset | property[VKC:subset tag] | See subsetdef |
| Stanza | syonym | presentation[VKC:'textualPresentation'].text |
| Stanza | synonym.scope | presentation[VKC:'textualPresentation'].degreeOfFidelity |
| Stanza | synonym.type | presentation[VKC:'textualPresentation'].representationalForm |
| Stanza | synonym.dbxref | (see dbxref) |
| Stanza | exact_synonym | See synonym |
| Stanza | narrow_synonym | See synonym |
| Stanza | broad_synonym | See synonym |
| Stanza | xref | associations.[VKC:'mapsTo'] |
| Stanza | xref_analog | See synonym |
| Stanza | xref_unk |
| |
| Stanza | is_a | associations.[VKC:'hasSubtype'] | Reverse of the source and target. |
| Stanza | is_a.namespace | If present, the supplied namespace becomes the owning "codingScheme". |
| Stanza | is_a.derived | associations.hasSubtype.associationQualifier | If present, need to include derived in the supportedAssociationQualifiers section |
| |
| Stanza | intersection_of | Processed the same way that OWL intersection operator is processed.  This includes creation of anonymous sets. |
| Stanza | union_of | Same as OWL |
| Stanza | disjoint_from | Same as OWL |
| Stanza | relationship | associations. |
| Stanza | relationship.not_necessary | associations..associationQualifier |
| Stanza | relationship.inverse_necessary | associations..associationQualifier |
| Stanza | relationship.namespace | If present, the supplied namespace becomes the owning "codingScheme". |
| Stanza | relationship.derived | associations..associationQualifier |
| Stanza | relationship.cardinality | associations..associationQualifier |
| Stanza | relationship.maxCardinality | associations..associationQualifier |
| Stanza | relationship.minCardinality | associations..associationQualifier |
| Stanza | is_obsolete | codedEntry.isActive = false |
| |
| Stanza | replaced_by | |
| Stanza | consider | Not Mapped |
| Stanza | use_term | (deprecated) |
| |
| dbxref | dbxref name | CodedEntry..source | |
| | supportedSource | dbxref name format is inconsistent.  In most cases, it can be the localName of supportedSource, but special processing may be necessary in the case of URL's, etc |
| dbxref | dbxref description | Not mapped. |
| dbxref | trailing modifiers | Not mapped. |
| |
| typeDef Stanza | domain | associations.[VKC:'has_domain'] |
| typeDef Stanza | range | associations.[VKC:'has_range'] |
| typeDef Stanza | is_cyclic | property[VKC:'is_cyclic'] |
| typeDef Stanza | is_reflexive | property[VKC:'is_reflexive'] |
| | association.isReflexive |
| typeDef Stanza | is_symmetric | property[VKC:'is_symmetric'] |
| | association.isSymmetric |
| typeDef Stanza | is_transitive | property[VKC:'is_transitive'] |
| | association.isTransitive |
| typeDef Stanza | inverse_of | association.inverse |
| instance stanza | id | same rules as general stanza | same rules as general stanza |
| instance stanza | name | same rules as general stanza | same rules as general stanza |
| instance stanza | instance_of | association[VKC:'has_instance'] |
| instance stanza | data type properties go in Coded Entry property section |


h3. HL7 RIM Mapping

| *HL7 RIM Mapping* |
|| HL7 Table || HL7 Column || LexGrid Model Element || Notes |
| || Intentionally Not mapped || Outstanding issues ||
| Model | <modelID> | <codingSchemeName> ||
| | <name> | <formalName> ||
| | <registeredName> | http://www.hl7.org/Library/data-model/RIM *[1] ||
| | <defaultLanguage> | en* ||
| | <versionNumber> | <representsVersion> ||
| | <isNative> | 0* ||
| | <approximateNumberofConcepts> | Result of count on concept bearing table? ||
| | <firstRelease> | MISSING |
| | <modifiedRelease> | MISSING |
| | <deprecated> | MISSING |
| | <description> | <entityDescription> |
| | <copyright> | MISSING |
| VCS_code_system | codeSystemId | codingScheme.registeredName | Moved to metadata file. |
| | codeSystemType | commonTypes::Properties | This is an HL7 specific code system property to distinguish internal vs external code systems.  Moved to metadata file. |
| | codeSystemName | concept.conceptCode | Moved to metadata file. |
| | codeSystemName | concept.presentation[VKC:'textualPresentation'].text |
| | fullName | codingScheme.formalName |
| | description | codingScheme.entityDescription | Moved to metadata file. |
| | releaseId | codingScheme.representsVersion | Moved to metadata file. |
| | copyrightNotice | codingScheme.copyright | Moved to metadata file. |
| | literal('en') | codingScheme.defaultLanguage | Moved to metadata file. |
| |
| VCS_concept_code_xref | internalId |
| | Concept Code | concept.conceptCode | RIM db column conceptCode2 |
| | Case Difference | commonTypes::Properties | Basically a proprty to outline whether there are case differences in the Concept Code or not (mainly used, but not restricted tor units of measure) | RIM db column codeInstance |
| | Status | RIM db column conceptStatus |
| | concept.conceptStatus | Not used by HL7.  A = isActive, R = retired |
| |
| VCS_concept_designation | internalId | foreign key |
| | designation | concept.presentation[VKC:'textualPresentation'].text |
| | designationSeq |
| | language | concept.presentation[VKC:'textualPresentation'].language | Can be omitted if language = default language |
| | preferredForLanguage | concept.presentation[VKC:'textualPresentation'].isPreferred |
| |
| VCS_concept_description | internalId | with(codeSystem[VKC:deref(internalId)].concept[VKC:deref(internalId)]).definition | foreign key |
| | description | concept.presentation[VKC:'textualPresentation'].text |
| | language | concept.presentation[VKC:'textualPresentation'].language |
| | literal('true') | concept.presentation[VKC:'textualPresentation'].isPreferred |
| | uniqueId() | concept.presentation[VKC:'textualPresentation'].propertyId |
| | literal('definition') | concept.presentation[VKC:'textualPresentation'].property |
| |
| |
| VCS_concept_property | internalId | foreign key |
| | propertyCode | concept.property.property |
| | propertySeq | Currently not used by HL7 |
| | propartyValue | concept.property.text |
| | language | concept.property.language |
| |
| VCS_concept_relationship | relationCode | association.association |
| | sourceInternalId | associationInstance.sourceConcept |
| | targetInternalId | associationTarget.targetConcept |
| |
| Model | modelID | systemRelease.releaseId |
| | name | service.service |
| | versionNumber | service.version |
| | lastModifiedDate | systemRelease.releaseDate |
| | developingOrganization | systemRelease.releaseAgency |
| | committeeID |
| | description | systemRelease.entityDescription |
| | concat('urn:oid:2.16.840.1.113883:',systemRelease.releaseId) | systemRelease.releaseURN |
| | literal('true') | systemRelease.isLatest | Also have to set the prior release isLatest to false |
| | preceding-sibling/releaseOrder + 1 | systemRelease.releaseOrder |
| |
| Model | modelID | commonTypes::Properties |
| (Special mapping for NCI) | name | codingScheme.localName |
| | versionNumber | codingScheme.representsVersion |
| | lastModifiedDate | commonTypes::Properties |
| | developingOrganization | commonTypes::Properties |
| | committeeID |
| | description | codingScheme.entityDescription |
| | concat('urn:oid:2.16.840.1.113883:',systemRelease.releaseId) | codingScheme.registeredName |
| | literal('true') | commonTypes::Properties | Also have to set the prior release isLatest to false |
| | preceding-sibling/releaseOrder + 1 | commonTypes::Properties |
| |
| |
| RIM_vocabulary_domain | vocDomain | codingscheme[VKC:"VocabularyDomain"].concept.conceptCode | Vocabulary Domains are carried in a code system of vocabulary domains. |
| | codingscheme[VKC:"VocabularyDomain"].concept.presentation[VKC:"textualPresentation"].text | preferredPresentation |
| | description | codingscheme[VKC:"VocabularyDomain"].concept.definition.text | preferredDefinition for code |
| | restrictsDomain | codingscheme[VKC:"VocabularyDomain"].association[VKC:"hasSubtype"].sourceConcept | _Should this be hasSubtype or something else?_ |
| | codingscheme[VKC:"VocabularyDomain"].association[VKC:"hasSubtype"].targetconcept = vocDomain |
| |
| VOC_code_reference | usedToBuildValueSet |
| | referencesConceptCode | ...valueDomainEntry/conceptCode | 
1) id is synthesized

2) Only stored if isHeadCode h1. false or includeReferencedCode true |
| | | referencesInternalId | Internal id's aren't exposed in lexGrid |
| | | relationship | ...valueDomainEntry/includeChildren = (relationship == 'hasSubtype') | Won't deal w/ non-hasSubtype relationships, but HL7 doesn't have any. |
| | includeReferencedCode | ...valueDomainEntry/isSelectable | Not in current implementation |
| | | leafOnly | Not used in HL7 Model |
| | | directChildrenOnly | Not used in HL7 Model |
| | isHeadCode | Only used when referenced in VOC_value_set_constructor. |
| | referencesCodeSystem | .../valueDomainEntry.codingScheme | Shortcut in HL7 model. Must = VOC_value_set.basedOnCodeSystem |
| | arbitraryUniqueValue() | .../valueDomainEntry.id |
| |
| VOC_registered_code_system | codeSystemId | VOC_registered_code_system isn't currently transferred to Lexgrid |
| | | sponsor |
| | publisher |
| | | versionReportingMethod |
| | | licensingInformation | _This field should really be transfer to copyright?_ |
| | | inUMLS |
| | | systemSpecificLocatorInfo |
| | | uri |
| | | isExternal |
| |
| VOC_value_set | valueSetId | valueDomain.registeredName |
| | | valueSetName | valueDomain.valueDomain | _Name is the key in LexGrid, and is optional in HL7 - will need to be addressed._ |
| | basedOnCodeSystem | valueDomain.defaultCodingScheme | _Optional in HL7, required in LexGrid._ |
| | description | valueDomain.entityDescription |
| | | definingExpression | Not used. |
| | allCodes |
| | | isTaxonomicSet | No mapping available |
| | | valueSetAuthority | Included in valueSetID |
| | | valueSetNumber |
| |
| VOC_value_set_constructor | usedToBuildValueSet |
| | includesOrExcludesSet | valueDomainEntry.includesValueDomain |
| | includeHeadCode | valueDomainEntry.isSelectable |
| | _Assumes that there always is a head code._ |
| |
| VOC_vocabulary_domain_value_set | representsVocDomain | (selector) |
| | definedByValueSet | codingscheme[VKC:'VocabularyDomain'].concept[VKC:representsVocDomain].property[VKC:'definedByValueSet'].text | _have to get 'representsVocDomain' into supportedProperty header_ |
| | appliesInContext | codingscheme[VKC:'VocabularyDomain'].concept[VKC:representsVocDomain].property[VKC:'definedByValueSet'].usageContext | _Have to get all the contexts in the VocabularyDomain supportedContext header_ |
| |
| |
| |
| VCS_release_version | releaseId | codingSchemeVersion.version |
| | valueDomainVersion.version | Set iff one or more value sets change |
| | _literal("false")_ | codingSchemeVersion.isComplete | All versions are delta's in this model |
| | | releaseAgency |
| | releaseDate | codingSchemeVersion.versionDate |
| | valueDomainVersion.versionDate |
| | description | codingSchemeVersion.entityDescription |
| | valueDomainVersion.entityDescription |
| editorID | There is no place for these currently. |
| forWhomID |
| | _concat('urn:oid:2.16.840.1.113883:',systemRelease.releaseId)_ | This corresponds to the containing system release when the sytem release occurs.  It is empty until then. |


h3. LexGrid Text Mapping

| *LexGrid Text Mapping* |
| || Source Definition || Comments ||
| | Column | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
| Line | 1 | <codingSchemeName> | <codingSchemeId> | <defaultLanguage> | <formalName> | [VKC:_version_] | {code}[<source>]{code} | [VKC:_description_] | [VKC:_copyright_] | This must be the first line.  It contains the coding scheme metadata. |
|| | 2 | {noformat}[<code>]{noformat} | <name> | [VKC:_description_] | Beginning of concepts in coding scheme. |
| 3 | {noformat}[<code>]{noformat} | <name> | [VKC:_description_] | Represent hierarchical 'hasSubtype' relationship nesting (name hasSubtype name) |
| |
| |
| |
| || Text Element || LexGrid || Comments |
| || Coding Scheme |
| | codingSchemeName | codingScheme.codingSchemeName |
| | codingSchemeId | codingScheme.codingSchemeId |
| | defaultLanguage | codingScheme.defaultLanguage |
| | formalName | codingScheme.formalName |
| | version | codingScheme.representsVersion | Optional |
| | source | codingScheme.source | Optional |
| | description | codingScheme.entityDescription | Optional |
| | copyright | codingScheme.copyright | Optional |
| || Concepts |
| | code | concept.conceptCode | Optional |
| | name | concept.conceptName |
| | description | concept.entityDescription |
code}

{scrollbar:icons=false}