diff --git a/sbol3/rdf/sbol3-shapes.ttl b/sbol3/rdf/sbol3-shapes.ttl index 8de41f8..019534b 100644 --- a/sbol3/rdf/sbol3-shapes.ttl +++ b/sbol3/rdf/sbol3-shapes.ttl @@ -1,4 +1,3 @@ -@prefix dash: . @prefix om: . @prefix owl: . @prefix rdf: . @@ -22,10 +21,10 @@ sbol:CombinatorialDerivation a rdfs:Class, sh:NodeShape ; rdfs:label "CombinatorialDerivation"@en ; tawny:name "CombinatorialDerivation"@en ; - rdfs:comment "The purpose of the CombinatorialDerivation class is to specify combinatorial genetic designs without having to specify every possible design variant. For example, a CombinatorialDerivation can be used to specify a library of reporter gene variants that include different promoters and RBSs without having to specify a ComponentDefinition for every possible combination of promoter, RBS, and CDS in the library. ComponentDefinition objects that realize a CombinatorialDerivation can be derived in accordance with the class properties template, variableComponents, and strategy."@en ; + rdfs:comment "The purpose of the CombinatorialDerivation class is to specify combinatorial genetic designs without having to specify every possible design variant. For example, a CombinatorialDerivation can be used to specify a library of reporter gene variants that include different promoters and RBSs without having to specify a ComponentDefinition for every possible combination of promoter, RBS, and CDS in the library. ComponentDefinition objects that realize a CombinatorialDerivation can be derived in accordance with the class properties template, variableFeatures, and strategy."@en ; rdfs:subClassOf sbol:TopLevel ; sh:property sbol:CombinatorialDerivation-template, - sbol:CombinatorialDerivation-variableComponent . + sbol:CombinatorialDerivation-variableFeature . sbol:Component a rdfs:Class, owl:Class, @@ -67,20 +66,21 @@ sbol:Identified a rdfs:Class, sbol:Identified-hasMeasure, sbol:Identified-name . -sbol:VariableComponent a rdfs:Class, +sbol:VariableFeature a rdfs:Class, owl:Class, sh:NodeShape ; - rdfs:label "VariableComponent"@en ; - tawny:name "VariableComponent"@en ; - rdfs:comment "The VariableComponent class can be used to specify a choice of ComponentDefinition objects for any new 35 Component derived from a template Component in the template ComponentDefinition."@en ; + rdfs:label "VariableFeature"@en ; + tawny:name "VariableFeature"@en ; + rdfs:comment "The VariableFeature class can be used to specify a choice of ComponentDefinition objects for any new 35 Component derived from a template Component in the template ComponentDefinition."@en ; rdfs:subClassOf [ a owl:Restriction ; owl:onProperty sbol:variable ; - owl:someValuesFrom sbol:Component ], + owl:someValuesFrom sbol:Feature ], sbol:Identified ; - sh:property sbol:VariableComponent-variable, - sbol:VariableComponent-variant, - sbol:VariableComponent-variantCollection, - sbol:VariableComponent-variantDerivation . + sh:property sbol:VariableFeature-variable, + sbol:VariableFeature-variant, + sbol:VariableFeature-variantCollection, + sbol:VariableFeature-variantDerivation, + sbol:VariableFeature-variantMeasure . om:Measure a rdfs:Class, owl:Class, @@ -107,13 +107,16 @@ sbol:LocalSubComponent a owl:Class ; sbol:SequenceFeature a owl:Class ; rdfs:subClassOf sbol:Feature . +sbol:SubComponent a owl:Class ; + rdfs:subClassOf sbol:Feature . + sbol:hasMeasure-shape a sh:NodeShape ; sh:class sbol:Identified ; sh:targetSubjectsOf sbol:hasMeasure . -sbol:hasVariableComponent a owl:ObjectProperty ; - rdfs:label "hasVariableComponent" ; - tawny:name "hasVariableComponent" . +sbol:hasVariableFeature a owl:ObjectProperty ; + rdfs:label "hasVariableFeature" ; + tawny:name "hasVariableFeature" . sbol:isMemberOf a owl:ObjectProperty ; rdfs:label "isMemberOf"@en ; @@ -130,25 +133,29 @@ sbol:template-shape a sh:NodeShape ; sh:targetSubjectsOf sbol:template . sbol:variable-shape a sh:NodeShape ; - sh:class sbol:VariableComponent ; + sh:class sbol:VariableFeature ; sh:targetSubjectsOf sbol:variable . -sbol:variableComponent-shape a sh:NodeShape ; +sbol:variableFeature-shape a sh:NodeShape ; sh:class sbol:CombinatorialDerivation ; - sh:targetSubjectsOf sbol:variableComponent . + sh:targetSubjectsOf sbol:variableFeature . sbol:variant-shape a sh:NodeShape ; - sh:class sbol:VariableComponent ; + sh:class sbol:VariableFeature ; sh:targetSubjectsOf sbol:variant . sbol:variantCollection-shape a sh:NodeShape ; - sh:class sbol:VariableComponent ; + sh:class sbol:VariableFeature ; sh:targetSubjectsOf sbol:variantCollection . sbol:variantDerivation-shape a sh:NodeShape ; - sh:class sbol:VariableComponent ; + sh:class sbol:VariableFeature ; sh:targetSubjectsOf sbol:variantDerivation . +sbol:variantMeasure-shape a sh:NodeShape ; + sh:class sbol:VariableFeature ; + sh:targetSubjectsOf sbol:variantMeasure . + tawny:name a owl:AnnotationProperty . sbol:Collection-member a sh:PropertyShape ; @@ -159,9 +166,9 @@ sbol:CombinatorialDerivation-template a sh:PropertyShape ; sh:class sbol:Component ; sh:path sbol:template . -sbol:CombinatorialDerivation-variableComponent a sh:PropertyShape ; - sh:class sbol:VariableComponent ; - sh:path sbol:variableComponent . +sbol:CombinatorialDerivation-variableFeature a sh:PropertyShape ; + sh:class sbol:VariableFeature ; + sh:path sbol:variableFeature . sbol:Component-type a sh:PropertyShape ; sh:minCount 1 ; @@ -189,32 +196,32 @@ sbol:Identified-name a sh:PropertyShape ; sh:maxCount 1 ; sh:path sbol:name . -sbol:VariableComponent-variable a sh:PropertyShape ; - dash:hasValueWithClass sbol:Component ; - sh:class sbol:SubComponent ; +sbol:VariableFeature-variable a sh:PropertyShape ; + sh:class sbol:Feature ; sh:minCount 1 ; sh:path sbol:variable . -sbol:VariableComponent-variant a sh:PropertyShape ; +sbol:VariableFeature-variant a sh:PropertyShape ; sh:class sbol:Component ; sh:path sbol:variant . -sbol:VariableComponent-variantCollection a sh:PropertyShape ; +sbol:VariableFeature-variantCollection a sh:PropertyShape ; sh:class sbol:Collection ; sh:path sbol:variantCollection . -sbol:VariableComponent-variantDerivation a sh:PropertyShape ; +sbol:VariableFeature-variantDerivation a sh:PropertyShape ; sh:class sbol:CombinatorialDerivation ; sh:path sbol:variantDerivation . +sbol:VariableFeature-variantMeasure a sh:PropertyShape ; + sh:class om:Measure ; + sh:path sbol:variantMeasure . + om:Measure-http___www.ontology-of-units-of-measure.org_resource_om-2_hasNumericalValue a sh:PropertyShape ; sh:maxCount 1 ; sh:minCount 1 ; sh:path om:hasNumericalValue . -sbol:SubComponent a owl:Class ; - rdfs:subClassOf sbol:Feature . - sbol:hasFeature a owl:ObjectProperty ; rdfs:label "hasFeature" ; tawny:name "hasFeature" ; @@ -238,30 +245,36 @@ sbol:type a owl:ObjectProperty ; tawny:name "type"@en ; rdfs:comment "Specifies the category of biochemical or physical entity. For example DNA, protein, or small molecule that a ComponentDefinition object abstracts for the purpose of engineering design. For DNA or RNA entities, additional types fields are used to describe nucleic acid topology (circular / linear) and strandedness (double- or single-stranded)."@en . -sbol:variableComponent a owl:ObjectProperty ; - rdfs:label "variableComponent"@en ; - tawny:name "variableComponent"@en ; +sbol:variableFeature a owl:ObjectProperty ; + rdfs:label "variableFeature"@en ; + tawny:name "variableFeature"@en ; rdfs:domain sbol:CombinatorialDerivation ; - rdfs:range sbol:VariableComponent . + rdfs:range sbol:VariableFeature . sbol:variant a owl:ObjectProperty ; rdfs:label "variant"@en ; tawny:name "variant"@en ; - rdfs:domain sbol:VariableComponent ; + rdfs:domain sbol:VariableFeature ; rdfs:range sbol:Component . sbol:variantCollection a owl:ObjectProperty ; rdfs:label "variantCollection"@en ; tawny:name "variantCollection"@en ; - rdfs:domain sbol:VariableComponent ; + rdfs:domain sbol:VariableFeature ; rdfs:range sbol:Collection . sbol:variantDerivation a owl:ObjectProperty ; rdfs:label "variantDerivation"@en ; tawny:name "variantDerivation"@en ; - rdfs:domain sbol:VariableComponent ; + rdfs:domain sbol:VariableFeature ; rdfs:range sbol:CombinatorialDerivation . +sbol:variantMeasure a owl:ObjectProperty ; + rdfs:label "variantMeasure"@en ; + tawny:name "variantMeasure"@en ; + rdfs:domain sbol:VariableFeature ; + rdfs:range om:Measure . + sbol:member a owl:ObjectProperty ; rdfs:label "member"@en ; tawny:name "member"@en ; @@ -273,8 +286,8 @@ sbol:variable a owl:FunctionalProperty, owl:ObjectProperty ; rdfs:label "variable"@en ; tawny:name "variable"@en ; - rdfs:domain sbol:VariableComponent ; - rdfs:range sbol:SubComponent . + rdfs:domain sbol:VariableFeature ; + rdfs:range sbol:Feature . sbol:TopLevel a owl:Class ; rdfs:label "TopLevel"@en ; diff --git a/test/resources/simple_library.nt b/test/resources/simple_library.nt new file mode 100644 index 0000000..eaad34e --- /dev/null +++ b/test/resources/simple_library.nt @@ -0,0 +1,672 @@ + + . + "VariableFeature1" . + . + . + . + . + . + . + . + . + . + . + . + "" . + "All_FPs" . + . + . + "All FPs" . + . + . + . + "LocalSubComponent1" . + "Part 1" . + . + . + . + "All_FPs_template" . + . + . + . + . + "" . + "B0015" . + . + . + "B0015" . + . + . + . + "B0015_sequence" . + "CCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTCTACTAGAGTCACACTGGCTCACCTTCGGGTGGGCCTTTCTGCGTTTATA" . + . + . + . + "Moderate (?)" . + "B0032" . + . + . + "B0032" . + . + . + . + "B0032_sequence" . + "TCACACAGGAAAG" . + . + . + . + "Constraint1" . + . + . + . + . + "Constraint2" . + . + . + . + . + "SubComponent1" . + . + . + . + "SubComponent2" . + . + . + . + "SubComponent3" . + . + . + . + "5' UTR including B0032 RBS and BB scars (long and short)" . + "BB_B0032_BB" . + . + . + . + . + . + . + "BB-B0032-BB" . + . + . + . + "Designs for round 1 if iGEM 2021 calibration experimentation" . + "BasicParts" . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + "Fluorescence calibration basic parts" . + . + "BioBricks scar including ag (not before CDS)" . + "BioBricks_scar_long" . + . + . + "BioBricks_scar_long" . + . + . + . + "BioBricks_scar_long_sequence" . + "TACTAGAG" . + . + . + . + "BioBricks scar (short one, w/o ag, before CDS)" . + "BioBricks_scar_short" . + . + . + "BioBricks_scar_short" . + . + . + . + "BioBricks_scar_short_sequence" . + "TACTAG" . + . + . + . + "Designs for round 1 if iGEM 2021 calibration experimentation" . + "CompositeParts" . + . + . + . + . + . + . + . + "Fluorescence calibration devices" . + . + "Green FP (off patent)\nGFPmut3" . + "E0040" . + . + . + "E0040" . + . + . + . + "E0040_sequence" . + "ATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTTAATGGGCACAAATTTTCTGTCAGTGGAGAGGGTGAAGGTGATGCAACATACGGAAAACTTACCCTTAAATTTATTTGCACTACTGGAAAACTACCTGTTCCATGGCCAACACTTGTCACTACTTTCGGTTATGGTGTTCAATGCTTTGCGAGATACCCAGATCATATGAAACAGCATGACTTTTTCAAGAGTGCCATGCCCGAAGGTTATGTACAGGAAAGAACTATATTTTTCAAAGATGACGGGAACTACAAGACACGTGCTGAAGTCAAGTTTGAAGGTGATACCCTTGTTAATAGAATCGAGTTAAAAGGTATTGATTTTAAAGAAGATGGAAACATTCTTGGACACAAATTGGAATACAACTATAACTCACACAATGTATACATCATGGCAGACAAACAAAAGAATGGAATCAAAGTTAACTTCAAAATTAGACACAACATTGAAGATGGAAGCGTTCAACTAGCAGACCATTATCAACAAAATACTCCAATTGGCGATGGCCCTGTCCTTTTACCAGACAACCATTACCTGTCCACACAATCTGCCCTTTCGAAAGATCCCAACGAAAAGAGAGACCACATGGTCCTTCTTGAGTTTGTAACAGCTGCTGGGATTACACATGGCATGGATGAACTATACAAA" . + . + . + . + "Red FP (off patent)\nmRFP1" . + "E1010" . + . + . + "E1010" . + . + . + . + "E1010_sequence" . + "ATGGCTTCCTCCGAAGACGTTATCAAAGAGTTCATGCGTTTCAAAGTTCGTATGGAAGGTTCCGTTAACGGTCACGAGTTCGAAATCGAAGGTGAAGGTGAAGGTCGTCCGTACGAAGGTACCCAGACCGCTAAACTGAAAGTTACCAAAGGTGGTCCGCTGCCGTTCGCTTGGGACATCCTGTCCCCGCAGTTCCAGTACGGTTCCAAAGCTTACGTTAAACACCCGGCTGACATCCCGGACTACCTGAAACTGTCCTTCCCGGAAGGTTTCAAATGGGAACGTGTTATGAACTTCGAAGACGGTGGTGTTGTTACCGTTACCCAGGACTCCTCCCTGCAAGACGGTGAGTTCATCTACAAAGTTAAACTGCGTGGTACCAACTTCCCGTCCGACGGTCCGGTTATGCAGAAAAAAACCATGGGTTGGGAAGCTTCCACCGAACGTATGTACCCGGAAGACGGTGCTCTGAAAGGTGAAATCAAAATGCGTCTGAAACTGAAAGACGGTGGTCACTACGACGCTGAAGTTAAAACCACCTACATGGCTAAAAAACCGGTTCAGCTGCCGGGTGCTTACAAAACCGACATCAAACTGGACATCACCTCCCACAACGAAGACTACACCATCGTTGAACAGTACGAACGTGCTGAAGGTCGTCACTCCACCGGTGCTTAATAACGCTGATAGTGCTAGTGTAGATCGC" . + . + . + . + "Cyan FP; codon optimized using IDT tool \nECFP" . + "ECFP" . + . + . + "ECFP" . + . + . + . + "ECFP_sequence" . + "ATGGTTAGTAAAGGGGAAGAGTTGTTTACGGGCGTTGTTCCAATCTTGGTGGAGTTGGACGGGGACGTTAATGGGCACAAATTTTCGGTCTCTGGGGAAGGCGAGGGGGACGCCACGTATGGTAAGCTGACCTTGAAGTTCATTTGCACTACTGGGAAATTGCCGGTTCCCTGGCCTACGCTTGTTACCACGTTGACCTGGGGCGTACAATGTTTCTCGCGCTATCCTGACCACATGAAACAACATGATTTCTTTAAGTCAGCTATGCCTGAGGGCTACGTGCAGGAGCGCACTATCTTCTTCAAGGATGACGGGAATTACAAAACCCGTGCGGAGGTAAAGTTCGAGGGTGACACGCTTGTCAACCGCATCGAGTTGAAGGGCATTGATTTTAAGGAGGATGGCAACATTTTAGGACATAAATTAGAGTATAACTATATTTCGCATAATGTCTACATTACTGCTGACAAACAAAAGAACGGCATCAAGGCTAATTTCAAAATTCGCCACAACATCGAGGATGGATCGGTTCAGTTAGCAGATCATTACCAGCAAAACACGCCCATCGGTGACGGACCAGTTCTGTTACCTGACAACCACTATCTTTCTACACAGAGTGCTCTTAGCAAGGACCCTAACGAAAAACGTGACCACATGGTCCTGCTGGAGTTTGTGACAGCCGCAGGTATTACATTGGGGATGGACGAATTGTATAAG" . + . + . + . + . + "VariableFeature1" . + . + . + . + "FPs_small" . + . + . + . + . + . + "VariableFeature1" . + . + . + . + . + . + "VariableFeature2" . + . + . + . + "" . + "FPs_small_ins" . + . + . + . + "FPs small" . + . + . + . + "Constraint1" . + . + . + . + . + "Constraint2" . + . + . + . + . + "Constraint3" . + . + . + . + . + "Constraint4" . + . + . + . + . + "Constraint5" . + . + . + . + . + "LocalSubComponent1" . + "Part 2" . + . + . + . + "LocalSubComponent2" . + "Part 4" . + . + . + . + "SubComponent1" . + . + . + . + "SubComponent2" . + . + . + . + "SubComponent3" . + . + . + . + "SubComponent4" . + . + . + . + "FPs_small_ins_template" . + . + . + . + . + . + . + . + . + . + . + . + . + . + . + "Constraint1" . + . + . + . + . + "Constraint2" . + . + . + . + . + "LocalSubComponent1" . + "Inserted Construct" . + . + . + "SubComponent1" . + . + . + "FPs_small_template" . + . + . + . + . + . + . + . + "Final products desired for actual fabrication" . + "FinalProducts" . + . + . + . + "Final Products" . + . + "positive control 2018 interlab" . + "I20270" . + . + . + "I20270" . + . + . + . + "I20270_sequence" . + "TTGATGGCTAGCTCAGTCCTAGGTACAATGCTAGCTACTAGAGTCACACAGGAAAGTACTAGATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTTAATGGGCACAAATTTTCTGTCAGTGGAGAGGGTGAAGGTGATGCAACATACGGAAAACTTACCCTTAAATTTATTTGCACTACTGGAAAACTACCTGTTCCATGGCCAACACTTGTCACTACTTTCGGTTATGGTGTTCAATGCTTTGCGAGATACCCAGATCATATGAAACAGCATGACTTTTTCAAGAGTGCCATGCCCGAAGGTTATGTACAGGAAAGAACTATATTTTTCAAAGATGACGGGAACTACAAGACACGTGCTGAAGTCAAGTTTGAAGGTGATACCCTTGTTAATAGAATCGAGTTAAAAGGTATTGATTTTAAAGAAGATGGAAACATTCTTGGACACAAATTGGAATACAACTATAACTCACACAATGTATACATCATGGCAGACAAACAAAAGAATGGAATCAAAGTTAACTTCAAAATTAGACACAACATTGAAGATGGAAGCGTTCAACTAGCAGACCATTATCAACAAAATACTCCAATTGGCGATGGCCCTGTCCTTTTACCAGACAACCATTACCTGTCCACACAATCTGCCCTTTCGAAAGATCCCAACGAAAAGAGAGACCACATGGTCCTTCTTGAGTTTGTAACAGCTGCTGGGATTACACATGGCATGGATGAACTATACAAATAATAATACTAGAGCCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTCTACTAGAGTCACACTGGCTCACCTTCGGGTGGGCCTTTCTGCGTTTATA" . + . + . + . + "Red FP (off patent)\nmCherry" . + "J06504" . + . + . + "J06504" . + . + . + . + "J06504_sequence" . + "ATGGTGAGCAAGGGCGAGGAGGATAACATGGCCATCATCAAGGAGTTCATGCGCTTCAAGGTGCACATGGAGGGCTCCGTGAACGGCCACGAGTTCGAGATCGAGGGCGAGGGCGAGGGCCGCCCCTACGAGGGCACCCAGACCGCCAAGCTGAAGGTGACCAAGGGTGGCCCCCTGCCCTTCGCCTGGGACATCCTGTCCCCTCAGTTCATGTACGGCTCCAAGGCCTACGTGAAGCACCCCGCCGACATCCCCGACTACTTGAAGCTGTCCTTCCCCGAGGGCTTCAAGTGGGAGCGCGTGATGAACTTCGAGGACGGCGGCGTGGTGACCGTGACCCAGGACTCCTCCTTGCAGGACGGCGAGTTCATCTACAAGGTGAAGCTGCGCGGCACCAACTTCCCCTCCGACGGCCCCGTAATGCAGAAGAAGACCATGGGCTGGGAGGCCTCCTCCGAGCGGATGTACCCCGAGGACGGCGCCCTGAAGGGCGAGATCAAGCAGAGGCTGAAGCTGAAGGACGGCGGCCACTACGACGCTGAGGTCAAGACCACCTACAAGGCCAAGAAGCCCGTGCAGCTGCCCGGCGCCTACAACGTCAACATCAAGTTGGACATCACCTCCCACAACGAGGACTACACCATCGTGGAACAGTACGAACGCGCCGAGGGCCGCCACTCCACCGGCGGCATGGACGAGCTGTACAAG" . + . + . + . + "5.5 SLM (high, but variable)" . + "J23101" . + . + . + "J23101" . + . + . + . + "J23101_sequence" . + "TTTACAGCTAGCTCAGTCCTAGGTATTATGCTAGC" . + . + . + . + "TBD SLM (expect 4.5)" . + "J23105" . + . + . + "J23105" . + . + . + . + "J23105_sequence" . + "TTGACAGCTAGCTCAGTCCTAGGGACTATGCTAGC" . + . + . + . + "J23106 2018 interlab" . + "J364001" . + . + . + "J364001" . + . + . + . + "J364001_sequence" . + "TTTACGGCTAGCTCAGTCCTAGGTATAGTGCTAGCTACTAGAGAAAGAGGAGAAATACTAGATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTTAATGGGCACAAATTTTCTGTCAGTGGAGAGGGTGAAGGTGATGCAACATACGGAAAACTTACCCTTAAATTTATTTGCACTACTGGAAAACTACCTGTTCCATGGCCAACACTTGTCACTACTTTCGGTTATGGTGTTCAATGCTTTGCGAGATACCCAGATCATATGAAACAGCATGACTTTTTCAAGAGTGCCATGCCCGAAGGTTATGTACAGGAAAGAACTATATTTTTCAAAGATGACGGGAACTACAAGACACGTGCTGAAGTCAAGTTTGAAGGTGATACCCTTGTTAATAGAATCGAGTTAAAAGGTATTGATTTTAAAGAAGATGGAAACATTCTTGGACACAAATTGGAATACAACTATAACTCACACAATGTATACATCATGGCAGACAAACAAAAGAATGGAATCAAAGTTAACTTCAAAATTAGACACAACATTGAAGATGGAAGCGTTCAACTAGCAGACCATTATCAACAAAATACTCCAATTGGCGATGGCCCTGTCCTTTTACCAGACAACCATTACCTGTCCACACAATCTGCCCTTTCGAAAGATCCCAACGAAAAGAGAGACCACATGGTCCTTCTTGAGTTTGTAACAGCTGCTGGGATTACACATGGCATGGATGAACTATACAAATAATAATACTAGAGCCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTCTACTAGAGTCACACTGGCTCACCTTCGGGTGGGCCTTTCTGCGTTTATA" . + . + . + . + "J23117 2018 interlab" . + "J364002" . + . + . + "J364002" . + . + . + . + "J364002_sequence" . + "TTGACAGCTAGCTCAGTCCTAGGGATTGTGCTAGCTACTAGAGAAAGAGGAGAAATACTAGATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTTAATGGGCACAAATTTTCTGTCAGTGGAGAGGGTGAAGGTGATGCAACATACGGAAAACTTACCCTTAAATTTATTTGCACTACTGGAAAACTACCTGTTCCATGGCCAACACTTGTCACTACTTTCGGTTATGGTGTTCAATGCTTTGCGAGATACCCAGATCATATGAAACAGCATGACTTTTTCAAGAGTGCCATGCCCGAAGGTTATGTACAGGAAAGAACTATATTTTTCAAAGATGACGGGAACTACAAGACACGTGCTGAAGTCAAGTTTGAAGGTGATACCCTTGTTAATAGAATCGAGTTAAAAGGTATTGATTTTAAAGAAGATGGAAACATTCTTGGACACAAATTGGAATACAACTATAACTCACACAATGTATACATCATGGCAGACAAACAAAAGAATGGAATCAAAGTTAACTTCAAAATTAGACACAACATTGAAGATGGAAGCGTTCAACTAGCAGACCATTATCAACAAAATACTCCAATTGGCGATGGCCCTGTCCTTTTACCAGACAACCATTACCTGTCCACACAATCTGCCCTTTCGAAAGATCCCAACGAAAAGAGAGACCACATGGTCCTTCTTGAGTTTGTAACAGCTGCTGGGATTACACATGGCATGGATGAACTATACAAATAATAATACTAGAGCCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTCTACTAGAGTCACACTGGCTCACCTTCGGGTGGGCCTTTCTGCGTTTATA" . + . + . + . + "J23100 2018 interlab" . + "J364007" . + . + . + "J364007" . + . + . + . + "J364007_sequence" . + "TTGACGGCTAGCTCAGTCCTAGGTACAGTGCTAGCTACTAGAGAAAGAGGAGAAATACTAGATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTTAATGGGCACAAATTTTCTGTCAGTGGAGAGGGTGAAGGTGATGCAACATACGGAAAACTTACCCTTAAATTTATTTGCACTACTGGAAAACTACCTGTTCCATGGCCAACACTTGTCACTACTTTCGGTTATGGTGTTCAATGCTTTGCGAGATACCCAGATCATATGAAACAGCATGACTTTTTCAAGAGTGCCATGCCCGAAGGTTATGTACAGGAAAGAACTATATTTTTCAAAGATGACGGGAACTACAAGACACGTGCTGAAGTCAAGTTTGAAGGTGATACCCTTGTTAATAGAATCGAGTTAAAAGGTATTGATTTTAAAGAAGATGGAAACATTCTTGGACACAAATTGGAATACAACTATAACTCACACAATGTATACATCATGGCAGACAAACAAAAGAATGGAATCAAAGTTAACTTCAAAATTAGACACAACATTGAAGATGGAAGCGTTCAACTAGCAGACCATTATCAACAAAATACTCCAATTGGCGATGGCCCTGTCCTTTTACCAGACAACCATTACCTGTCCACACAATCTGCCCTTTCGAAAGATCCCAACGAAAAGAGAGACCACATGGTCCTTCTTGAGTTTGTAACAGCTGCTGGGATTACACATGGCATGGATGAACTATACAAATAATAATACTAGAGCCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTCTACTAGAGTCACACTGGCTCACCTTCGGGTGGGCCTTTCTGCGTTTATA" . + . + . + . + "J23116 2018 interlab" . + "J364009" . + . + . + "J364009" . + . + . + . + "J364009_sequence" . + "TTGACAGCTAGCTCAGTCCTAGGGACTATGCTAGCTACTAGAGAAAGAGGAGAAATACTAGATGCGTAAAGGAGAAGAACTTTTCACTGGAGTTGTCCCAATTCTTGTTGAATTAGATGGTGATGTTAATGGGCACAAATTTTCTGTCAGTGGAGAGGGTGAAGGTGATGCAACATACGGAAAACTTACCCTTAAATTTATTTGCACTACTGGAAAACTACCTGTTCCATGGCCAACACTTGTCACTACTTTCGGTTATGGTGTTCAATGCTTTGCGAGATACCCAGATCATATGAAACAGCATGACTTTTTCAAGAGTGCCATGCCCGAAGGTTATGTACAGGAAAGAACTATATTTTTCAAAGATGACGGGAACTACAAGACACGTGCTGAAGTCAAGTTTGAAGGTGATACCCTTGTTAATAGAATCGAGTTAAAAGGTATTGATTTTAAAGAAGATGGAAACATTCTTGGACACAAATTGGAATACAACTATAACTCACACAATGTATACATCATGGCAGACAAACAAAAGAATGGAATCAAAGTTAACTTCAAAATTAGACACAACATTGAAGATGGAAGCGTTCAACTAGCAGACCATTATCAACAAAATACTCCAATTGGCGATGGCCCTGTCCTTTTACCAGACAACCATTACCTGTCCACACAATCTGCCCTTTCGAAAGATCCCAACGAAAAGAGAGACCACATGGTCCTTCTTGAGTTTGTAACAGCTGCTGGGATTACACATGGCATGGATGAACTATACAAATAATAATACTAGAGCCAGGCATCAAATAAAACGAAAGGCTCAGTCGAAAGACTGGGCCTTTCGTTTTATCTGTTGTTTGTCGGTGAACGCTCTCTACTAGAGTCACACTGGCTCACCTTCGGGTGGGCCTTTCTGCGTTTATA" . + . + . + . + "Blue FP\nTagBFP2" . + "K592100" . + . + . + "K592100" . + . + . + . + "K592100_sequence" . + "ATGAGCGAACTGATCAAAGAGAACATGCACATGAAGCTGTACATGGAAGGCACCGTTGACAACCACCACTTTAAGTGCACGTCTGAGGGTGAGGGTAAGCCGTACGAAGGCACCCAAACCATGCGTATCAAAGTTGTGGAGGGCGGTCCACTGCCGTTCGCTTTTGACATTCTGGCGACCAGCTTCCTGTACGGTTCCAAAACGTTCATTAACCATACTCAGGGCATTCCGGATTTCTTCAAACAGAGCTTTCCGGAAGGTTTCACCTGGGAGCGTGTCACCACGTATGAAGATGGTGGTGTGTTGACCGCCACCCAAGATACCTCCCTGCAAGATGGCTGTCTGATCTATAACGTGAAAATTCGTGGCGTCAACTTTACGAGCAATGGTCCGGTGATGCAGAAGAAAACCCTGGGTTGGGAGGCGTTTACGGAAACCCTGTATCCGGCCGATGGTGGCCTGGAGGGCCGTAACGACATGGCACTGAAGCTGGTTGGTGGCAGCCATTTGATCGCAAATATCAAGACGACGTACCGCAGCAAGAAACCGGCGAAAAATCTGAAGATGCCGGGTGTTTACTATGTCGACTACCGTCTGGAACGCATTAAAGAAGCGAATAATGAGACTTACGTGGAGCAGCACGAGGTTGCAGTCGCGCGCTATTGCGACTTGCCTAGCAAGCTGGGTCATAAACTGAAT" . + . + . + . + "Linear DNA constructs to be fabricated" . + "LinearDNAProducts" . + . + . + . + "Linear DNA Products" . + . + "negative control 2018 interlab" . + "R0040" . + . + . + "R0040" . + . + . + . + "R0040_sequence" . + "TCCCTATCAGTGATAGAGATTGACATCCCTATCAGTGATAGAGATACTGAGCAC" . + . + . + . + . + "VariableFeature1" . + . + . + . + . + "" . + "Round_1_order" . + . + . + "Round 1 order" . + . + . + . + "LocalSubComponent1" . + "Part 1" . + . + . + . + "Round_1_order_template" . + . + . + . + . + "2 stop codons" . + "STOP" . + . + . + "STOP" . + . + . + . + "STOP_sequence" . + "TAATAA" . + . + . + . + "" . + "UNSX" . + . + . + "UNSX" . + . + . + . + "Constraint1" . + . + . + . + . + "SubComponent1" . + . + . + . + "SubComponent2" . + . + . + . + "" . + "UNSX_UP" . + . + . + . + . + "UNSX-UP" . + . + . + . + "UNSX_sequence" . + "CCAGGATACATAGATTACCACAACTCCGAGCCCTTCCACC" . + . + . + . + "consensus without runs of As and Ts -59 to -36" . + "UP_element_consensus" . + . + . + "UP element consensus" . + . + . + . + "UP_element_consensus_sequence" . + "TGAAATATATTTTCGAAAAGCCGC" . + . + . + . + . + "VariableFeature1" . + . + . + . + "_2018_Interlab" . + . + . + . + . + . + "VariableFeature1" . + . + . + . + . + . + . + . + . + "Swapped R0040 for TwistNeg as the negative control, due to Twist minimum synthesis length" . + "_2018_Interlab_ins" . + . + . + "2018 Interlab" . + . + . + . + "LocalSubComponent1" . + "Part 1" . + . + . + . + "_2018_Interlab_ins_template" . + . + . + . + . + "Constraint1" . + . + . + . + . + "Constraint2" . + . + . + . + . + "LocalSubComponent1" . + "Inserted Construct" . + . + . + "SubComponent1" . + . + . + "_2018_Interlab_template" . + . + . + . + . + . + . + . + "Cyan FP; codon optimized using IDT tool \nmCerulean3" . + "mCerulean3" . + . + . + "mCerulean3" . + . + . + . + "mCerulean3_sequence" . + "ATGGTGTCGAAAGGTGAAGAACTTTTTACAGGTGTGGTCCCCATTTTAGTCGAATTAGATGGGGATGTGAATGGTCACAAATTCTCGGTGTCTGGGGAGGGTGAAGGTGACGCGACCTACGGGAAGTTGACTCTGAAATTCATTTGCACTACGGGGAAGTTACCAGTGCCCTGGCCCACTCTGGTTACAACACTGTCATGGGGCGTCCAATGTTTTGCTCGTTATCCTGACCACATGAAACAGCATGACTTCTTCAAGAGCGCAATGCCGGAAGGCTATGTCCAAGAGCGTACTATCTTTTTCAAAGACGATGGGAACTACAAAACACGCGCAGAAGTGAAGTTTGAGGGAGATACCCTGGTTAATCGCATTGAATTGAAAGGTATCGACTTCAAGGAGGATGGTAATATCCTGGGGCACAAATTGGAGTACAACGCTATCCACGGCAATGTTTACATTACGGCAGACAAACAGAAAAACGGAATTAAGGCCAATTTCGGACTTAACTGCAACATCGAAGATGGGTCGGTACAACTGGCAGACCACTATCAGCAAAATACGCCTATTGGTGACGGTCCTGTCCTGTTACCGGACAATCATTATCTTTCCACTCAGTCGAAACTGAGTAAAGATCCGAACGAGAAGCGCGATCACATGGTATTATTAGAGTTCGTCACAGCCGCAGGTATTACGTTAGGGATGGATGAGCTTTACAAG" . + . + . + . + "Blue FP codon optimized" . + "mTagBFP2" . + . + . + "mTagBFP2" . + . + . + . + "mTagBFP2_sequence" . + "ATGGTATCGAAGGGTGAAGAGTTGATTAAGGAAAACATGCACATGAAGTTATACATGGAAGGGACCGTGGATAATCACCATTTCAAATGCACATCTGAAGGAGAGGGAAAACCTTACGAAGGGACCCAGACAATGCGTATCAAAGTGGTCGAGGGTGGCCCTTTACCATTCGCGTTCGACATCCTGGCGACCTCCTTTTTATATGGGAGCAAAACATTCATTAACCACACCCAGGGAATCCCGGATTTCTTCAAGCAGTCTTTCCCTGAAGGGTTTACGTGGGAGCGTGTGACAACTTATGAGGATGGCGGGGTTTTGACGGCTACGCAGGATACTTCGTTACAAGACGGTTGCTTAATTTACAATGTAAAGATTCGTGGAGTAAATTTTACATCAAACGGTCCGGTCATGCAAAAGAAAACCCTTGGTTGGGAGGCGTTTACCGAGACATTGTATCCTGCCGACGGGGGATTAGAGGGTCGCAATGATATGGCACTGAAACTTGTGGGGGGGTCTCATTTAATTGCAAACGCTAAGACAACTTACCGCTCCAAGAAGCCCGCTAAGAACCTGAAAATGCCTGGGGTCTACTATGTTGACTATCGCCTTGAGCGTATCAAGGAGGCGAACAACGAGACTTACGTCGAGCAGCATGAGGTAGCGGTTGCCCGTTACTGTGACCTGCCATCTAAGTTAGGACATAAGTTGAAT" . + . + . + . + "Cyan FP (free); codon optimized using IDT tool \nmeffCFP" . + "meffCFP" . + . + . + "meffCFP" . + . + . + . + "meffCFP_sequence" . + "ATGGCGCTTTCAAAGCAGAGTTTACCGAGTGACATGAAGTTGATCTACCACATGGACGGGAACGTGAATGGTCACTCTTTCGTCATTAAGGGTGAAGGCGAGGGAAAACCCTATGAAGGAACACATACTATCAAGCTGCAAGTTGTTGAGGGCTCACCGTTACCTTTCAGCGCCGACATTCTGTCCACAGTTTTTCAATATGGGAACCGCTGTTTCACTAAGTATCCGCCTAATATCGTCGATTATTTTAAGAATAGCTGTTCTGGTGGGGGCTACAAGTTTGGACGCAGCTTTCTTTACGAAGACGGTGCGGTCTGTACGGCGTCAGGCGATATTACTCTGTCCGCAGACAAAAAGAGCTTTGAACACAAATCGAAATTCTTAGGCGTGAACTTCCCGGCTGACGGTCCGGTGATGAAGAAAGAGACCACCAACTGGGAACCATCGTGCGAAAAAATGACTCCGAATGGCATGACACTGATCGGTGACGTTACGGGTTTTTTGTTGAAGGAGGACGGAAAGCGTTACAAATGTCAATTTCATACCTTCCATGACGCTAAAGATAAGTCCAAAAAGATGCCGATGCCCGACTTCCACTTTGTCCAGCATAAAATTGAGCGCAAGGACCTTCCTGGAAGTATGCAAACATGGCGTCTTACCGAGCACGCGGCAGCATGTAAAACTTGTTTTACGGAG" . + . + . + . + "Blue FP (free); codon optimized using IDT tool \nmmilCFP" . + "mmilCFP" . + . + . + "mmilCFP" . + . + . + . + "mmilCFP_sequence" . + "ATGGCTCTGCCTAAACAAATGAAACTGACTTATCACATGGAGGGTACTGTGAACGGTCATTTTTTTATCATCAAGGGCGAAGGAGGGGGAGAGCCGTATGAGGGTACTCATACGATCAAGTTACAGGTGGTAGAGGGAAGCCCGTTGCCCTTTTCACCGGATATTCTTTCCACCGTCTTCCAATACGGCAACCGCTGCTTCACTAAATACCCTCCCAACATCGTTGATTACTTCAAAAACTCCTGCTCGGGCGGCGGTTATACTTTTGGACGTAGCTTCCTTTATGAGGACGGAGCTGTCTGTACTGCTTCCGGTGACATTACGCTGAGCAGCGACAAATCATCCTTTGAGCACAAATCTAAATTTCTGGGAGTAAACTTTCCTGCCGATGGCCCGGTGATGAAAAAAGAAACCACTAATTGGGAGCCTTCATGTGAGAAAATGACACCCAACGGGATGACCTTAATCGGTGATGTGACGGAGTTCCTGTTGAAGAAGGACGGTAAGCGTTACAAGTGCCAATTCCACACATTCCACGACGCGAAGGAGAAAAGCCGCAATATGCCGATGCCCGATTTCCATTTCGTTCAGCACGAGATTGAACGTAAAGATTTGCCAGGACCAATGCAAACATGGCAGTTGACCGAGCACGCAGCAGCCTGTAAGAACTGTTTCACAGAG" . + . + . + . + "pMB1 replicon, 100-300 copy" . + "pSB1C3" . + . + "pSB1C3" . + . + . + . + . diff --git a/test/test_document.py b/test/test_document.py index 42f1440..c681a2e 100644 --- a/test/test_document.py +++ b/test/test_document.py @@ -350,6 +350,16 @@ def mte_builder(identity: str = None, # Reach behind the scenes to remove the registered builder del sbol3.Document._uri_type_map[ext_type_uri] + def test_variable_feature_shacl(self): + # See https://github.com/SynBioDex/sbol-shacl/issues/4 + # This file should be valid. Ensure we are handling + # VariableFeature in the SHACL rules + test_file = os.path.join(TEST_RESOURCE_DIR, 'simple_library.nt') + doc = sbol3.Document() + doc.read(test_file) + report = doc.validate() + self.assertEqual(0, len(report)) + if __name__ == '__main__': unittest.main()