imas'08 obda plugin

41
Realizing Ontology Based Data Access A Plugin for Protégé Mariano Rodríguez-Muro Lina Lubyte Diego Calvanese Free University of Bozen Bolzano Knowledge Representation meets Databases group Bolzano, Italy Thursday, August 8, 13

Upload: mariano-rodriguez

Post on 02-Nov-2014

263 views

Category:

Technology


0 download

DESCRIPTION

Presentation of one of the first versions of the OBDA Plugin for Protege (now the ontopPro plugin)

TRANSCRIPT

Page 1: IMAS'08 obda plugin

Realizing Ontology Based Data Access

A Plugin for Protégé

Mariano Rodríguez-MuroLina Lubyte

Diego Calvanese

Free University of Bozen BolzanoKnowledge Representation meets Databases group

Bolzano, Italy

Thursday, August 8, 13

Page 2: IMAS'08 obda plugin

Ontologies

Thursday, August 8, 13

Page 3: IMAS'08 obda plugin

Ontologies

• What are Ontologies?

• Shared conceptualizations of a domain of discourse

Thursday, August 8, 13

Page 4: IMAS'08 obda plugin

Ontologies

• What are Ontologies?

• Shared conceptualizations of a domain of discourse

• Formal Semantics

Thursday, August 8, 13

Page 5: IMAS'08 obda plugin

Ontologies

• What are Ontologies?

• Shared conceptualizations of a domain of discourse

• Formal Semantics

• Allow us to perform complex inferencing

Thursday, August 8, 13

Page 6: IMAS'08 obda plugin

Ontologies

• What are Ontologies?

• Shared conceptualizations of a domain of discourse

• Formal Semantics

• Allow us to perform complex inferencing

• Description Logics!!

Thursday, August 8, 13

Page 7: IMAS'08 obda plugin

Reasoners

Thursday, August 8, 13

Page 8: IMAS'08 obda plugin

Reasoners

• Software systems that allow us to perform inferences over ontologies

Thursday, August 8, 13

Page 9: IMAS'08 obda plugin

Reasoners

• Software systems that allow us to perform inferences over ontologies

• Examples of reasoning services in DL reasoners:

• Subsumption checking, Instance checking, consistency checking

Thursday, August 8, 13

Page 10: IMAS'08 obda plugin

Wouldn’t it be nice if...

Data SourceData Source

Data Source

Data Layer

User Ontology

Semantic LayerUserQueries

SemanticMappings

Thursday, August 8, 13

Page 11: IMAS'08 obda plugin

Wouldn’t it be nice if...

Data SourceData Source

Data Source

Data Layer

User Ontology

Semantic LayerUserQueries

SemanticMappings

Data SourceData Source

Data Source

Data Layer

User Ontology

Semantic LayerUserQueries

SemanticMappings

Thursday, August 8, 13

Page 12: IMAS'08 obda plugin

Wouldn’t it be nice if...

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

Thursday, August 8, 13

Page 13: IMAS'08 obda plugin

Wouldn’t it be nice if...

Meet OBDA

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

Thursday, August 8, 13

Page 14: IMAS'08 obda plugin

Example

Scenario:Software consultant for financial institutions.Objective: Achieve better reusability and modularization of their software solutions.Preconditions: Requirements are fixed requirements that the users must meet.

Thursday, August 8, 13

Page 15: IMAS'08 obda plugin

Thursday, August 8, 13

Page 16: IMAS'08 obda plugin

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

Thursday, August 8, 13

Page 17: IMAS'08 obda plugin

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

MiFID

Thursday, August 8, 13

Page 18: IMAS'08 obda plugin

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

MiFID

Applications

Thursday, August 8, 13

Page 19: IMAS'08 obda plugin

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

Client

addressid

......

dateofbirth ssnid

...

lastname

...... ...

name

Broker

addressid

...... ...

name ssn

......

id

...

lastname dateofbirth

BrokerWorksFor

...... ...

brokerid companyid clientid

Company

...

