Open mslw opened 1 year ago
A snapshot from a whiteboard discussion, to refresh our memories:
Not included on the board:
sfb1451:studiedSpecies
, but it might know what to do with prov:derivedFrom
sfb1451:studiedSpecies
) but then it's likely that the data can only be understood by us (within the sfb145 context)
Current state
As of now, the Dataset class uses the following IRIs to define its slots (slot name formatting came from linkml and seems related to how the slots were defined - through attributes or slot usage):
Code snippet
``` python from linkml.utils.schemaloader import SchemaLoader schema = SchemaLoader("src/sfb1451_schema.yaml").resolve() for s_name in schema.classes['Dataset'].slots: slot = schema.slots[s_name] print(f"| {slot.name} | {slot.slot_uri} |") ```Three of them are types (or names of controlled terms), rather than attributes, in their respective vocabularies. I think that's bad (a property should be a property, and the type should be its range). These are:
How to annotate these properly?
I think one example we have is a data controller. We use the
dpv:hasDataController
property, and define aDataController
class (that uses thedpv:DataController
URI, but has a set of mandatory/optional fields defined by us).Option 1: with linkML we can define any Dataset property we want (e.g.
contributingProject
,studiedSpecies
,studiedOrganismPart
or ) and define corresponding classes as their expected Range. The properties would then use our identifiers, and the classes would (likely) use those defined above (schema:ResearchProject
,openminds:Species
,openminds:UBERONParcellation
), or at least refer to them as closely related.Option 2: use a very generic property a'la "related to" from some standard vocabulary, and only use types to distinguish. So a dataset would be related to a given project, and a given species, etc. I think this is semantically valid, but ugly for processing.
Option 3: find the right properties in a known dictionary. I think it can be hard - at least I failed.