Mapping description syntax for MIFlowCyt to FuGEFlow and abbreviations of frequently used terms in FuGE
- Full name of a class includes namespaces (also called owners) separated by double semicolons, e.g.,
FuGE::Common::Describable
- An attribute is separated from the class name by a dot, e.g.,
FuGE::Common::Describable.description
If the attribute A (e.g., FuGE::Common::Describable.uri) is of a type of a class C (e.g., FuGE::Common::Description::URI) and C has an attribute B (e.g., FuGE::Common::Description::URI.uri) then B can be referenced as full name of A . short name of B, e.g.,
FuGE::Common::Describable.uri.uri
If an attribute is of a type of another class then such an attribute can also be seen as a relation (association); there is no need to distinguish these (associations can only be followed in the directions of the arrow). The attribute is also the “starting association end”. In the previous case there is a relation between FuGE::Common::Describable and FuGE::Common::Description.URI. This relation is named “URI” (unlike the attribute that is named “uri”). The previous case may also adequately be described using the association name rather then the attribute name, i.e.,:
FuGE::Common::Describable.URI.uri
If an association or attribute allows for multiplicity such as [0..*] or [1..*], this may be noted. This is especially important if we need such a multiplicity for our purposes, e.g., more than one description needed. For example the attribute FuGE::Common::Describable.descriptions allows for [0..*] multiplicity. It is of type FuGE::Common::Description::Description that has the attribute FuGE::Common::Description::Description.text. The full path may be noted as
FuGE::Common::Describable.descriptions[*].text
- Similar to previous, the name of the association may be used instead of the attribute name, e.g.,:
FuGE::Common::Describable.Descriptions[*].text
If class C (e.g., FuGE::Bio::Material::GenericMaterial) is inherited from class P1 (e.g., FuGE::Bio::Material::Material), class P1 from class P2 (e.g., FuGE::Common::Identifiable), and class P2 from P3 (e.g., FuGE::Common::Describable) and we need to reference inherited (generalized) attributes or associations, we use the “ -|> ” (spaces around) symbol to specify the inheritance. Only the starting class and the desired (grand)parent is specified (not all the classes in the inheritance path). For example, in order to specify the name of the generic material, we use:
FuGE::Bio::Material::GenericMaterial.name -|> FuGE::Common::Identifiable.name
- Description of such a material could be expressed as:
FuGE::Bio::Material::GenericMaterial.descriptions[*].text -|> FuGE::Common::Describable.descriptions[*].text or
FuGE::Bio::Material::GenericMaterial.Descriptions[*].text -|> FuGE::Common::Describable.Descriptions[*].text
- The same inheritance symbol is used to specify that we intend to extend a new class from an existing class. Our classes will be put into the FCM namespace, which distinguishes existing from intended classes. For example:
FCM::Material -|> FuGE::Bio::Material::Material
- This way we specify that we intend to add attributes:
FCM::Material.reporter
The type of the new attribute shall be specified using a single colon (spaces around). If our FCM::Material.reporter attribute is of the FuGE::Bio::Material::Material type, we specify:
FCM::Material.reporter : FuGE::Bio::Material::Material
If our FCM::Material.reporter attribute is of our own “Reporter” class type, we define the “Reporter” class first and use it after, e.g.:
FCM::Reporter -|> FuGE::Bio::Material::Material
FCM::Material.reporter : FCM::Reporter
An advantage of having an own class instead of reusing FuGE class is that we will be able to add association if needed, e.g., between the FCM::Reporter and the FCM::Analyte class. These relations can be specified as a simple arrow (i.e., ->, <-, or <->), e.g.,
FCM::Reporter <-> FCM::Analyte
- Such relations can also be specified as attributes (association ends) at both sides, e.g.,
FCM::Reporter.analyte : FCM::Analyte
FCM::Analyte.reporter : FCM::Reporter
- If we want to use an inherited attribute in our own class, we specify it the same way as with existing classes, e.g.,
FCM::Material.identifier -|> FuGE::Common::Identifiable.identifier
Peter Wilkinson wrote:
- Can you add an example for mapping to an ontology, such as from instrument through the Make relation to the ontology entity. P
Josef Spidlen responded:
- This would mean to inherit FCMInstrument from Equipment:
FCM:FCMInstrument -|> FuGE::Common::Protocol::Equipment
- This here to reference the inherited "make" attribute
FCM:FCMInstrument.make -|> FuGE::Common::Protocol::Equipment.make
or the "EquipmentMake" relation/association if you prefer
FCM:FCMInstrument.EquipmentMake -|> FuGE::Common::Protocol::Equipment.EquipmentMake
The "make" attribute or the right side of the relation are of the type FuGE::Common::Ontology::OntologyTerm, which means that they have attributes like "term" or "termAccession".
- I guess that in this case you just need to specify
FCM:FCMInstrument.make -|> FuGE::Common::Protocol::Equipment.make in the spreadsheet for the make of a flow cytometer.
********************************************************************************************************
Proposed Abbreviations by Max:
The purpose of using abbreviations is to save developer's time of reading/typing frequently used terms in FuGE. The general rule is that full-path FuGE pakcages/classes can have abbreviations but the attributes and associations cannot. That is, things before dot (".") in our syntax can have abbreviations but things after dot need to be in fullname. For example, FuGE::Common::Describable.description can be written as FG_dscb.description
All concepts in FCM package cannot be abbreviated as they are novel and can only be understood in full names.
Note: In the abbreviations, an package name is upper case and class name lower case. Different levels of terms are connected with underscore from left to right.
Common
FG_dscb = FuGE::Common::Describable
FG_idtf = FuGE::Common::Identifiable
FG_ADT = FuGE::Common::Audit
FG_ADT_adt = FuGE::Common::Audit::Audit
FG_ADT_ctc = FuGE::Common::Audit::Contact
FG_ADT_ctcr = FuGE::Common::Audit::ContactRole
FG_ADT_secu = FuGE::common::Audit::Security
(DES) FG_DESC = FuGE::Common::Description
FG_DESC_uri = FuGE::Common::Description::URI
FG_DESC_desc = FuGE::Common::Description::Description
FG_ONT = FuGE::Common::Ontology
FG_ONT_ontt = FuGE::Common::Ontology::OntologyTerm
FG_ONT_onts = FuGE::Common::Ontology::OntologySource
(PRO) FG_PRT = FuGE::Common::Protocol
FG_PRT_prt = FuGE::Common::Protocol::Protocol
FG_PRT_gprt = FuGE::Common::Protocol::GenericProtocol
FG_PRT_sfw = FuGE::Common::Protocol::Software
FG_PRT_gsfw = FuGE::Common::Protocol::GenericSoftware
FG_PRT_eqp = FuGE::Common::Protocol::Equipment
FG_PRT_geqp = FuGE::Common::Protocol::GenericEquipment
FG_PRT_act = FuGE::Common::Protocol::Action
FG_PRT_gact = FuGE::Common::Protocol::GenericAction
FG_PRT_para = FuGE::Common::Protocol::Parameter
FG_PRT_gpara = FuGE::Common::Protocol::GenericParameter
FG_PRT_prtapp = FuGE::Common::Protocol::ProtocolApplication
FG_PRT_sftapp = FuGE::Common::Protocol::SoftwareApplication
FG_PRT_eqpapp = FuGE::Common::Protocol::EquipmentApplication
FG_PRT_actapp = FuGE::Common::Protocol::ActionApplication
FG_PRT_gprtapp = FuGE::Common::Protocol::GenericProtoclApplication
FG_PRT_pararzb = FuGE::Common::Protocol::Parameterizable
(MEA) FG_MSM = FuGE::Common::Measurement
FG_MSM_msm = FuGE::Common::Measurement::Measurement
FG_MSM_av = FuGE::Common::Measurement::AtomicValue
FG_MSM_bv = FuGE::Common::Measurement::BooleanValue
FG_MSM_rv = FuGE::Common::Measurement::RangeValue
FG_MSM_cv = FuGE::Common::Measurement::ComplexValue
FG_REF = FuGE::Common::Reference
FG_REF_dbe = FuGE::Common::Reference::DatabaseEntry
FG_REF_db = FuGE::Common::Reference::Database
FG_REF_bbg = FuGE::Common::Reference::BibliographicReference
Bio
(COM) FG_CM = FuGE::Bio::ConceptualMolecule
FG_CM_cm =FuGE::Bio::ConceptualMolecule::ConceptualMolecule
FG_CM_seq = FuGE::Bio::ConceptualMolecule::Sequence
FG_CM_seqanns = FuGE::Bio::conceptualMolecule::SequenceAnnotationSet
(DAT) FG_DT = FuGE::Bio::Data
FG_DT-dt = FuGE::Bio::Data::Data
FG_DT_dtpt = FuGE::Bio::Data::DataPartition
FG_DT_gdtpt = FuGE::Bio::Data::GenericDataPartition
FG_DT_dim = FuGE::Bio::Data::Dimension
FG_DT_dimelm = FuGE::Bio::Data::DimensionElement
(MAT) FG_MT = FuGE::Bio::Material
FG_MT_mt = FuGE::Bio::Material::Material
FG_MT_mtmsm = FuGE::Bio::Material::MaterialMeasurement
FG_MT_gmt = FuGE::Bio::Material::GenericMaterial
FG_MT_gmtmsm = FuGE::Bio::Material::GenericMaterialMeasurement
(INV) FG_INVS = FuGE::Bio::Investigation
FG_INVS_invs = FuGE::Bio::Investigation::Investigation
FG_INVS_comp = FuGE::Bio::Investigation::InvestigationComponent
FG_INVS_fct = FuGE::Bio::Investigation::Factor
FG_INVS_fctvl = FuGE::Bio::Investigation::FactorValue
Collection
FG_fg = FuGE::Collection::FuGE
FG_invscol = FuGE::Collection::InvestigationCollection
FG_adtcol = FuGE::Collection::AuditCollection
FG_dtcol = FuGE::Collection::DataCollection
FG_ontcol = FuGE::Collection::OntologyCollection
FG_mtcol = FuGE::Collection::MaterialCollection
FG_prtcol = FuGE::Collection::ProtocolCollection
FG_cmcol = FuGE::Collection::ConceptualMoleculeCollection
FG_refcol = FuGE::Collection::ReferenceableCollection
This is an incomplete list of all classes in FuGE as we only wanted to provide abbreviations for classes frequently used. You are welcome to add and modify abbreviations of more classes if you think necessary. In most cases, full paths of all classes can be shortened because their prefix are replaced with abbreviations.
When FuGEFlow model is ready to release, we can simply replace all the abbreviations with corresponding full paths. Before that, abbreviations can be useful shortcuts for developers.
