Closed jakebeal closed 3 years ago
I'm dropping this into 3.0.1 for now, but it might need to move back to 3.1
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”.
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.
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 ansbol:CombinatorialDerivation
with an additionalopil: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
andTopLevel
.I see pros and cons for this type of extension:
opil:SampleSet
to being asbol:CombinatorialDerivation
or if it should treat it instead as an extension object? Also: will this make problems for libraries in other languages?