SynBioDex / SBOL-specification

The Synthetic Biology Open Language (SBOL)
http://sbolstandard.org
13 stars 9 forks source link

Extension of SBOL classes #436

Closed jakebeal closed 3 years ago

jakebeal commented 3 years ago

In building extension languages on top of SBOL, sometimes we are finding that we want to extend an SBOL class. For example, in our current implementation of the OPIL protocol interface language an opil:SampleSet is an sbol:CombinatorialDerivation with an additional opil:replicates property added.

We have realized, however, that this type of extension is not currently addressed by the specification. At present, extension of SBOL is done either by adding extra properties to an SBOL object or by adding new disjoint subclasses for Identified and TopLevel.

I see pros and cons for this type of extension:

jakebeal commented 3 years ago

I'm dropping this into 3.0.1 for now, but it might need to move back to 3.1

jakebeal commented 3 years ago

From mailing list discussion: this can be cleanly done with two rdf:types, so it would be “a SBOL:CombinatorialDerivation” and also “a opil:SampleSet”.

jakebeal commented 3 years ago

My key thought and concern is whether this is whether we can assure that tools will handle the associated reasoning correctly. To see if this makes sense, I want to work through an example.

Consider feeding an opil:SampleSet to a tool that makes derivative sets of Component objects from a CombinatorialDerivation. Since an opil:SampleSet is a CombinatorialDerivation, it's perfectly reasonable to enumerate all of the conditions in the samples. The extra replicate information can be correctly ignored, since the the derivative isn't talking about samples, it's talking about design conditions.

An OPIL-aware tool could then take that expansion and use the wasDerivedFrom information to find the opil:SampleSet, then use that information to replicate the design conditions into samples.

I think this works.