-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sbol3-10807 - Clarify which Component's sequence should be linked to locations #492
Comments
I'm having a hard time with your example: your range objects are missing their required If Here's the key idea in this rule: in the prior rule, But |
I'm also confused by your example. I thought hasSequence is used to identify which sequence is where the subComponent is found in the case that the Component referenced by the instanceOf property has more than one sequence linked to it. In this case, pointing to the parent_Sequence1 should not be allowed, since it is not one of the sequences for child. |
I changed the example as shown below. Could you please check if it is correct now (including the range start and end locations)? Range.hasSequence now points to sequences from the child components. I think the example below will now violate sbol3-11402 ("The value of the end property of a Range MUST be greater than zero and less than or equal to the length of the elements value of theSequence referred to by its hasSequence property"). Additionally, according to sbol3-11302, Range.hasSequence should point to sequences from the parent. As a result, this example would also violate sbol3-11302 ("For every Location that is not an EntireSequence and that is the value of a hasLocation property of a Feature, the value of its hasSequence property MUST also either be a value of the hasSequence property of the parent Component or else be the value of some hasSequence property of an EntireSequence that is also a child of the same Component"). I think I misinterpret some of these validation rules, but I'm not sure which ones. Are you aware of any use cases or example diagrams I can look at? I probably need to revise all the validation rules that depend on the hasLocation and sourceLocation properties. :parent a sbol:Component ; :parent_Sequence1 a sbol:Sequence ; :child a sbol:Component ; :child_Sequence1 a sbol:Sequence ; <parent/SubComponent1> <parent/SubComponent1/Range1> <parent/SubComponent1/Range2> |
You are correct: your example violates both of those rules, as expected:
|
Chris, Jake, apologies, I'm still not understanding the rule 10807 (If a SubComponent object has at least one hasLocation and zero sourceLocation properties, and the Component linked by its instanceOf has precisely one hasSequence property whose Sequence has a value for its elements property, then the sum of the lengths of the Location objects referred to by the hasLocation properties MUST equal the length of the elements value of the Sequence.). I'm trying to come up with a case that satisfies this rule. But, I'm still struggling to understand this rule biologically. Would you be able to please send me a biologically valid SBOL example for this validation rule? According to the rule 10807, I assume the following (I must misunderstand something here):
|
The typical case of Rule 10807 is including a whole part. For an example, take a look at the Anderson Promoters package in the iGEM distribution. Specifically, let's look at the plasmid insert for J23100,
Thus, this construction says "the sequence for Here are some variations that are important for understanding the operation of the rule:
|
Many thanks @jakebeal I provided an example for multiple locations, this is where I was confused. I hope this is correct. I extended your promoter example to specify the RNAP binding feature using two ranges (e.g. -35 and -10 boxes). I only showed the necessary properties in the example. Each range has 5 bases, and the binding sequence is 10 bases in total. <plasmid/SubComponent1/Range1> :BBa_J23100_RNAPbinding <plasmid/SubComponent1> <plasmid/SubComponent1/Range2> :BBa_J23100_RNAPbinding_Sequence1 :plasmid a sbol:Component ; :plasmid_Sequence1 a sbol:Sequence ; |
Yes, what you have written here is valid by rule sbol3-10807. |
According to the validation rule 10807, the location object's sequence properties should point subComponent.instanceOf.Sequence rather than via the parent component that contains SubComponent. Can we please double check if this rule is correct?
sbol3-10807 �- If a SubComponent object has at least one hasLocation and zero sourceLocation properties, and the Component linked by its instanceOf has precisely one hasSequence property whose Sequence has a value for its elements property, then the sum of the lengths of the Location objects referred to by the hasLocation properties MUST equal the length of the elements value of the Sequence.
Considering the following example. I assume Range1.hasSequence points to parent_Sequence1 rather than child_Sequence1.
:parent a sbol:Component ;
sbol:hasFeature <parent/SubComponent1> ;
sbol:hasSequence :parent_Sequence1 .
<parent/SubComponent1>
a sbol:SubComponent ;
sbol:hasLocation <parent/SubComponent1/Range1> ;
sbol:instanceOf :child .
:parent_Sequence1 a sbol:Sequence ;
sbol:elements "atgcgtaaaggagaagaacttttca" .
<parent/SubComponent1/Range1>
a sbol:Range ;
sbol:hasSequence :parent_Sequence1 .
:child a sbol:Component ;
sbol:hasSequence :child_Sequence1 .
:child_Sequence1 a sbol:Sequence ;
sbol:elements "atg" .
The text was updated successfully, but these errors were encountered: