All Downloads are FREE. Search and download functionalities are using the official Maven repository.

model.observ.xml Maven / Gradle / Ivy

<?xml version="1.0" encoding="UTF-8"?>
<molgenis name="org.molgenis.omx">
	<module name="observ">
		<description>
			Observ-OM is a model to uniformly describe any phenotypic, genotypic
			or
			molecular observation. The four core concepts are:
			<ul>
				<li>
					<b>ObservationTarget:</b>
					the object we are observing.
					<br />
					For example: an Individual,
					a Panel/Strain, a Sample, a Gene, a
					Marker.
				</li>
				<li>
					<b>ObservableFeature:</b>
					the question asked or characteristic being
					oberveded.
					<br />
					For example: 'What is height of [Target]?', 'What is genotype of
					[Target] at
					[Marker]?', 'Has [Target] ever used medicine [X]', 'What
					is QTL p-value
					association of [Marker] with [Gene Expression]?
				</li>
				<li>
					<b>Protocol:</b>
					the procedure of observation
					<br />
					For example: Food Frequency Questionnaire (FFQ), R/QTL mapping
					method,
					Genotype array, GWAS protocol.
				</li>
				<li>
					<b>Observation:</b>
					the actual act of observation. For example:
					'FFQ asked to
					[Individual:individual1], 'R/QTL applied to
					[Marker:pvv4]',
					'Genotype array applied to [Panel:Mouse RIL BxD 1].
					Each observation
					can have multiple ObservedValue AND be grouped into a DataSet.
				</li>
			</ul>
		</description>
		<entity name="Characteristic" implements="Identifiable">
			<description> Characteristics are yes-no
				statements about things in
				the world. These can be used as part of an observation, as
				parameter
				of ObservableFeature ('measuredCharacteristic'). For
				example: 'What
				is allele of [Marker]', here the [Marker] is a
				characteristic. Also,
				Characteristics can be used as target of
				observation. Typical
				examples are 'Individual' or 'Panel'. But also
				'Marker' can be an
				Target when asked the question 'QTL p-value for
				[phenotype]': here
				both target and feature are characteristic, for
				example 'leave count'
				(phenotype characteristic) and 'PVV4' (marker
				characteristic).
			</description>
			<field name="description" type="text" nillable="true"
				description="(Optional) Rudimentary meta data about the observable feature. Use of ontology 
					terms references to establish unambigious descriptions is recommended" />
		</entity>
		<entity name="ObservationTarget" extends="Characteristic">
			<description> ObservationTarget defines subjects of
				observation, such
				as Individual, Panel, Sample, etc. For instance: 'target 1' IS A
				'Individual'.
			</description>
		</entity>
		<entity name="ObservableFeature" extends="Characteristic">
			<description>
				ObservableFeature defines anything that can be observed.
				<p />
				In other words, ObservableFeature are the
				questions asked, e.g. 'What
				is Height?', 'What is Systolic blood
				pressure?', or 'Has blue eyes?'.
				<p />
				Some questions may
				be repeated for multiple characteristics. For
				example 'What is [MarkerAllele]
				observed?' can be applied to all
				elements of a MarkerSet, and 'What
				is [medicin codes] uses' can be
				applied to a set of Medicine codes. This can be specified using the
				measuredCharacteristic field.
				<p />
				The identifier of ObservableFeature is globally
				unique. It is
				recommended that
				each
				ObservableFeature is named
				according to a
				well-defined ontology
				term or database accession.
			</description>
			<field name="unit" type="xref" xref_entity="OntologyTerm"
				nillable="true"
				description="(Optional) Reference to the well-defined measurement unit used to observe this feature 
					(if feature is that concrete). E.g. mmHg" />
			<field name="definition" type="xref" xref_entity="OntologyTerm" description="The concept that is being measured in a specific way." nillable="true" />
			<field name="dataType" type="enum" default="string"
				enum_options="[bool,categorical,date,datetime,decimal,email,enum,file,html,hyperlink,image,int,long,mref,string,text,xref]"
				description="(Optional) Reference to the technical data type. E.g. 'int'" />
			<field name="temporal" type="boolean" default="false"
				description="Whether this feature is time dependent and can have different values when measured 
					on different times (e.g. weight, temporal=true) or generally only measured once (e.g. birth date, 
					temporal=false) " />
		</entity>
		<entity name="Category" extends="Characteristic">
			<description>Category is partOf ObservableFeature to define
				categories for an
				ObservableFeature, such as the categorical
				answer codes that are often used in Questionaires. 
				For example the ObservableFeature 'sex' has
				{code_string = 1, label=male} and {code_string
				= 2, label=female}.
				Category can be linked to well-defined
				ontology terms via the
				ontologyReference. Category
				extends
				ObservationElement such that it
				can be referenced by
				ObservedValue.value.
				The Category class maps to
				METABASE::Category
			</description>
			<field name="observableFeature" type="xref" xref_entity="ObservableFeature"
				description="The Measurement these permitted values are part of." />
			<field name="valueCode" type="string"
				description="The value used to store this category in ObservedValue. For example '1', '2'." nillable="true"/>
			<field name="definition" type="xref" xref_entity="OntologyTerm" description="The category that is being measured in a specific way." nillable="true" />
			<field name="isMissing" type="bool" default="false"
				description="whether this value should be treated as missing value." />
		</entity>
		<entity name="Protocol" extends="Characteristic">
			<!-- has name, identifier, description, accession, accessionVersion. Should 
				be part of a submission -->
			<description>
				The Protocol class defines parameterizable descriptions
				of
				(analysis)methods. Examples of protocols are: Questionaires, SOPs,
				Assay platforms, Statistical analyses, etc.
				Each protocol has a
				unique identifier.
				Protocol has an association to OntologyTerm to
				represent the type of
				protocol.
			</description>
			<field name="ProtocolType" nillable="true" type="xref"
				xref_entity="OntologyTerm" description="classification of protocol" />
			<field name="subprotocols" type="mref" xref_entity="Protocol" nillable="true" description="Subprotocols of this protocol"/>
			<field name="Features" type="mref" nillable="true" xref_entity="ObservableFeature"
				description="parameters (in/out) that are used or produced by this protocol." />
		</entity>
		<entity name="DataSet" extends="Characteristic">
			<description>Container for one or more observations that are measured
				using the same protocol and by the same performer(s). The dataset
				may be a file (having the same
				identifier) but in most cases it is a
				data table consisting of rows (Observation).

				This entity replaces
				ProtocolApplication.
			</description>
			<field name="ProtocolUsed" type="xref" xref_entity="Protocol"
				description="Reference to the protocol that is being used (if available)" />
			<field auto="true" name="startTime" type="datetime"
				description="time when the protocol started." />
			<field auto="true" name="endTime" type="datetime" nillable="true"
				description="(Optional) time when the protocol ended." />
		</entity>
		<entity name="ObservationSet" implements="Autoid">
			<description>In practice: Observation is one row within a DataSet.
			</description>
			<field name="partOfDataSet" type="xref" xref_entity="DataSet"
				description="DataSet this ValueSet is part of." />
			<field name="Time" type="datetime" description="Time of this observationSet" nillable="true" />
			<unique fields="partOfDataSet,Time" description="No single secondary key" />
		</entity>
		<entity name="ObservedValue" implements="Autoid">
			<description>
				Generic storage of values as part of one observation
				event. Values are atomatic observations,
				e.g.,
				length (feature) of
				individual 1 (valueset.target)
				= 179cm (value).
				Values can also be
				qualified by some characteristic,
				e.g., QTL
				p-value (feature)
				between
				phenotype 'leaf count'
				(characteristic) and
				marker 'PVV4'
				(valueset.target) =
				0.1^10+3 (value).
			</description>
			<field name="ObservationSet" type="xref" xref_entity="ObservationSet"
				description="Reference to the observation. For example a particular patient visit or the application of a microarray or the calculation of a QTL model" />
			<field name="Feature" type="xref" xref_entity="ObservableFeature"
				description="References the ObservableFeature that this observation was made on. For example 'probe123'." />
			<!-- removed: <field name="Characteristic" nillable="true" type="xref"
				xref_entity="Characteristic" description="Is brother of [characteristic], or Average of [height]" /> -->
			<field name="Value" type="xref" xref_entity="Value" nillable="true" description="The value observed" /> 
		</entity>
	</module>
	<module name="observ.target">
		<entity name="Species" extends="OntologyTerm">
			<description>Ontology terms for species. E.g. Arabidopsis thaliana.
				DISCUSSION: should we avoid subclasses of OntologyTerm and instead
				make a 'tag' filter on terms so we can make pulldowns context
				dependent (e.g. to only show particular subqueries of ontologies).
			</description>
		</entity>
		<entity name="Individual" extends="ObservationTarget">
			<description> The Individuals class defines the subjects that are
				used
				as observation target. The Individual class maps to
				XGAP:Individual
				and PaGE:Individual. Groups of individuals can be
				defined via
				Panel.
			</description>
			<field name="Mother" type="xref" nillable="true" xref_entity="Individual"
				description="Refers to the mother of the individual." />
			<field name="Father" type="xref" nillable="true" xref_entity="Individual"
				description="Refers to the father of the individual." />
		</entity>
		<entity name="Panel" extends="ObservationTarget">
			<!-- panel has: identifier, description, accessions -->
			<description>The Panel class defines groups of individuals based on
				cohort design, case/controls, families, etc. For instance:
				'LifeLines
				cohort', 'middle aged man', 'recombinant mouse inbred Line
				dba x b6'
				or 'Smith family'. A Panel can act as a single
				ObservationTarget.
				For example: average height (Measurement) in the
				LifeLines cohort
				(Panel) is 174cm (ObservedValue). The Panel class
				maps to XGAP:Strain and PaGE:Panel
				classes. In METABASE this is
				assumed there is one panel per study.
			</description>
			<field name="PanelType" type="xref" xref_entity="OntologyTerm"
				nillable="true"
				description="Indicate the type of Panel (example: Sample panel, AssayedPanel, Natural=wild type, Parental=parents of a cross, F1=First generation of cross, RCC=Recombinant congenic, CSS=chromosome substitution)" />
			<field name="NumberOfIndividuals" type="int" />
			<field name="Species" type="xref" nillable="true" xref_entity="Species"
				description="The species this panel is an instance of/part of/extracted from." />
			<field name="Individuals" type="mref" xref_entity="Individual"
				nillable="true" description="The list of individuals in this panel" />
		</entity>
		<entity name="PanelSource" implements="Autoid">
			<!-- todo: this should probably be a subclass of protocolApplication? -->
			<!-- experimental -->
			<description>PanelSources is partOf Panel to define how panels are
				related panels, founder panels,
				such as overlap,
				selection criteria,
				getting assayed panel from a
				sample panel, etc.
			</description>
			<field name="CurrentPanel" type="xref" xref_entity="Panel"
				description="Panel for which these sources are defined." />
			<field name="SourcePanel" type="xref" xref_entity="Panel"
				description="Source that contributed individuals to current panel" />
			<field name="NumberOfIndividuals" type="int" nillable="true"
				description="Number of individuals lifted over from this source" />
			<field name="SelectionCriteria" type="text"
				description="Inclusion/exclusion criteria used to select these individuals from source into current panel" />
		</entity>
		<entity name="Ontology" implements="Identifiable">
			<description> Ontology defines a reference to an ontology or
				controlled vocabulary from which well-defined and stable (ontology)
				terms can be obtained. Each Ontology should have a unique identifer,
				for instance: Gene Ontology, Mammalian Phenotype, Human Phenotype
				Ontology, Unified Medical Language System, Medical Subject Headings,
				etc. Also a abbreviation is required, for instance: GO, MP, HPO,
				UMLS, MeSH, etc. Use of existing ontologies/vocabularies is
				recommended to harmonize phenotypic feature and value descriptions.
				But one can also create a 'local' Ontology. The Ontology class maps
				to FuGE::Ontology, MAGE-TAB::TermSourceREF.
			</description>
			<field auto="false" name="ontologyAccession" type="string"
				nillable="true"
				description="A accession that uniquely identifies the ontology (typically an acronym). E.g. GO, MeSH, HPO." />
			<field nillable="true" auto="false" name="ontologyURI" type="hyperlink"
				description="(Optional) A URI that references the location of the ontology." />
		</entity>
		<entity name="OntologyTerm" extends="Characteristic">
			<description>
				OntologyTerm defines a single entry (term) from an
				ontology or a controlled vocabulary (defined by Ontology). The
				identifier is the ontology term is unique. E.g. 'NCI:Antigen Gene'.
				Other data entities can reference to this OntologyTerm to harmonize
				naming of concepts. If no suitable ontology term exists then one can
				define new terms locally (in which case there is no formal accession
				for the term limiting its use for cross-Investigation queries).
			</description>
			<field auto="false" name="ontology" type="xref" nillable="true"
				description="(Optional) The source ontology or controlled vocabulary list that ontology terms have been obtained from."
				xref_entity="Ontology" />
			<field nillable="true" auto="false" name="termAccession" type="varchar"
				description="(Optional) The accession number assigned to the ontology term in its source ontology. If empty it is assumed to be a locally defined term. " />
			<field nillable="true" auto="false" name="definition" type="string"
				description="(Optional) The definition of the term." />
			<unique fields="ontology,termAccession"
				description="The term accession is unique within an Ontology" />
		</entity>
		<entity name="Accession" extends="OntologyTerm">
			<description>
				An external identifier for an annotation. For example:
				name='R13H8.1', ontology='ensembl' or name='WBgene00000912',
				ontology='wormbase'.
			</description>
		</entity>
	</module>
	<module name="observ.value">
		<entity name="Value" implements="Autoid">
			<description></description>
		</entity>
		<entity name="BoolValue" extends="Value">
			<description></description>
			<field name="Value" type="bool" />
		</entity>
		<entity name="CategoricalValue" extends="Value">
			<description></description>
			<field name="Value" type="xref" xref_entity="Category" />
		</entity>
		<entity name="DateValue" extends="Value">
			<description></description>
			<field name="Value" type="date" />
		</entity>
		<entity name="DateTimeValue" extends="Value">
			<description></description>
			<field name="Value" type="datetime" />
		</entity>
		<entity name="DecimalValue" extends="Value">
			<description></description>
			<field name="Value" type="decimal" />
		</entity>
		<entity name="EmailValue" extends="Value" decorator="org.molgenis.omx.decorators.EmailValueDecorator">
			<description></description>
			<field name="Value" type="email" />
		</entity>
		<entity name="HtmlValue" extends="Value">
			<description></description>
			<field name="Value" type="text" />
		</entity>
		<entity name="HyperlinkValue" extends="Value" decorator="org.molgenis.omx.decorators.HyperlinkValueDecorator">
			<description></description>
			<field name="Value" type="hyperlink" />
		</entity>
		<entity name="IntValue" extends="Value">
			<description></description>
			<field name="Value" type="int" />
		</entity>
		<entity name="LongValue" extends="Value">
			<description></description>
			<field name="Value" type="long" />
		</entity>
		<entity name="MrefValue" extends="Value">
			<description></description>
			<field name="Value" type="mref" xref_entity="Characteristic" />
		</entity>
		<entity name="StringValue" extends="Value">
			<description></description>
			<field name="Value" type="string" />
		</entity>
		<entity name="TextValue" extends="Value">
			<description></description>
			<field name="Value" type="text" />
		</entity>
		<entity name="XrefValue" extends="Value">
			<description></description>
			<field name="Value" type="xref" xref_entity="Characteristic" />
		</entity>
	</module>
</molgenis>




© 2015 - 2025 Weber Informatics LLC | Privacy Policy