Mikel Egaña Arangurenhttp://mikeleganaaranguren.com / mikel.egana@ehu.es
http://mikeleganaaranguren.wordpress.com/teaching/
"Schema" for Knowledge Base Vocabulary for publishing Linked Data Vocabulary for common database annotation (e.g. GO) Text mining Web Services description (e.g. SADI) Data analysis ...
Controlled vocabulary for describing molecular function, cellular component and biological process of gene products
Database integration through Gene Association Files (GAF), data analysis (e.g. Term Enrichment), ...
A W3C official standard for creating ontologies in a Semantic Web setting with computationally precise and formal semantics
OWL is based in Description Logics (DL)
Automated reasoning can be used for inference: "if a cow is a kind of animal and animal is a kind of organism, then cow is a kind of organism"
For computers: RDF/XML, OWL/XML, ...
For human beings: Manchester OWL Syntax, functional, ...
An OWL ontology is comprissed of:
An ontology can import (owl:import) other ontology and refer to its entities through axioms
(+ QCR!) Manchester tutorial
disjointFrom
booleans: not, or, and
Natural language information that can be attached to entities (properties, individuals, classes), axioms, ontologies
No semantics
rdfs:label, rdfs:comment, dublin core, create new ones ...
Member of one or more classes (Types)
SameAs or DifferentFrom other individuals
Binary relations with other individuals or data (triples), positive or negative
A reasoner will infer the "new" (*?!) axioms that the axioms we have stated in the ontology imply
The reasoner will infer all the implied axioms: it is useful to deal with complex knowledge
Open World Assumption (OWA)
(Lack of) Unique Name Assumption (and use of owl:sameAs)
Maintain a taxonomy
Check consistency
Clasify entities and pose queries against the ontology
Clasify entities: given an entity (e.g. an individual with certain relations), infer how it relates to other entities (e.g. to which classes it belongs) and the consistency of the model including the new entity
A query is an anonymous class that we classify against the ontology as if it were and entity
...
...
...
Define a scope: domain (e.g. Cell Cycle), application (e.g. BioPAX), ...
Stick to it
Define a Semantic Web friendly URI scheme: Cool URIs for the Semantic WebLinked Data URIs ...
Stick to it
Use common identifiers (e.g. identifiers.org)
Use alphanumeric identifiers in URIs and rdfs:label for common names
Use permament URLs (e.g. http://purl.oclc.org)
Commonly used Upper Level Ontology (e.g. BFO)
Or your own one, but be explicit
Commonly used properties (e.g. OBO Relations Ontology)
Or your own ones, but be explicit
Reuse existing ontologies, extend them if needed ...
... and only then, and if completely necessary, create new entities
Link to other ontologies with owl:equivalentClass, rdf:type, rdf:subClassOf, ...
Ontology manipulation (create entities, add/remove axioms):
Releases: OORT (OWLtools)
Use a VCS as usual (e.g. GitHub), but be aware of perils of managing OWL in a VCS
Apply automated reasoning after every change
Use annotation properties everywhere a lot: rdfs:label rdfs:comment Dublin Core your own ones
The more explicit (axioms), the better (within reason). Reasoner always knows better than you
Follow Ontology Design Patterns (ODPs) and create/share your own ones: odps.sf.net, ontologydesignpatterns.org
Pitfalls: OntOlogy Pitfall Scanner (OOPS!), catalogue of ontology pitfalls
OBO Foundry: Open, Common shared syntax, Unique identifier space, Versions, Delineated content, Definitions, OBO Relation Ontology, Well documented, Users, Collaboratively
BIOMO (Biological Observation Matrix Ontology):