23
ADRIEL CAFÉ [email protected] * Preliminary Results - February, 2014

Gryphon Framework - Preliminary Results Feb-2014

Embed Size (px)

DESCRIPTION

Preliminary Results from Gryphon Framework in February, 2014

Citation preview

Page 1: Gryphon Framework - Preliminary Results Feb-2014

ADRIEL CAFÉ[email protected]

* Preliminary Results - February, 2014

Page 2: Gryphon Framework - Preliminary Results Feb-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

Page 3: Gryphon Framework - Preliminary Results Feb-2014

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

Page 4: Gryphon Framework - Preliminary Results Feb-2014

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.

Page 5: Gryphon Framework - Preliminary Results Feb-2014

ADRIEL CAFÉ <[email protected]>

Gryphon Architecture

SPARQL Query

Alignment and MappingQuery Rewriting

3rd Party Frameworks

SPARQL QuerySQL Query

Page 6: Gryphon Framework - Preliminary Results Feb-2014

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

Page 7: Gryphon Framework - Preliminary Results Feb-2014

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)

Page 8: Gryphon Framework - Preliminary Results Feb-2014

PracticalExample

Page 9: Gryphon Framework - Preliminary Results Feb-2014

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]>

Page 10: Gryphon Framework - Preliminary Results Feb-2014

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]>

Page 11: Gryphon Framework - Preliminary Results Feb-2014

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]>

Page 12: Gryphon Framework - Preliminary Results Feb-2014

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]>

Page 13: Gryphon Framework - Preliminary Results Feb-2014

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

Page 14: Gryphon Framework - Preliminary Results Feb-2014

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 });

Page 15: Gryphon Framework - Preliminary Results Feb-2014

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);

Page 16: Gryphon Framework - Preliminary Results Feb-2014

ADRIEL CAFÉ <[email protected]>

Step 3: Align and map

Gryphon.alignAndMap();

Page 17: Gryphon Framework - Preliminary Results Feb-2014

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);

Page 18: Gryphon Framework - Preliminary Results Feb-2014

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);

Page 19: Gryphon Framework - Preliminary Results Feb-2014

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 }

Page 20: Gryphon Framework - Preliminary Results Feb-2014

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>

Page 21: Gryphon Framework - Preliminary Results Feb-2014

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>

Page 22: Gryphon Framework - Preliminary Results Feb-2014

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

Page 23: Gryphon Framework - Preliminary Results Feb-2014

That's all folks!

Adriel Café [email protected]