2. Gryphon Framework
Our goal is to simplify the integration process of
ontologies and relational databases
Virtual mediation of SPARQL queries
Based on GAV (Global As View) approach
Developed with Java
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
3. Features (work in progress)
Supports multiple connections from ontologies and relational databases
Designed for large data sources
Align ontologies and map databases automatically
Rewrites SPARQL queries made for global ontology in:
◦ SPARQL queries for local ontologies
◦ SQL queries for local databases
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
4. Why Gryphon?
Gryphon, griffin or griffon (Greek: γρύφων, grýphōn, or γρύπων,
grýpōn; Latin: gryphus).
Is a legendary creature with:
◦ The body, tail, and back legs of a lion;
◦ The head and wings of an eagle, and an eagle's talons as its front feet
Because the lion was traditionally considered the king of the beasts and
the eagle the king of birds, the gryphon was thought to be an especially
powerful and majestic creature.
The gryphon creature represents a perfect
union between two distinct races. Bringing to
our context, the Gryphon Framework proposes
a harmonious integration between ontologies
and relational databases.
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
6. 3rd party frameworks used
Jena
http://jena.apache.org
OWL API
http://owlapi.sourceforge.net
D2RQ
http://d2rq.org
Alignment API
http://alignapi.gforge.inria.fr
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
7. Gryphon integration process
1.
Maps the local databases using D2RQ (creates TTL files)
2.
Aligns the global ontology with the database mappings using
Alignment API (creates OWL files)
3.
Aligns the global ontology with the local ontologies using Alignment
API (creates OWL files)
4.
Uses the alignment files to rewrite SPARQL queries
5.
Queries the local sources:
1.
2.
6.
Uses Jena to query the local ontologies
Uses D2RQ to rewrite SPARQL queries in SQL queries
Get the queries' results and convert them to global ontology
components (classes, attributes, instances, axioms)
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
9. Sources used
in this
example
Bibtex
OWL Ontology
http://zeitkunst.org/bibtex/0.1/bibtex.owl
Publication
OWL Ontology
http://ebiquity.umbc.edu/v2.1/ontology/p
ublication.owl
Bibsql
MySQL Database
http://ftp.math.utah.edu/pub/bibsql/
Global Bibtex
OWL Ontology
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
10. Sources used
in this
example
Bibtex
OWL Ontology
http://zeitkunst.org/bibtex/0.1/bibtex.owl
Publication
OWL Ontology
http://ebiquity.umbc.edu/v2.1/ontology/p
ublication.owl
Bibsql
MySQL Database
http://ftp.math.utah.edu/pub/bibsql/
Global Bibtex
OWL Ontology
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
11. Sources used
in this
example
Bibtex
OWL Ontology
http://zeitkunst.org/bibtex/0.1/bibtex.owl
Publication
OWL Ontology
http://ebiquity.umbc.edu/v2.1/ontology/p
ublication.owl
Bibsql
MySQL Database
http://ftp.math.utah.edu/pub/bibsql/
Global Bibtex
OWL Ontology
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
12. Sources used
in this
example
Bibtex
OWL Ontology
http://zeitkunst.org/bibtex/0.1/bibtex.owl
Publication
OWL Ontology
http://ebiquity.umbc.edu/v2.1/ontology/p
ublication.owl
Bibsql
MySQL Database
http://ftp.math.utah.edu/pub/bibsql/
Global Bibtex
OWL Ontology
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
* We’ll focus in only one domain part
13. The 4 steps to integration
1.
Set up the Gryphon Framework
2.
Set the global ontology and the local ontologies and databases
3.
Align the ontologies and map the databases
4.
Query the global ontology using SPARQL
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
14. Step 1: Set up the framework
GryphonConfig.setWorkingDirectory(Paths.get("alignments"));
GryphonConfig.setAlignmentThreshold(0.3);
GryphonConfig.setAlignmentFunctions(new AlignmentFunctions[] {
AlignmentFunctions.EQUAL_DISTANCE,
AlignmentFunctions.HAMMING_DISTANCE,
AlignmentFunctions.JARO_MEASURE,
AlignmentFunctions.JARO_WINKLER_MEASURE,
AlignmentFunctions.LEVENSHTEIN_DISTANCE,
AlignmentFunctions.NEEDLEMAN_WUNSCH_2_DISTANCE,
AlignmentFunctions.NEEDLEMAN_WUNSCH_DISTANCE,
AlignmentFunctions.NGRAM_DISTANCE,
AlignmentFunctions.SMOA_DISTANCE,
AlignmentFunctions.SUBSTRING_DISTANCE
});
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
15. Step 2: Set the sources
OWLOntology globalOnt = new OWLOntology(uriToGlobalOnt);
OWLOntology localOntBibtex = new OWLOntology(uriToBibtex);
OWLOntology localOntPublication = new OWLOntology(uriToPublication);
MySQLDatabase localDBBibsql = new MySQLDatabase("localhost", 3306, "root",
“root", "bibsql");
Gryphon.setGlobalOntology(globalOnt);
Gryphon.getLocalOWLOntologies().put("bibtex", localOntBibtex);
Gryphon.getLocalOWLOntologies().put("publication", localOntPublication);
Gryphon.getLocalDatabases().put("bibsql", localDBBibsql);
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
16. Step 3: Align and map
Gryphon.alignAndMap();
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
19. Rewritten queries
Global Ontology (Original query)
SELECT DISTINCT ?x ?y
WHERE {
global_bibtex:author ?x ?y .
}
Local Ontologies and Databases (Rewritten queries)
Bibtex Ontology
SELECT DISTINCT ?x ?y
WHERE {
<http://purl.org/net/nknouf/ns/bibtex#hasAuthor> ?x ?y
}
Publication Ontology
SELECT DISTINCT ?x ?y
WHERE {
<http://ebiquity.umbc.edu/v2.1/ontology/publication.owl#author> ?x ?y
}
Bibsql Database
SELECT DISTINCT ?x ?y
WHERE {
<alignments/dbPublication.ttl#author> ?x ?y
}
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
20. Query results
Bibtex Ontology
X
Y
<http://purl.org/dc/elements/1.1/description>
"This is tricky due to the fact that order is not (generally)
preserved in RDF documents. The problem arises when you
want to have an author list where the order is _extremely_
important. How shall we do that? Perhaps we want to define
"hasPrimaryAuthor", "hasSecondaryAuthor",
"hasTertiaryAuthor", and "hasRemainingAuthors", or
something of that sort. This will be have to given more
thought."
<http://www.w3.org/2000/01/rdf-schema#comment>
"The name(s) of the author(s), in the format described in the
LaTeX book."@en
<http://www.w3.org/2000/01/rdf-schema#label>
"has author"@en
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf>
<http://purl.org/net/nknouf/ns/bibtex#humanCreator>
<http://www.w3.org/2000/01/rdf-schema#range>
<http://www.w3.org/2001/XMLSchema#string>
<http://www.w3.org/2000/01/rdf-schema#domain>
<http://purl.org/net/nknouf/ns/bibtex#Entry>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.w3.org/2002/07/owl#DatatypeProperty>
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
21. Query results
Publication Ontology
X
Y
<http://www.w3.org/2000/01/rdf-schema#label>
"Resource Author"
<http://www.w3.org/2000/01/rdf-schema#range>
<http://ebiquity.umbc.edu/v2.1/ontology/person.owl#Person
>
<http://www.w3.org/2000/01/rdf-schema#domain>
<http://ebiquity.umbc.edu/v2.1/ontology/publication.owl#Re
source>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.w3.org/2002/07/owl#ObjectProperty>
Bibsql Database
Working on it
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
22. Next development steps
1.
Query the local databases using D2RQ
2.
Unify the results (convert to components of global ontology)
3.
Improve the alignment and mapping process
4.
Improve the query rewrite algorithm
5.
Test on more biggest and complex sources
ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>