Realizing Ontology
Based Data Access
A Plugin for Protégé
Mariano Rodríguez-Muro
Lina Lubyte
Diego Calvanese
Free Universi...
Ontologies
Thursday, August 8, 13
Ontologies
• What are Ontologies?
• Shared conceptualizations of a domain of
discourse
Thursday, August 8, 13
Ontologies
• What are Ontologies?
• Shared conceptualizations of a domain of
discourse
• Formal Semantics
Thursday, August...
Ontologies
• What are Ontologies?
• Shared conceptualizations of a domain of
discourse
• Formal Semantics
• Allow us to pe...
Ontologies
• What are Ontologies?
• Shared conceptualizations of a domain of
discourse
• Formal Semantics
• Allow us to pe...
Reasoners
Thursday, August 8, 13
Reasoners
• Software systems that allow us to perform
inferences over ontologies
Thursday, August 8, 13
Reasoners
• Software systems that allow us to perform
inferences over ontologies
• Examples of reasoning services in DL
re...
Wouldn’t it be nice if...
Data Source
Data Source
Data Source
Data Layer
User Ontology
Semantic LayerUser
Queries
Semantic...
Wouldn’t it be nice if...
Data Source
Data Source
Data Source
Data Layer
User Ontology
Semantic LayerUser
Queries
Semantic...
Wouldn’t it be nice if...
RDBMs
Semantic Layer Data Layer
User
Queries
Ontology RDBMs
Data Layer
Semantic
Mappings
OBDA-En...
Wouldn’t it be nice if...
Meet OBDA
RDBMs
Semantic Layer Data Layer
User
Queries
Ontology RDBMs
Data Layer
Semantic
Mappin...
Example
Scenario:Software consultant for financial
institutions.
Objective: Achieve better reusability and
modularization o...
Thursday, August 8, 13
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. *
<<ident>>fina...
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. *
<<ident>>fina...
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. *
<<ident>>fina...
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. *
<<ident>>fina...
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. *
<<ident>>fina...
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. *
<<ident>>fina...
Components revised
RDBMs
Semantic Layer Data Layer
User
Queries
Ontology RDBMs
Data Layer
Semantic
Mappings
OBDA-Enabled R...
Components revised
RDBMs
Semantic Layer Data Layer
User
Queries
Ontology RDBMs
Data Layer
Semantic
Mappings
OBDA-Enabled R...
Components revised
RDBMs
Semantic Layer Data Layer
User
Queries
Ontology RDBMs
Data Layer
Semantic
Mappings
OBDA-Enabled R...
Components revised
RDBMs
Semantic Layer Data Layer
User
Queries
Ontology RDBMs
Data Layer
Semantic
Mappings
OBDA-Enabled R...
First steps
Protégé
Protégé
OWLPlugin
OBDA
Plugin
SERVERSIDECLIENTSIDE
DIG 1.2 + OBDA
Extension
TBox
DS Info +
Mappings
Qu...
First steps
Protégé
Protégé
OWLPlugin
OBDA
Plugin
SERVERSIDECLIENTSIDE
DIG 1.2 + OBDA
Extension
TBox
DS Info +
Mappings
Qu...
First steps
Protégé
Protégé
OWLPlugin
OBDA
Plugin
SERVERSIDECLIENTSIDE
DIG 1.2 + OBDA
Extension
TBox
DS Info +
Mappings
Qu...
First steps
Protégé
Protégé
OWLPlugin
OBDA
Plugin
SERVERSIDECLIENTSIDE
DIG 1.2 + OBDA
Extension
TBox
DS Info +
Mappings
Qu...
Demo, Ontology
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. ...
Demo, scenario 1
core services
Client
addressid
......
dateofbirth ssnid
...
lastname
...... ...
name
Broker
addressid
......
Demo, Ontology
StockBroker
Trader
StockExchangeMember
Investor
Dealer StockTrader
tradesOnBehalfOf
usesBroker
Person
1 .. ...
Mappings, populating
concepts
Address(getAddressObj($address.id))
select * from address;
Thursday, August 8, 13
Mappings, populating attributes
(datatype properties)
Address(getAddressObj($address.id)),
addressID(getAddressObj($addres...
Mappings, populating roles
(object properties)
hasAddress(getPersonObj($broker.id),getAddressObj($broker.addressid))
selec...
Scenario II, conceptual
model extraction
Thursday, August 8, 13
Scenario II, conceptual
model extraction
shares: int
<<ident> id: int
Stock_Unit
1 .. 1
Stock_Company
average: int
<<ident...
Scenario II, conceptual
model extraction
STOCK_UNIT
...... ...
company_idsharesid
PURCHASE
broker_id
......
stock_iddescr
...
Scenario II, conceptual
model extraction
STOCK_UNIT
...... ...
company_idsharesid
PURCHASE
broker_id
......
stock_iddescr
...
Scenario II, conceptual
model extraction
STOCK_UNIT
...... ...
company_idsharesid
PURCHASE
broker_id
......
stock_iddescr
...
Final Remarks
• Plugin and server are now going trough extensive testing
• Public releases of both tools will happen by th...
Upcoming SlideShare
Loading in …5
×

IMAS'08 obda plugin

330 views

Published on

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

Published in: Technology, Business
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
330
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

IMAS'08 obda plugin

  1. 1. 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
  2. 2. Ontologies Thursday, August 8, 13
  3. 3. Ontologies • What are Ontologies? • Shared conceptualizations of a domain of discourse Thursday, August 8, 13
  4. 4. Ontologies • What are Ontologies? • Shared conceptualizations of a domain of discourse • Formal Semantics Thursday, August 8, 13
  5. 5. Ontologies • What are Ontologies? • Shared conceptualizations of a domain of discourse • Formal Semantics • Allow us to perform complex inferencing Thursday, August 8, 13
  6. 6. 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
  7. 7. Reasoners Thursday, August 8, 13
  8. 8. Reasoners • Software systems that allow us to perform inferences over ontologies Thursday, August 8, 13
  9. 9. 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
  10. 10. Wouldn’t it be nice if... Data Source Data Source Data Source Data Layer User Ontology Semantic LayerUser Queries Semantic Mappings Thursday, August 8, 13
  11. 11. Wouldn’t it be nice if... Data Source Data Source Data Source Data Layer User Ontology Semantic LayerUser Queries Semantic Mappings Data Source Data Source Data Source Data Layer User Ontology Semantic LayerUser Queries Semantic Mappings Thursday, August 8, 13
  12. 12. Wouldn’t it be nice if... RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner Thursday, August 8, 13
  13. 13. Wouldn’t it be nice if... Meet OBDA RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner Thursday, August 8, 13
  14. 14. 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
  15. 15. Thursday, August 8, 13
  16. 16. StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 1 .. 1 hasAddress{disjoint} Thursday, August 8, 13
  17. 17. StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 1 .. 1 hasAddress{disjoint} MiFID Thursday, August 8, 13
  18. 18. StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 1 .. 1 hasAddress{disjoint} MiFID Applications Thursday, August 8, 13
  19. 19. StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 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
  20. 20. StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 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
  21. 21. StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 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
  22. 22. Components revised RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner Thursday, August 8, 13
  23. 23. Components revised RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner Communication Facilities Thursday, August 8, 13
  24. 24. Components revised RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner Communication Facilities Reasoners need to be extended with new paradigm Thursday, August 8, 13
  25. 25. Components revised RDBMs Semantic Layer Data Layer User Queries Ontology RDBMs Data Layer Semantic Mappings OBDA-Enabled Reasoner Communication Facilities Reasoners need to be extended with new paradigm Design Tools! Thursday, August 8, 13
  26. 26. First steps Protégé Protégé OWLPlugin OBDA Plugin SERVERSIDECLIENTSIDE DIG 1.2 + OBDA Extension TBox DS Info + Mappings QuOnto DIG Server for QuOnto DS Info + Mappings TBox RDBMS Thursday, August 8, 13
  27. 27. First steps Protégé Protégé OWLPlugin OBDA Plugin SERVERSIDECLIENTSIDE DIG 1.2 + OBDA Extension 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
  28. 28. First steps Protégé Protégé OWLPlugin OBDA Plugin SERVERSIDECLIENTSIDE DIG 1.2 + OBDA Extension 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
  29. 29. First steps Protégé Protégé OWLPlugin OBDA Plugin SERVERSIDECLIENTSIDE DIG 1.2 + OBDA Extension 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
  30. 30. Demo, Ontology StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 1 .. 1 hasAddress{disjoint} Thursday, August 8, 13
  31. 31. Demo, scenario 1 core 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
  32. 32. Demo, Ontology StockBroker Trader StockExchangeMember Investor Dealer StockTrader tradesOnBehalfOf usesBroker Person 1 .. * <<ident>>financialInstrumentID: int FinancialInstrument <<ident>listdate: date StockExchangeList <<ident>transactionID:int transactionDate: Date Transaction amountOfShares: int typeOfShares: Boolean Stock 1 .. *0 .. * listsStock StockExchangeMember isExecutedBy 1 .. 1 Company involvesInstrument isTradedIn 1 .. 1 0 .. 1 Acquisition Offer isListedIn 1 .. 1 0 .. * hasStock belongsToCompany {disjoint} Investor isExecutedFor1 .. 1 companyName: String marketShares: Integer netWorth: Real Company firstName: Name lastName: String dateOfBirth: Date ssn: String PhysicalPersonLegalPerson <<ident>personID: int Person <<ident>addressID: int inStreet: Sring hasNumber: Int inCity: String inState: String inCountry: String Address 1 .. * 1 .. 1 hasAddress{disjoint} Thursday, August 8, 13
  33. 33. Mappings, populating concepts Address(getAddressObj($address.id)) select * from address; Thursday, August 8, 13
  34. 34. Mappings, populating attributes (datatype properties) Address(getAddressObj($address.id)), addressID(getAddressObj($address.id),$address.id) select * from address; Thursday, August 8, 13
  35. 35. Mappings, populating roles (object properties) hasAddress(getPersonObj($broker.id),getAddressObj($broker.addressid)) select * from broker; Thursday, August 8, 13
  36. 36. Scenario II, conceptual model extraction Thursday, August 8, 13
  37. 37. Scenario II, conceptual model extraction shares: int <<ident> id: int Stock_Unit 1 .. 1 Stock_Company average: int <<ident>date: date Transaction_List1 .. * 0 .. * Stock_TransactionList descr: string date: date <<ident> id: int Purchase descr: string date: date <<ident> id: int Sale Purchase_Stock 0 .. * descr: string date: date <<ident> id: int Stock_Exchange_ Company 1 .. 1 Sale_Stock 0 .. 10 .. 1 1 .. 1 type: string name: string <<ident> id: int Broker name: string <<ident> id: int Share_Holder 1 .. 11 .. 1 Broker_SaleBroker_Purchase 1 .. * Share_Holder_Broker Thursday, August 8, 13
  38. 38. 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
  39. 39. 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
  40. 40. 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: date Transaction_List1 .. * 0 .. * Stock_TransactionList descr: string date: date <<ident> id: int Purchase descr: string date: date <<ident> id: int Sale Purchase_Stock 0 .. * descr: string date: date <<ident> id: int Stock_Exchange_ Company 1 .. 1 Sale_Stock 0 .. 10 .. 1 1 .. 1 type: string name: string <<ident> id: int Broker name: string <<ident> id: int Share_Holder 1 .. 11 .. 1 Broker_SaleBroker_Purchase 1 .. * Share_Holder_Broker Thursday, August 8, 13
  41. 41. 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

×