Semantic ontologies in KoBo

Dear KoBo Community,

We are working on a project that aims to make the data collected for one project reusable beyond a specific project context. We use semantic ontologies to tackle this shortcoming and bridge the gap between specific isolated datasets. The data collected with our implementation is semantically annotated based on popular ontologies like OBOE and OM2. We want to add the functionality described above in the KoBo toolbox. The functionality would also benefit the KoBo framework as a whole by facilitating the inclusion of semantic information. Please let us know the best way to implement this functionality in KoBo. We were wondering if we can work with the Kobo community and implement it in the core KoBo framework, or we can develop a plugin mechanism that would let us achieve this goal. The last resort would be to fork the KoBo repos and implement the functionality independently.

Please refer to the explanation of an example of the exported data in XML format below. While creating a form in the form builder, each question in the form is semantically annotated. This semantic information is saved along with the form. When the final data is exported, this semantic information is also attached to the data.

Example export below has two elements: name and height. The name is just a string. The element height is of type numeric and should receive ‘length’ as its semantic property. The characteristic attribute of the element height is referencing the OBOE semantic ontology and demonstrating that this field is of type ‘length’. The unit attribute references OM2 ontology, which defines that the value(158) of the height is given in ‘centimeters’.

<root xmlns="http://example.org">
	<dataset>
		<row>
			<name characteristic="Identifier" unit="None" creator="Khan">Khan</name>
			
			<height characteristic="http://ecoinformatics.org/oboe/oboe.1.2/oboe-characteristics.owl#Length" unit="http://www.ontology-of-units-of-measure.org/resource/om-2/centimetre" creator="Khan">158</height>
		</row>
	</dataset>
</root>

This semantically annotated data export can make the survey results easily discoverable and reusable. We have already implemented this functionality in the ODK framework(as a fork). Please find the extended repos: Semantic Data Collection · GitLab

I would request the KoBo community and developers to please help us to figure out a way forward that would optimize our work in implementing the functionality.

2 Likes

@khansaifmohd93, kindly please be informed that KoBoToolbox is currently working on dynamic data updating (which should solve your query). Will let you know when the same is available.

Hi,

I’d be really interested in this functionality, and already sort of ‘hack it together’ in my forms by including a specific ontology link in the ‘description’ section of questions in my library. Not ideal, but better than nothing.

Ideally I would have at least two fields that are semantically annotated as a minimum:

  1. The measurement itself (e.g. plant height, crop growth stage, disease score, etc - can you tell I work in agriculture? :slight_smile: )
  2. The units for the measurement (mm, cm, etc) which I can also add to my library. For example, I measure many things in mm…

The third thing which would be the cherry on the cake would be an ability to link a question to a DOI so I can refer to a published method. For example, there are many ways of measuring crop growth stage and disease score above, and I have questions in my library for all of them - each with their own individual row names…

Just a few thoughts. Hope this helps… Is there any way I can follow your progress?

Thanks,

Aislinn

1 Like

Welcome to the community @aislinnpearson! Will keep you updated when it’s shaped.

1 Like

Hey @Kal_Lam,

Can you please explain a little about the dynamic data updating that you have been working on? Or you can also point me to a document related to the development and implementation. I want to know some details and check if that is really what we want here.

Regards
Saif

@khansaifmohd93, you could follow it through this GitHub issue: