R6 Ballot (2nd Draft)

Publish-box (todo)

Molecularsequence.shex

Clinical Genomics Work GroupMaturity Level: N/AStandards Status: InformativeCompartments: No defined compartments

Raw ShEx

ShEx statement for molecularsequence

PREFIX fhir: <http://hl7.org/fhir/> 
PREFIX fhirvs: <http://hl7.org/fhir/ValueSet/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

IMPORT <code.shex>
IMPORT <string.shex>
IMPORT <integer.shex>
IMPORT <boolean.shex>
IMPORT <Reference.shex>
IMPORT <Identifier.shex>
IMPORT <Attachment.shex>
IMPORT <DomainResource.shex>
IMPORT <BackboneElement.shex>
IMPORT <CodeableConcept.shex>


start=@<MolecularSequence> AND {fhir:nodeRole [fhir:treeRoot]}

# Representation of a molecular sequence
<MolecularSequence> EXTENDS @<DomainResource> CLOSED {   

    a [fhir:MolecularSequence]?;
    fhir:nodeRole [fhir:treeRoot]?;

    fhir:identifier @<OneOrMore_Identifier>?;  # Unique ID for this particular 
                                            # sequence 
    fhir:type @<code> AND
    	{fhir:v @fhirvs:sequence-type}?;  # aa | dna | rna
    fhir:literal @<OneOrMore_MolecularSequence.literal>?;  # A literal representation of a 
                                            # Molecular Sequence 
    fhir:file @<OneOrMore_Attachment>?;     # Embedded file or a link (URL) 
                                            # which contains content to 
                                            # represent the sequence 
    fhir:relative @<OneOrMore_MolecularSequence.relative>?;  # A Molecular Sequence that is 
                                            # represented as an ordered series 
                                            # of edits on a specified starting 
                                            # sequence 
    fhir:extracted @<OneOrMore_MolecularSequence.extracted>?;  # A Molecular Sequence that is 
                                            # represented as an extracted 
                                            # portion of a different Molecular 
                                            # Sequence 
    fhir:repeated @<OneOrMore_MolecularSequence.repeated>?;  # A Molecular Sequence that is 
                                            # represented as a repeated sequence 
                                            # motif 
    fhir:concatenated @<MolecularSequence.concatenated>?;  # A Molecular Sequence that is 
                                            # represented as an ordered 
                                            # concatenation of two or more 
                                            # Molecular Sequences 
}  

# One element of a concatenated Molecular Sequence
<MolecularSequence.concatenated.sequenceElement> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequence @<Reference> AND {fhir:link 
    			@<MolecularSequence> ? };  # The Molecular Sequence 
                                            # corresponding to this element 
    fhir:ordinalIndex @<integer>;           # The ordinal position of this 
                                            # sequence element within the 
                                            # concatenated Molecular Sequence 
}  

# An edit (change) made to a sequence
<MolecularSequence.relative.edit> EXTENDS @<BackboneElement> CLOSED {   
    fhir:editOrder @<integer>?;             # The order of this edit, relative 
                                            # to other edits on the starting 
                                            # sequence 
    fhir:coordinateSystem @<CodeableConcept>;  # The coordinate system used to 
                                            # define the edited intervals on the 
                                            # starting sequence. Coordinate 
                                            # systems are usually 0- or 1-based 
    fhir:start @<integer>;                  # The start coordinate of the 
                                            # interval that will be edited 
    fhir:end @<integer>;                    # The end coordinate of the interval 
                                            # that will be edited 
    fhir:replacementSequence @<Reference> AND {fhir:link 
    			@<MolecularSequence> ? };  # The sequence that defines the 
                                            # replacement sequence used in the 
                                            # edit operation 
    fhir:replacedSequence @<Reference> AND {fhir:link 
    			@<MolecularSequence> ? }?;  # The sequence on the 'starting' 
                                            # sequence for the edit operation, 
                                            # defined by the specified interval, 
                                            # that will be replaced during the 
                                            # edit 
}  

# A literal representation of a Molecular Sequence
<MolecularSequence.literal> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceValue @<string>;           # The primary (linear) sequence, 
                                            # expressed as a literal string 
}  

