SlideShare uma empresa Scribd logo
1 de 23
* Preliminary Results - February, 2014

ADRIEL CAFÉ
AAC3@CIN.UFPE.BR
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>
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>
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>
Gryphon Architecture
SPARQL Query

3rd Party Frameworks

Alignment and Mapping
Query Rewriting

SPARQL Query
SQL Query

ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
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>
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>
Practical
Example
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>
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>
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>
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
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>
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>
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>
Step 3: Align and map

Gryphon.alignAndMap();

ADRIEL CAFÉ <AAC3@CIN.UFPE.BR>
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É <AAC3@CIN.UFPE.BR>
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É <AAC3@CIN.UFPE.BR>
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>
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>
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>
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>
That's all folks!

Adriel Café
aac3@cin.ufpe.br

Mais conteúdo relacionado

Mais procurados

How ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps lifeHow ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps life
琛琳 饶
 
Chapter 4 semantic web
Chapter 4 semantic webChapter 4 semantic web
Chapter 4 semantic web
R A Akerkar
 

Mais procurados (20)

Hadoop bootcamp getting started
Hadoop bootcamp getting startedHadoop bootcamp getting started
Hadoop bootcamp getting started
 
Integrated omics analysis pipeline for model organism with Cytoscape, Kozo Ni...
Integrated omics analysis pipeline for model organism with Cytoscape, Kozo Ni...Integrated omics analysis pipeline for model organism with Cytoscape, Kozo Ni...
Integrated omics analysis pipeline for model organism with Cytoscape, Kozo Ni...
 
Battle of the Giants round 2
Battle of the Giants round 2Battle of the Giants round 2
Battle of the Giants round 2
 
JeeConf 2018 - The anatomy of Spring Data
JeeConf 2018 - The anatomy of Spring DataJeeConf 2018 - The anatomy of Spring Data
JeeConf 2018 - The anatomy of Spring Data
 
API Design Antipatterns - APICon SF
API Design Antipatterns - APICon SFAPI Design Antipatterns - APICon SF
API Design Antipatterns - APICon SF
 
Hadoop with Python
Hadoop with PythonHadoop with Python
Hadoop with Python
 
Analyse your SEO Data with R and Kibana
Analyse your SEO Data with R and KibanaAnalyse your SEO Data with R and Kibana
Analyse your SEO Data with R and Kibana
 
Side by Side with Elasticsearch and Solr
Side by Side with Elasticsearch and SolrSide by Side with Elasticsearch and Solr
Side by Side with Elasticsearch and Solr
 
Kyiv.py #16 october 2015
Kyiv.py #16 october 2015Kyiv.py #16 october 2015
Kyiv.py #16 october 2015
 
Demystifying Apache Kafka, once and for all | Jonathan Santilli, Snyk
Demystifying Apache Kafka, once and for all | Jonathan Santilli, SnykDemystifying Apache Kafka, once and for all | Jonathan Santilli, Snyk
Demystifying Apache Kafka, once and for all | Jonathan Santilli, Snyk
 
IPython Notebook as a Unified Data Science Interface for Hadoop
IPython Notebook as a Unified Data Science Interface for HadoopIPython Notebook as a Unified Data Science Interface for Hadoop
IPython Notebook as a Unified Data Science Interface for Hadoop
 
Database Homework Help
Database Homework HelpDatabase Homework Help
Database Homework Help
 
How ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps lifeHow ElasticSearch lives in my DevOps life
How ElasticSearch lives in my DevOps life
 
Chapter 4 semantic web
Chapter 4 semantic webChapter 4 semantic web
Chapter 4 semantic web
 
From zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and ElasticsearchFrom zero to hero - Easy log centralization with Logstash and Elasticsearch
From zero to hero - Easy log centralization with Logstash and Elasticsearch
 
Battle of the giants: Apache Solr vs ElasticSearch
Battle of the giants: Apache Solr vs ElasticSearchBattle of the giants: Apache Solr vs ElasticSearch
Battle of the giants: Apache Solr vs ElasticSearch
 
Solr+Hadoop = Big Data Search
Solr+Hadoop = Big Data SearchSolr+Hadoop = Big Data Search
Solr+Hadoop = Big Data Search
 
Lisa Johnson at #ICG13: Re-assembly, quality evaluation, and annotation of 67...
Lisa Johnson at #ICG13: Re-assembly, quality evaluation, and annotation of 67...Lisa Johnson at #ICG13: Re-assembly, quality evaluation, and annotation of 67...
Lisa Johnson at #ICG13: Re-assembly, quality evaluation, and annotation of 67...
 
Building your own search engine with Apache Solr
Building your own search engine with Apache SolrBuilding your own search engine with Apache Solr
Building your own search engine with Apache Solr
 
OC Big Data Monthly Meetup #5 - Session 1 - Altiscale
OC Big Data Monthly Meetup #5 - Session 1 - AltiscaleOC Big Data Monthly Meetup #5 - Session 1 - Altiscale
OC Big Data Monthly Meetup #5 - Session 1 - Altiscale
 

Semelhante a Gryphon Framework - Preliminary Results Feb-2014

Structured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim Dowling
Structured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim DowlingStructured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim Dowling
Structured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim Dowling
Databricks
 
#LAWDI Open Context, publishing linked data in archaeology
#LAWDI Open Context, publishing linked data in archaeology#LAWDI Open Context, publishing linked data in archaeology
#LAWDI Open Context, publishing linked data in archaeology
ekansa
 
