I've read a number of RDF related questions here on StackOverflow that have an RDFS solution but also an OWL solution. (Notably, my own question)
I understand the concept of a reasoner and that an OWL one is more thorough in inferring complex relationships but that this comes at a cost, the one often cited is update performance.
Can somebody please explain what factors go into making a design decision whether to use an OWL reasoner and how to evaluate whether or not an RDFS reasoner is sufficient for a set of requirements. (I'm strongly considering AllegroGraph's RDFS++ reasoner as of now.)
I've already begun working on an ontology and have already defined triple using things like owl:ObjectProperty
, owl:FunctionalProperty
, and have several subclasses of owl:Thing
. Does that mean I've already passed the threshold and need an OWL reasoner? Where does one cross that line and why?
RDF is also a vocabulary that along with the RDFS vocabulary provides a set of terms that can be used for creating general/abstract descriptions of resources. OWL is a vocabulary built with RDF and RDFS vocabularies that provide new terms for creating more detailed descriptions of resources.
RDF in general is a method of conceptual data modelling. RDFS provides a mechanism for describing groups of related resources (RDF), and the relation between them. Example of these properties are classes, sub-classes, range and domains. So in essence, RDFS is a semantic extension of RDF.
OWL allows you to tailor what you say based on the computational realities and application requirements, such as queries, rules, policy enforcement, etc. Further, OWL allows you to easily express relationships between different ontologies using a standard annotation framework.
RDF Schema (RDFS) is a language for writing ontologies. An ontology is a model of (a relevant part of) the world, listing the types of object, the relationships that connect them, and constraints on the ways that objects and relationships can be combined.
When you start modeling with RDFS and OWL, different types of constructs (or axioms) are available to you (like rdfs:subClassOf
or owl:FunctionalProperty
). Each of these constructs add some computational complexity in regards to what reasoners are meant to do, namely consistency checking or classification for example. As a rule of thumb, the more expressive the constructs are, the more time it takes to compute what they entail.
When you use the constructs available with RDFS you restrict the type of things you can express, but in return you can use dedicated efficient reasoners like AllegroGraph's for example.
However, an RDFS reasoner will not be able to compute OWL axioms. OWL is more expressive than RDFS and an OWL reasoner has to deal with more constructs. OWL reasoners understand RDFS axioms (as all the RDFS constructs are part of OWL), so you can use an OWL reasoner with RDFS.
So in summary:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With