addressid

...

id

...

name

...

networthmarketshares

...

Transaction

......

id

...... ...

brokerid forclientidtype forcompanyiddate stockid

... ...

StockBookList

date

...

stockid

...

Address

country

...

state

......

id

...

street

...

citynumber

...

StockInformation

...

companyid

...

sharetypeid

...

numberofshares

...

MiFIDNew Client

Applications

Thursday, August 8, 13

Page 20: IMAS'08 obda plugin

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

Client

addressid

......

dateofbirth ssnid

...

lastname

...... ...

name

Broker

addressid

...... ...

name ssn

......

id

...

lastname dateofbirth

BrokerWorksFor

...... ...

brokerid companyid clientid

Company

...

addressid

...

id

...

name

...

networthmarketshares

...

Transaction

......

id

...... ...

brokerid forclientidtype forcompanyiddate stockid

... ...

StockBookList

date

...

stockid

...

Address

country

...

state

......

id

...

street

...

citynumber

...

StockInformation

...

companyid

...

sharetypeid

...

numberofshares

...

Applications

MiFIDNew Client

Thursday, August 8, 13

Page 21: IMAS'08 obda plugin

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

Client

addressid

......

dateofbirth ssnid

...

lastname

...... ...

name

Broker

addressid

...... ...

name ssn

......

id

...

lastname dateofbirth

BrokerWorksFor

...... ...

brokerid companyid clientid

Company

...

addressid

...

id

...

name

...

networthmarketshares

...

Transaction

......

id

...... ...

brokerid forclientidtype forcompanyiddate stockid

... ...

StockBookList

date

...

stockid

...

Address

country

...

state

......

id

...

street

...

citynumber

...

StockInformation

...

companyid

...

sharetypeid

...

numberofshares

...

Semantic Mapping!

Applications

MiFIDNew Client

Thursday, August 8, 13

Page 22: IMAS'08 obda plugin

Components revised

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

Thursday, August 8, 13

Page 23: IMAS'08 obda plugin

Components revised

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

Communication Facilities

Thursday, August 8, 13

Page 24: IMAS'08 obda plugin

Components revised

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

Communication Facilities

Reasoners need to be extended with

new paradigmThursday, August 8, 13

Page 25: IMAS'08 obda plugin

Components revised

RDBMs

Semantic Layer Data Layer

User

QueriesOntology RDBMs

Data Layer

Semantic

Mappings

OBDA-Enabled Reasoner

Communication Facilities

Reasoners need to be extended with

new paradigm

Design Tools!

Thursday, August 8, 13

Page 26: IMAS'08 obda plugin

First stepsProtégé

ProtégéOWLPlugin

OBDA Plugin

SE

RV

ER

SID

EC

LIE

NT

SID

E

DIG 1.2 + OBDAExtension

TBox

DS Info +Mappings

QuOnto

DIG Server for QuOnto

DS Info +Mappings

TBox

RDBMS

Thursday, August 8, 13

Page 27: IMAS'08 obda plugin

First stepsProtégé

ProtégéOWLPlugin

OBDA Plugin

SE

RV

ER

SID

EC

LIE

NT

SID

E

DIG 1.2 + OBDAExtension

TBox

DS Info +Mappings

QuOnto

DIG Server for QuOnto

DS Info +Mappings

TBox

RDBMS

<?xml version="1.0" encoding="ISO-8859-1"?><tells xmlns="http://dl.kr.org/dig/lang" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://wasp.cs.vu.nl/sekt/digtest/dig-1.1.xsd"> <clearKB/> <defconcept name="a"/> <impliesc> <catom name="a"/> <and> <not> <or> <catom name="b"/> <catom name="c"/> </or> </not> </and> </impliesc</tells>

Thursday, August 8, 13

Page 28: IMAS'08 obda plugin

First stepsProtégé

ProtégéOWLPlugin

OBDA Plugin

SE

RV

ER

SID

EC

LIE

NT

SID

E

DIG 1.2 + OBDAExtension

