The document discusses using ontologies to build applications. It introduces ontology representation and manipulation using OML (Ontology Manipulation Language). OML allows defining rules to query and modify ontologies through patterns and actions. The approach embeds OML programs directly into Perl to take advantage of Perl modules while gaining ontology awareness. Examples demonstrate an ontology-driven map application built with this technique.
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
want to use all this with our favourite programming language
to develop applications
Perl × ontology −→ modern rich ontology aware applications
Nuno Carvalho <smash@cpan.org> PtPW2011: 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 share, store, replicate, ...
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 3
4. Background
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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 4
5. Ontology Representation
Biblio::Thesaurus + ISO 2778
simple and uses a simple representation
not only thesaurus
easy to push features
is written in Perl
Braga
CITY-OF Portugal
IS-A city
Vigo
CITY-OF Spain
IS-A city
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 5
6. Ontology Manipulation
OML Programs
describe operations on ontologies
list of rules
each rule has a:
a pattern to look for
an action list to execute
produce side effects
expressive, powerful, yet simple
embedded programs
Rules
pattern => actions.
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 6
7. 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, ...
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 7
8. Ontology Example
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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 8
9. OML Patterns Examples
# Pattern
1 term(Chaves) term Chaves exists
2 rel(ISA) relation ISA exists
3 term($t) for all terms
4 rel($r) for all relations
5 Chaves ISA city
6 $name ISA city
7 $name ISA $place
8 Chaves $rel $term for all related to Chaves
9 Chaves ISA city ∧ Portugal ISA country
10 Chaves ISA city ∨ Portugal ISA country
11 Chaves LAT $lat ∧ Chaves LNG $lng
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 9
10. OML Actions Examples
Manipulate Information
add(Portugal ISA country)
del($place ISA city)
Arbitrary Effect
sub {
$db->execute(
’INSERT INTO cities (name) VALUES ($city)’
);
}
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 10
11. OML Rules Examples
$city IN Portugal ⇒ add($city IN Europe).
$c ISA city ∧ $c IN Portugal ⇒ add($c LANG Portuguese).
$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).
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 11
16. 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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 16
17. 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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 17
18. 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)
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 18
19. Embed OML in Perl
Why Perl?
provides modules for ”everything else”
easy to extend
Example:
1 use Biblio : : Thesaurus : : ModRewrite : : Embed ;
2
3 my $term = $ARGV [ 0 ] ;
4 my $ontology = thesaurusLoad ( $ARGV [ 1 ] ) ;
5
6 OML printTerms ( ontology , term )
7 term $r $t = sub { print ”term $ r $ t n ” ; } .
>
8 $t $r term = sub { print ”$ t $ r term n ” ; } .
>
9 ENDOML
10
11 printTerms ( $ontology , $term ) ;
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 19
22. 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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 22
23. 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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 23
24. 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
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 24
25. Conclusion
language easy to use, efficient
easy to compose with other tools
elegant and simple approach to build ontology-aware
applications
modular, build complex applications using small blocks
embedded mechanism is a clear advantage
weaving mechanism can be extended for other languages
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 25
26. 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*
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 26
27. Conclusion
this mechanism can be adopted in any GPL
dynamic language
allows pre-processing of source code
ne
e
ut
bi
ec
m
lit
ex
id
co
sp
Perl
Perl Perl
Perl
GPL GPL
GPL
+ GPL Result
DSL* Perl
Perl Perl
Perl
DSL GPL
compile*
Nuno Carvalho <smash@cpan.org> PtPW2011: Ontology Aware Applications 27