Difference between revisions of "KB-OWL"

From phenoscape
(Data model)
(Data model)
Line 5: Line 5:
  
 
For example, "serrated dorsal fin":
 
For example, "serrated dorsal fin":
* old: ''exhibits'' some (serrated and ''inheres_in'' some dorsal_fin)
+
* '''old:''' ''exhibits'' some (serrated and ''inheres_in'' some dorsal_fin)
* new: ''has_part'' some (dorsal_fin and ''bearer_of'' some serrated)
+
* '''new:''' ''has_part'' some (dorsal_fin and ''bearer_of'' some serrated)
  
 
We can now model absence correctly. The previous version of the KB uses a quality class called 'absent' in a way which produces unintended inferences. In the new model we use universal quantification with negation. For "dorsal fin, absent":
 
We can now model absence correctly. The previous version of the KB uses a quality class called 'absent' in a way which produces unintended inferences. In the new model we use universal quantification with negation. For "dorsal fin, absent":

Revision as of 21:12, 4 January 2012

This page describes the data model, data loading process, and query methods being developed for a new version of the Phenoscape Knowledgebase built on top of RDF and making use of standard OWL reasoners.

Data model

Phenotypes in the new data model are modeled as OWL class expressions. They are now constructed in an inverse fashion from the form in the original KB - rather than describing classes of particular qualities which inhere in particular structures, we describe parts which bear particular qualities (at the level of instance data the model is the same — inheres_in is the inverse of bearer_of).

For example, "serrated dorsal fin":

  • old: exhibits some (serrated and inheres_in some dorsal_fin)
  • new: has_part some (dorsal_fin and bearer_of some serrated)

We can now model absence correctly. The previous version of the KB uses a quality class called 'absent' in a way which produces unintended inferences. In the new model we use universal quantification with negation. For "dorsal fin, absent":

  • has_part only (not dorsal_fin)

For a localized absence we would use a nested has_part:

  • has_part some (head and has_part only (not scale))

Reasoning

Data loader

Data store