In order to understand the data model for pySBOL2, one needs to understand the distinction that @bbartley explains as follows:
an OwnedObject property indicates that the attribute should be assigned an object value, e.g., OwnedParticipation should be assigned a Participation object (or list thereof). It's used for compositional relationships in data structures.
An OwnedObject is distinct from a ReferencedObject, which indicates that the attribute is assigned the URI of an object -- for associative data structures.
Ideally, this distinction should be explained (and motivated) in "Getting Started with SBOL," because it's critical to understanding how to interact with the data model.
Probably this discussion should also include instructions for what to do if you have a URI (e.g., from a ReferencedObject, and need to get from there to a python object).
At some point, I am afraid, the docs need to also tackle the question of how to get from SynBioHub, or some similar repository, a pySBOL Document that contains all, and ideally only, the entities one wants to solve a problem. I.e., let's say I follow pointers to a URI about which I want more information: (a) if it's in my Document object, how do I get it? (It seems like I have to know what sort of object it is, in addition to its URI, in order to get the corresponding Python object) or (b) if it's not in my Document, how do I fetch it and its attributes without accidentally triggering an overnight download?
In order to understand the data model for pySBOL2, one needs to understand the distinction that @bbartley explains as follows:
Ideally, this distinction should be explained (and motivated) in "Getting Started with SBOL," because it's critical to understanding how to interact with the data model.
Probably this discussion should also include instructions for what to do if you have a URI (e.g., from a
ReferencedObject
, and need to get from there to a python object).At some point, I am afraid, the docs need to also tackle the question of how to get from SynBioHub, or some similar repository, a pySBOL
Document
that contains all, and ideally only, the entities one wants to solve a problem. I.e., let's say I follow pointers to a URI about which I want more information: (a) if it's in myDocument
object, how do I get it? (It seems like I have to know what sort of object it is, in addition to its URI, in order to get the corresponding Python object) or (b) if it's not in myDocument
, how do I fetch it and its attributes without accidentally triggering an overnight download?