Gryphon Framework - Preliminary Results Feb-2014
-
Upload
adriel-cafe -
Category
Technology
-
view
316 -
download
1
description
Transcript of Gryphon Framework - Preliminary Results Feb-2014
ADRIEL CAFÉ[email protected]
* Preliminary Results - February, 2014
ADRIEL CAFÉ <[email protected]>
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É <[email protected]>
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É <[email protected]>
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 perfectunion between two distinct races. Bringing to our context, the Gryphon Framework proposes a harmonious integration between ontologies and relational databases.
ADRIEL CAFÉ <[email protected]>
Gryphon Architecture
SPARQL Query
Alignment and MappingQuery Rewriting
3rd Party Frameworks
SPARQL QuerySQL Query
ADRIEL CAFÉ <[email protected]>
3rd party frameworks used
Jenahttp://jena.apache.org
OWL APIhttp://owlapi.sourceforge.net
D2RQhttp://d2rq.org
Alignment APIhttp://alignapi.gforge.inria.fr
ADRIEL CAFÉ <[email protected]>
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. Uses Jena to query the local ontologies2. Uses D2RQ to rewrite SPARQL queries in SQL queries
6. Get the queries' results and convert them to global ontology components (classes, attributes, instances, axioms)
PracticalExample
Sources used in this
example
Bibtex OWL Ontologyhttp://zeitkunst.org/bibtex/0.1/bibtex.owl
PublicationOWL Ontologyhttp://ebiquity.umbc.edu/v2.1/ontology/publication.owl
Bibsql MySQL Databasehttp://ftp.math.utah.edu/pub/bibsql/
Global Bibtex OWL Ontology
ADRIEL CAFÉ <[email protected]>
Sources used in this
example
Bibtex OWL Ontologyhttp://zeitkunst.org/bibtex/0.1/bibtex.owl
PublicationOWL Ontologyhttp://ebiquity.umbc.edu/v2.1/ontology/publication.owl
Bibsql MySQL Databasehttp://ftp.math.utah.edu/pub/bibsql/
Global Bibtex OWL Ontology
ADRIEL CAFÉ <[email protected]>
Sources used in this
example
Bibtex OWL Ontologyhttp://zeitkunst.org/bibtex/0.1/bibtex.owl
PublicationOWL Ontologyhttp://ebiquity.umbc.edu/v2.1/ontology/publication.owl
Bibsql MySQL Databasehttp://ftp.math.utah.edu/pub/bibsql/
Global Bibtex OWL Ontology
ADRIEL CAFÉ <[email protected]>
Sources used in this
example
Bibtex OWL Ontologyhttp://zeitkunst.org/bibtex/0.1/bibtex.owl
PublicationOWL Ontologyhttp://ebiquity.umbc.edu/v2.1/ontology/publication.owl
Bibsql MySQL Databasehttp://ftp.math.utah.edu/pub/bibsql/
Global Bibtex OWL Ontology
* We’ll focus in only one domain partADRIEL CAFÉ <[email protected]>
ADRIEL CAFÉ <[email protected]>
The 4 steps to integration1. 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É <[email protected]>
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É <[email protected]>
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É <[email protected]>
Step 4: Use SPARQL to query
String queryGlobal = "PREFIX owl: <http://www.w3.org/2002/07/owl#> \n" + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n“ + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" + "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> \n" + "PREFIX global_bibtex: <http://aac3.cin.ufpe.br/ns/global_bibtex#> \n" + "SELECT DISTINCT ?x ?y \n" + "WHERE { global_bibtex:author ?x ?y . }";
Gryphon.query(queryGlobal);
ADRIEL CAFÉ <[email protected]>
Putting it all together GryphonConfig.setWorkingDirectory(Paths.get("alignments")); GryphonConfig.setAlignmentThreshold(0.3); GryphonConfig.setAlignmentFunctions(new AlignmentFunctions[] {
// Alignment Functions });
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); Gryphon.alignAndMap();
String queryGlobal = "PREFIX owl: <http://www.w3.org/2002/07/owl#> \n"
+ "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n" + "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n" + "PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> \n" + "PREFIX global_bibtex: <http://aac3.cin.ufpe.br/ns/global_bibtex#> \n" + "SELECT DISTINCT ?x ?y \n" + "WHERE { global_bibtex:author ?x ?y . }";
Gryphon.query(queryGlobal);
ADRIEL CAFÉ <[email protected]>
Rewritten queries Global Ontology (Original query) SELECT DISTINCT ?x ?yWHERE { global_bibtex:author ?x ?y . }
Local Ontologies and Databases (Rewritten queries) Bibtex Ontology
SELECT DISTINCT ?x ?yWHERE { <http://purl.org/net/nknouf/ns/bibtex#hasAuthor> ?x ?y}
Publication Ontology
SELECT DISTINCT ?x ?yWHERE { <http://ebiquity.umbc.edu/v2.1/ontology/publication.owl#author> ?x ?y }
Bibsql Database
SELECT DISTINCT ?x ?yWHERE { <alignments/dbPublication.ttl#author> ?x ?y }
ADRIEL CAFÉ <[email protected]>
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É <[email protected]>
Query results Publication Ontology
Bibsql Database
Working on it
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#Resource>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#ObjectProperty>
ADRIEL CAFÉ <[email protected]>
Next development steps1. 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
That's all folks!
Adriel Café [email protected]