Integration of OWL with Ruby
######################
OWL (Web Ontology Language) has several interesting capabilities,
including:
- Define a (possibly anonymous) class using property expressions
DarkChocolate = Dark & base_material is a Chocolate
Dark = (any Thing) with brightness = Low - Class definition can be incremental and federated
Vehicle = …
…
Vehicle = … - Classification
Determine if arbitrary object is member of class by checking
properties - Equivalent | Disjoint | …
Assert that two separately defined classes always | never have the
same
members - First-class properties
Properties are applicable to independent classes (duck typing)
Properties are namespaced (Ruby 2 forthcoming selector namespace) - Numerous tools
There are many (open-source) tools that handle OWL ontologies - Formal interpretation
Maps to RDF tuples (subject-predicate-object)
Makes many (open-source) formal analysis tools applicable
Tons of info on OWL on the web. One tutorial at
http://www.cs.man.ac.uk/~horrocks/ISWC2003/Tutorial/
######################
A deep integration of OWL with Ruby would be interesting and potentially
very useful:
- opening up new kinds of expressiveness in Ruby
- allowing all of Ruby’s power in manipulating OWL
- opening access to OWL and RDF tools.
One might even find some intriguing links between some of OWL’s features
and
Ruby with duck typing, open classes, method_missing, dynamic mix-ins,
etc.
(See http://gigaton.thoughtworks.net/~ofernand1/DeepIntegration.pdf)
An example of integrating OWL and Ruby, adapted from the above URL:
class TeachersChild < OWL::Thing
defined_with_query some_expression_or_block_or_string
def misbehave
raise “Teacher’s kids never misbehave”
end
end
obj1 = OWL::Thing.new (properties which may qualify as TeachersChild)
obj1.misbehave # dynamically pick up TeachersChild#misbehave
ExternalOWLTool.process obj1 # external reasoning tools
######################
There may be some useful Ruby resources already available based on work
by
Rich Kilmer.
www.daml.org/meetings/2004/05/pi/pdf/InfoEther-Semitar.pdf