Skip to content

Commit

Permalink
Update SHACL rules
Browse files Browse the repository at this point in the history
Incorporate changes to the SHACL rules based on an update to the SBOL3
RDF files in SynBioDex/sbol-shacl. These changes remove
VariableComponent and add VariableFeature. Include a new test case
since the SBOLTestSuite does not contain any files with
VariableFeature or VariableComponent.
  • Loading branch information
tcmitchell committed May 28, 2021
1 parent e9495c0 commit 9f63b3d
Show file tree
Hide file tree
Showing 3 changed files with 737 additions and 42 deletions.
97 changes: 55 additions & 42 deletions sbol3/rdf/sbol3-shapes.ttl
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
@prefix dash: <http://datashapes.org/dash#> .
@prefix om: <http://www.ontology-of-units-of-measure.org/resource/om-2/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
Expand All @@ -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,
Expand Down Expand Up @@ -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,
Expand All @@ -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 ;
Expand All @@ -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 ;
Expand All @@ -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 ;
Expand Down Expand Up @@ -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" ;
Expand All @@ -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 ;
Expand All @@ -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 ;
Expand Down
Loading

0 comments on commit 9f63b3d

Please sign in to comment.