1. Ontology Aware Applications
Nuno Carvalho Alberto Sim˜es
o Jos´ Jo˜o Almeida
e a
<smash@cpan.org> <ambs@cpan.org> <jjoao@cpan.org>
20th August
YAPC::EU 2012
20th August, 2012 YAPC::EU Ontology Aware Applications 1
2. Introduction
ontologies can he used to store data
create, query, manipulate, maintain, reason, ...
build applications using ontologies to store information
approaches for representing ontologies
mechanisms to implement common operations
keep programs efficient language-wise
want to use all this with our favourite programming language
to develop applications
Perl × ontology −→ modern rich ontology aware applications
20th August, 2012 YAPC::EU Ontology Aware Applications 2
3. Introduction
Motivations
ontology use is growing
solutions based in this technology are growing
Semantic Web, etc.
ontologies are a good approach to store knowledge
ontologies are easy to store, share, maintain, ...
clear border between data and applications
20th August, 2012 YAPC::EU Ontology Aware Applications 3
4. Introduction: Ontology Definition
Ontology - Definition 1
A sphere of thought or action; field, province, scope of a
department of knowledge, etc.
in Oxford English Dictionary, Second Edition
20th August, 2012 YAPC::EU Ontology Aware Applications 4
5. Introduction: Ontology Definition
Ontology - Definition 2
A domain ontology is an engineered artifact that informally defines
concepts from a specific domain, representing and organizing them
as conceptualizations which a set of systems working cooperatively
with each other agree to share.
in Ontological Adaptive Integration Of Reverse Engineering Tools
20th August, 2012 YAPC::EU Ontology Aware Applications 5
6. Introduction: Ontology Definition
Ontology - Definition 3
O = (C , H, I , R, P, A)
where:
C: set of concepts (classes and instances)
H: set of taxonomic relationships between concepts
I: set of relationships between classes and its instances
R: set of other relationships
P: set of properties of ontology classes
A: set of axioms
in A Process for Extracting Non-Taxonomic Relationships of Ontologies from Text
20th August, 2012 YAPC::EU Ontology Aware Applications 6
7. Introduction: Ontology Definition
Ontology
A domain ontology is an engineered artifact that informally defines
concepts from a specific domain, representing and organizing them
as conceptualizations which a set of systems working cooperatively
with each other agree to share.
city
-7.84 ..
Vila Real
DST
LAT
ISA LNG
ISA 39.63 ..
IN
Chaves
LAT Lisbon
Portugal
-7.47 .. LNG IN
ISA
41.74 .. country
terms relations
20th August, 2012 YAPC::EU Ontology Aware Applications 7
8. Ontology Representation
SKOS
Simple Knowledge Organization Systems
Topic Maps
specification for representing the structure of information
resources
OWL
Web Ontology Language
family of languages for publishing and sharing ontologies on
the World Wide Web
20th August, 2012 YAPC::EU Ontology Aware Applications 8
9. Ontology Representation
ISO 2778
simple representation
formalization to represent thesaurus (and more)
plain text, clean
Biblio::Thesaurus
Frankfurt
CITY-OF Germany
ISA city
Lisbon
CITY-OF Portugal
ISA city
20th August, 2012 YAPC::EU Ontology Aware Applications 9
10. Ontology Manipulation
Domain Specific Language
describe operations on ontologies
expressive, powerful, yet simple
rule based
produce arbitrary side effects
OML – Ontology Manipulation Language
Rules
pattern => actions.
20th August, 2012 YAPC::EU Ontology Aware Applications 10
11. OML Syntax Overview
OML Program
program → rule +
rule → Pattern => Action .
Pattern
a pattern of information, terms and relations, that can be
found once or more than once in the ontology
Action
manipulate information in the ontology
add, remove, terms or relations, ...
produce any arbitrary user defined side effects
produce graphs, images, HTML pages, update databases, ...
20th August, 2012 YAPC::EU Ontology Aware Applications 11
12. OML Patterns Examples
# Pattern
1 term(Frankfurt) term Frankfurt exists
2 rel(ISA) relation ISA exists
3 term($t) for all terms
4 rel($r) for all relations
5 Frankfurt ISA city
6 $name ISA city
7 $name ISA $place
8 Frankfurt $rel $term for all related to Frankfurt
9 Frankfurt ISA city ∧ Germany ISA country
10 Frankfurt ISA city ∨ Germany ISA country
11 Chaves LAT $lat ∧ Chaves LNG $lng
20th August, 2012 YAPC::EU Ontology Aware Applications 12
13. OML Actions Examples
Manipulate Information
add(Germany ISA country)
del($place ISA city)
Arbitrary Effect
sub {
$db->execute(
’INSERT INTO cities (name) VALUES ($city)’
);
}
20th August, 2012 YAPC::EU Ontology Aware Applications 13
14. OML Rules Examples
$city IN Germany ⇒ add($city IN Europe).
$c ISA city ∧ $c IN Germany ⇒ add($c LANG German).
$city ISA city ∧ $city ISA country ⇒
sub { print ”Warning: review $city ISA relation!” }.
;
$name ISA city ∧ $name IN $country ⇒ sub {
$db->execute(
’INSERT INTO cities (name,country) VALUES ($name,$country)’
)}.
$a $r $b ∧ $b $r $c ⇒ add($a $r $c).
$a $r $b ∧ $b $r $c ∧ $a $r $c ⇒ rem($a $r $c).
20th August, 2012 YAPC::EU Ontology Aware Applications 14
19. Embedded OML
Challenge
can applications and tools be written only in OML?
actually yes, but do we want to?
NO!
Why?
efficient for ontology processing
real world applications require more
HTML operations, databases, ...
we want the best of both worlds
OML for ontology aware tasks
general purpose programming language for everything else
20th August, 2012 YAPC::EU Ontology Aware Applications 19
20. Embed OML in Perl Example
#!/usr/bin/perl
use Biblio::Thesaurus::ModRewrite::Embed;
my $term = $ARGV[0];
my $ontology = thesaurusLoad($ARGV[1]);
OML printTerms(ontology,term)
term $r $t => sub { print "term $r $t"; }.
$t $r term => sub { print "$t $r term"; }.
ENDOML
printTerms($ontology, $term);
20th August, 2012 YAPC::EU Ontology Aware Applications 20
21. Embed OML
Initial
Program
ne
e
ut
bi
ec
m
lit
ex
id
co
sp
Perl
Perl Perl
Perl
Perl Perl
Perl
+ Perl Result
OML Perl
Perl Perl
Perl
OML Perl
compile
Final
Result
20th August, 2012 YAPC::EU Ontology Aware Applications 21
22. Embedded OML Algorithm
Algorithm 1: Weaver(program,split,compile,combine) : program
Input: program – original program to process
Input: split – function that separates the code parts by language
Input: compile – tranforms OML into Perl
Input: combine – joins parts of code together
parts ← split(program)
forall the (lang , code) ∈ parts do
if lang is DSL then
code ← compile(code)
push(parts2, code)
returncombine(parts2)
20th August, 2012 YAPC::EU Ontology Aware Applications 22
25. Information in JSON
GET /locations.cgi HTTP/1.1
(...)
Content-Type: application/json; charset=UTF-8
{"markers":[{"name":"Braga","desc":"Braga<hr><b>CITY-OF</b>
Portugal<br><b>IS-A</b> city<br><b>LAT</b> 41.5517605<br><b
>LNG</b> -8.4229034<br>","lat":"41.5517605","lng":"-8.42290
34","is":"city"},{"name":"Castelo de Alva","desc":"Castelo
de Alva<hr><b>IS-A</b> castle<br><b>LAT</b> 41.0913745<br><
b>LNG</b> -6.8078773<br>","lat":"41.0913745","lng":"-6.8078
773","is":"castle"},{"name":"Castelo de Tavira","desc":"Cas
telo de Tavira<hr><b>IS-A</b> castle<br><b>LAT</b> 37.12131
22<br><b>LNG</b> -7.6533538<br>","lat":"37.1213122","lng":"
-7.6533538","is":"castle"},{"name":"Guimaraes","desc":"Guim
araes<hr><b>CITY-OF</b> Portugal<br><b>IS-A</b> city<br><b>
LAT</b> 41.4419546<br><b>LNG</b> -8.2956069<br>","lat":"41.
4419546","lng":"-8.2956069","is":"city"},{"name":"Lagos","d
20th August, 2012 YAPC::EU Ontology Aware Applications 25
26. OML Program: locations.cgi
1 use CGI ;
2 use JSON ;
3 use Biblio : : Thesaurus : : ModRewrite : : Embed ;
4
5 my $onto = thesaurusLoad ( ’ geo . iso ’ ) ;
6 my $filter = param ( ’ FILTER ’ ) or ’ ANY ’ ;
7 print header ,
8 ”{ m a r k e r s : ” ,
9 get points ( $onto , $filter ) ,
10 ”} ” ;
11
12 OML get points ( ontology , filter )
13 $point LAT $x AND $point LNG $y
14 AND $point ISA filter
15 = sub {
>
16 print to json ( {name= >$point , lat=>$x , lng=>$y} ) ;
17 }.
18 ENDOML
20th August, 2012 YAPC::EU Ontology Aware Applications 26
27. OML Program: addlocation.cgi
1 use CGI ;
2 use Biblio : : Thesaurus : : ModRewrite : : Embed ;
3
4 my $name = param ( ’ NAME ’ ) ;
5 my $isa = param ( ’ ISA ’ ) ;
6 my $lat = param ( ’ LAT ’ ) ;
7 my $lng = param ( ’ LNG ’ ) ;
8
9 my $onto = thesaurusLoad ( ’ geo . iso ’ ) ;
10 add location ( $onto , $name , $isa , $lat , $lng ) ;
11 $onto−>save ( ’ geo . iso ’ ) ;
12
13 OML add location ( ontology , name , isa , lat , lng )
14 do =>
15 add ( name ISA isa )
16 add ( name LAT lat )
17 add ( name LNG lng ) .
18 ENDOML
20th August, 2012 YAPC::EU Ontology Aware Applications 27
28. Related Work
CPAN
RDF::*
OWL::*
.. and much more
Zhi#
integrates the Web Ontology Language (OWL) and XML
Schema Definition (XSD) data types with C#
20th August, 2012 YAPC::EU Ontology Aware Applications 28
29. Conclusion
increase language efficiency throughout the code
elegant and simple approach to build ontology-aware
applications
modular, build complex applications using small blocks
embedded mechanism is a clear advantage
under research work, not finished! – many things will change
20th August, 2012 YAPC::EU Ontology Aware Applications 29
30. Conclusion
weaving mechanism can be language-agnostic
split many languages
having compilers for each language
ne
e
ut
bi
ec
m
lit
ex
id
co
sp
Perl
Perl Perl
Perl
Perl Perl
Perl
+ Perl Result
DSL* Perl
Perl Perl
Perl
DSL Perl
compile*
20th August, 2012 YAPC::EU Ontology Aware Applications 30