TBox

DS Info +Mappings

QuOnto

DIG Server for QuOnto

DS Info +Mappings

TBox

RDBMS

DIG Server for QuOnto

<?xml version="1.0" encoding="ISO-8859-1"?><tells xmlns="http://dl.kr.org/dig/lang" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://wasp.cs.vu.nl/sekt/digtest/dig-1.1.xsd"> <clearKB/> <defconcept name="a"/> <impliesc> <catom name="a"/> <and> <not> <or> <catom name="b"/> <catom name="c"/> </or> </not> </and> </impliesc</tells>

Thursday, August 8, 13

Page 29: IMAS'08 obda plugin

First stepsProtégé

ProtégéOWLPlugin

OBDA Plugin

SE

RV

ER

SID

EC

LIE

NT

SID

E

DIG 1.2 + OBDAExtension

TBox

DS Info +Mappings

QuOnto

DIG Server for QuOnto

DS Info +Mappings

TBox

RDBMS

DIG Server for QuOnto

OBDA Plugin for Protégé

<?xml version="1.0" encoding="ISO-8859-1"?><tells xmlns="http://dl.kr.org/dig/lang" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://wasp.cs.vu.nl/sekt/digtest/dig-1.1.xsd"> <clearKB/> <defconcept name="a"/> <impliesc> <catom name="a"/> <and> <not> <or> <catom name="b"/> <catom name="c"/> </or> </not> </and> </impliesc</tells>

Thursday, August 8, 13

Page 30: IMAS'08 obda plugin

Demo, Ontology

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

Thursday, August 8, 13

Page 31: IMAS'08 obda plugin

Demo, scenario 1core services

Client

addressid

......

dateofbirth ssnid

...

lastname

...... ...

name

Broker

addressid

...... ...

name ssn

......

id

...

lastname dateofbirth

BrokerWorksFor

...... ...

brokerid companyid clientid

Company

...

addressid

...

id

...

name

...

networthmarketshares

...

Transaction

......

id

...... ...

brokerid forclientidtype forcompanyiddate stockid

... ...

StockBookList

date

...

stockid

...

Address

country

...

state

......

id

...

street

...

citynumber

...

StockInformation

...

companyid

...

sharetypeid

...

numberofshares

...

Thursday, August 8, 13

Page 32: IMAS'08 obda plugin

Demo, Ontology

StockBroker

Trader

StockExchangeMember

Investor

Dealer StockTrader

tradesOnBehalfOf

usesBroker

Person

1 .. *

<<ident>>financialInstrumentID: intFinancialInstrument

<<ident>listdate: dateStockExchangeList

<<ident>transactionID:inttransactionDate: Date

Transaction

amountOfShares: inttypeOfShares: Boolean

Stock 1 .. *0 .. *

listsStock

StockExchangeMemberisExecutedBy

1 .. 1

Company

involvesInstrument

isTradedIn

1 .. 1

0 .. 1

Acquisition Offer

isListedIn1 .. 1 0 .. *

hasStockbelongsToCompany

{disjoint}

InvestorisExecutedFor1 .. 1

companyName: StringmarketShares: IntegernetWorth: Real

Company

firstName: NamelastName: StringdateOfBirth: Datessn: String

PhysicalPersonLegalPerson

<<ident>personID: intPerson

<<ident>addressID: intinStreet: SringhasNumber: IntinCity: StringinState: StringinCountry: String

Address1 .. *

1 .. 1

hasAddress{disjoint}

Thursday, August 8, 13

Page 33: IMAS'08 obda plugin

Mappings, populating concepts

Address(getAddressObj($address.id))

select * from address;

Thursday, August 8, 13

Page 34: IMAS'08 obda plugin

Mappings, populating attributes (datatype properties)

Address(getAddressObj($address.id)),addressID(getAddressObj($address.id),$address.id)

select * from address;

Thursday, August 8, 13

Page 35: IMAS'08 obda plugin

Mappings, populating roles (object properties)

