SynBioDex / pySBOL2

A pure Python implementation of the SBOL standard.
Apache License 2.0
20 stars 6 forks source link

Request: Explain OwnedObject in docs #393

Open rpgoldman opened 3 years ago

rpgoldman commented 3 years ago

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?