# A Molecular Sequence that is represented as an extracted portion of a different Molecular Sequence
<MolecularSequence.extracted> EXTENDS @<BackboneElement> CLOSED {   
    fhir:startingSequence @<Reference> AND {fhir:link 
    			@<MolecularSequence> ? };  # The Molecular Sequence that serves 
                                            # as the parent sequence, from which 
                                            # the intended sequence will be 
                                            # extracted 
    fhir:start @<integer>;                  # The start coordinate (on the 
                                            # parent sequence) of the interval 
                                            # that defines the subsequence to be 
                                            # extracted 
    fhir:end @<integer>;                    # The end coordinate (on the parent 
                                            # sequence) of the interval that 
                                            # defines the subsequence to be 
                                            # extracted 
    fhir:coordinateSystem @<CodeableConcept>;  # The coordinate system used to 
                                            # define the interval that defines 
                                            # the subsequence to be extracted. 
                                            # Coordinate systems are usually 0- 
                                            # or 1-based 
    fhir:reverseComplement @<boolean>?;     # A flag that indicates whether the 
                                            # extracted sequence should be 
                                            # reverse complemented 
}  

# A Molecular Sequence that is represented as an ordered concatenation of two or more Molecular Sequences
<MolecularSequence.concatenated> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceElement @<OneOrMore_MolecularSequence.concatenated.sequenceElement>;  # One element of a concatenated 
                                            # Molecular Sequence 
}  

# A Molecular Sequence that is represented as a repeated sequence motif
<MolecularSequence.repeated> EXTENDS @<BackboneElement> CLOSED {   
    fhir:sequenceMotif @<Reference> AND {fhir:link 
    			@<MolecularSequence> ? };  # The sequence that defines the 
                                            # repeated motif 
    fhir:copyCount @<integer>;              # The number of repeats (copies) of 
                                            # the sequence motif 
}  

# A Molecular Sequence that is represented as an ordered series of edits on a specified starting sequence
<MolecularSequence.relative> EXTENDS @<BackboneElement> CLOSED {   
    fhir:startingSequence @<Reference> AND {fhir:link 
    			@<MolecularSequence> ? };  # The Molecular Sequence that serves 
                                            # as the starting sequence, on which 
                                            # edits will be applied 
    fhir:edit @<OneOrMore_MolecularSequence.relative.edit>?;  # An edit (change) made to a sequence
}  

#---------------------- Cardinality Types (OneOrMore) -------------------

<OneOrMore_Identifier> CLOSED {
    rdf:first @<Identifier>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Identifier> 
}

<OneOrMore_MolecularSequence.literal> CLOSED {
    rdf:first @<MolecularSequence.literal>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularSequence.literal> 
}

<OneOrMore_Attachment> CLOSED {
    rdf:first @<Attachment>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_Attachment> 
}

<OneOrMore_MolecularSequence.relative> CLOSED {
    rdf:first @<MolecularSequence.relative>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularSequence.relative> 
}

<OneOrMore_MolecularSequence.extracted> CLOSED {
    rdf:first @<MolecularSequence.extracted>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularSequence.extracted> 
}

<OneOrMore_MolecularSequence.repeated> CLOSED {
    rdf:first @<MolecularSequence.repeated>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularSequence.repeated> 
}

<OneOrMore_MolecularSequence.concatenated.sequenceElement> CLOSED {
    rdf:first @<MolecularSequence.concatenated.sequenceElement>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularSequence.concatenated.sequenceElement> 
}

<OneOrMore_MolecularSequence.relative.edit> CLOSED {
    rdf:first @<MolecularSequence.relative.edit>  ;
    rdf:rest [rdf:nil] OR @<OneOrMore_MolecularSequence.relative.edit> 
}

#---------------------- Value Sets ------------------------

# Type if a sequence -- DNA, RNA, or amino acid sequence.
fhirvs:sequence-type ["aa" "dna" "rna"]


Usage note: every effort has been made to ensure that the ShEx files are correct and useful, but they are not a normative part of the specification.