hasAddress(getPersonObj($broker.id),getAddressObj($broker.addressid))

select * from broker;

Thursday, August 8, 13

Page 36: IMAS'08 obda plugin

Scenario II, conceptual model extraction

Thursday, August 8, 13

Page 37: IMAS'08 obda plugin

Scenario II, conceptual model extraction

shares: int<<ident> id: int

Stock_Unit

1 .. 1

Stock_Company

average: int<<ident>date: dateTransaction_List1 .. *

0 .. *

Stock_TransactionList

descr: string date: date<<ident> id: int

Purchase

descr: string date: date<<ident> id: int

SalePurchase_Stock

0 .. *

descr: string date: date<<ident> id: int

Stock_Exchange_Company

1 .. 1

Sale_Stock

0 .. 10 .. 1 1 .. 1

type: stringname: string<<ident> id: int

Broker

name: string<<ident> id: intShare_Holder

1 .. 11 .. 1 Broker_SaleBroker_Purchase

1 .. *

Share_Holder_Broker

Thursday, August 8, 13

Page 38: IMAS'08 obda plugin

Scenario II, conceptual model extraction

STOCK_UNIT

...... ...

company_idsharesid

PURCHASE

broker_id

......

stock_iddescr

......

date

...

id

SALE

broker_id

......

stock_iddescr

......

date

...

id

TRANSACTION_LIST

... ...

averagedate

...

stock_id

...

trans_date

STOCK_TRANSACTIONLISTSTOCK_EXCHANGE_COMPANY

shares

......... ...

networthnameid

BROKER

...... ...

typenameid

TRADER_CLIENT

...... ...

broker_idnameid

Thursday, August 8, 13

Page 39: IMAS'08 obda plugin

Scenario II, conceptual model extraction

STOCK_UNIT

...... ...

company_idsharesid

PURCHASE

broker_id

......

stock_iddescr

......

date

...

id

SALE

broker_id

......

stock_iddescr

......

date

...

id

TRANSACTION_LIST

... ...

averagedate

...

stock_id

...

trans_date

STOCK_TRANSACTIONLISTSTOCK_EXCHANGE_COMPANY

shares

......... ...

networthnameid

BROKER

...... ...

typenameid

TRADER_CLIENT

...... ...

broker_idnameid

Thursday, August 8, 13

Page 40: IMAS'08 obda plugin

Scenario II, conceptual model extraction

STOCK_UNIT

...... ...

company_idsharesid

PURCHASE

broker_id

......

stock_iddescr

......

date

...

id

SALE

broker_id

......

stock_iddescr

......

date

...

id

TRANSACTION_LIST

... ...

averagedate

...

stock_id

...

trans_date

STOCK_TRANSACTIONLISTSTOCK_EXCHANGE_COMPANY

shares

......... ...

networthnameid

BROKER

...... ...

typenameid

TRADER_CLIENT

...... ...

broker_idnameid

shares: int<<ident> id: int

Stock_Unit

1 .. 1

Stock_Company

average: int<<ident>date: dateTransaction_List1 .. *

0 .. *

Stock_TransactionList

descr: string date: date<<ident> id: int

Purchase

descr: string date: date<<ident> id: int

SalePurchase_Stock

0 .. *

descr: string date: date<<ident> id: int

Stock_Exchange_Company

1 .. 1

Sale_Stock

0 .. 10 .. 1 1 .. 1

type: stringname: string<<ident> id: int

Broker

name: string<<ident> id: intShare_Holder

1 .. 11 .. 1 Broker_SaleBroker_Purchase

1 .. *

Share_Holder_Broker

Thursday, August 8, 13

Page 41: IMAS'08 obda plugin

Final Remarks

• Plugin and server are now going trough extensive testing

• Public releases of both tools will happen by the end of april

• The software will be downloadable from

• http://www.inf.unibz.it/~rodriguez/obda/

• Future work: Explanations for all inferences and queries, Extending Protege/DIG with more expressivity regarding roles.

Thursday, August 8, 13