It's not rocket surgery - Linked In: ALA 2011
It's not rocket surgery - Linked In: ALA 2011It's not rocket surgery - Linked In: ALA 2011
It's not rocket surgery - Linked In: ALA 2011
Ross Singer
 
Finding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic WebFinding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic Web
ebiquity
 

Semelhante a Gryphon Framework - Preliminary Results Feb-2014 (20)

Bio2RDF @ W3C HCLS2009
Bio2RDF @ W3C HCLS2009Bio2RDF @ W3C HCLS2009
Bio2RDF @ W3C HCLS2009
 
2008 11 13 Hcls Call
2008 11 13 Hcls Call2008 11 13 Hcls Call
2008 11 13 Hcls Call
 
Structured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim Dowling
Structured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim DowlingStructured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim Dowling
Structured-Streaming-as-a-Service with Kafka, YARN, and Tooling with Jim Dowling
 
#LAWDI Open Context, publishing linked data in archaeology
#LAWDI Open Context, publishing linked data in archaeology#LAWDI Open Context, publishing linked data in archaeology
#LAWDI Open Context, publishing linked data in archaeology
 
LibreCat::Catmandu
LibreCat::CatmanduLibreCat::Catmandu
LibreCat::Catmandu
 
Introduction to BioHackathon 2014
Introduction to BioHackathon 2014Introduction to BioHackathon 2014
Introduction to BioHackathon 2014
 
SPARQL-DL - Theory & Practice
SPARQL-DL - Theory & PracticeSPARQL-DL - Theory & Practice
SPARQL-DL - Theory & Practice
 
BioSD Tutorial 2014 Editition
BioSD Tutorial 2014 EdititionBioSD Tutorial 2014 Editition
BioSD Tutorial 2014 Editition
 
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
2nd Proj. Update: Integrating SWI-Prolog for Semantic Reasoning in Bioclipse
 
Case Study in Linked Data and Semantic Web: Human Genome
Case Study in Linked Data and Semantic Web: Human GenomeCase Study in Linked Data and Semantic Web: Human Genome
Case Study in Linked Data and Semantic Web: Human Genome
 
SWT Lecture Session 4 - Sesame
SWT Lecture Session 4 - SesameSWT Lecture Session 4 - Sesame
SWT Lecture Session 4 - Sesame
 
4 sesame
4 sesame4 sesame
4 sesame
 
Apache Flink Hands-On
Apache Flink Hands-OnApache Flink Hands-On
Apache Flink Hands-On
 
It's not rocket surgery - Linked In: ALA 2011
It's not rocket surgery - Linked In: ALA 2011It's not rocket surgery - Linked In: ALA 2011
It's not rocket surgery - Linked In: ALA 2011
 
ICAR 2015 Workshop - Nick Provart
ICAR 2015 Workshop - Nick ProvartICAR 2015 Workshop - Nick Provart
ICAR 2015 Workshop - Nick Provart
 
Bio ontologies and semantic technologies
Bio ontologies and semantic technologiesBio ontologies and semantic technologies
Bio ontologies and semantic technologies
 
Finding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic WebFinding knowledge, data and answers on the Semantic Web
Finding knowledge, data and answers on the Semantic Web
 
Geography in Linked Ancient World Data
Geography in Linked Ancient World DataGeography in Linked Ancient World Data
Geography in Linked Ancient World Data
 
Sharing massive data analysis: from provenance to linked experiment reports
Sharing massive data analysis: from provenance to linked experiment reportsSharing massive data analysis: from provenance to linked experiment reports
Sharing massive data analysis: from provenance to linked experiment reports
 
Infinispan,Lucene,Hibername OGM
Infinispan,Lucene,Hibername OGMInfinispan,Lucene,Hibername OGM
Infinispan,Lucene,Hibername OGM
 

Mais de Adriel Café

Mais de Adriel Café (7)

Desenvolvendo aplicativos Android com Kotlin
Desenvolvendo aplicativos Android com KotlinDesenvolvendo aplicativos Android com Kotlin
Desenvolvendo aplicativos Android com Kotlin
 
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
Uma Arquitetura com Implementação para Integração Semântica de Ontologias e B...
 
Desenvolvendo para Android com componentes Open Source
Desenvolvendo para Android com componentes Open SourceDesenvolvendo para Android com componentes Open Source
Desenvolvendo para Android com componentes Open Source
 
Ontology integration - Heterogeneity, Techniques and more
Ontology integration - Heterogeneity, Techniques and moreOntology integration - Heterogeneity, Techniques and more
Ontology integration - Heterogeneity, Techniques and more
 
Mobile Apps Cross-Platform
Mobile Apps Cross-PlatformMobile Apps Cross-Platform
Mobile Apps Cross-Platform
 
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
FLISOL 2012 - Palestra "Introdução ao Desenvolvimento de Aplicações para o Si...
 
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
2º ETI - Minicurso "Desenvolvendo para Plataforma Android"
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 

Gryphon Framework - Preliminary Results Feb-2014

  • 1. * Preliminary Results - February, 2014 ADRIEL CAFÉ AAC3@CIN.UFPE.BR
  • 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>
  • 5. Gryphon Architecture SPARQL Query 3rd Party Frameworks Alignment and Mapping Query Rewriting SPARQL Query SQL Query 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>
  • 17. 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É <AAC3@CIN.UFPE.BR>
  • 18. 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É <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>
  • 23. That's all folks! Adriel Café aac3@cin.ufpe.br