Description Logics for Conceptual Design, Information Access, and Ontology Integration (ISWC-2002)
Enrico Franconi
franconi@cs.man.ac.uk http://www.cs.man.ac.uk/˜franconi
Department of Computer Science, University of Manchester
(1/56)
Description Logics for Conceptual Design, Information Access, and - - PowerPoint PPT Presentation
Description Logics for Conceptual Design, Information Access, and Ontology Integration (ISWC-2002) Enrico Franconi franconi@cs.man.ac.uk http://www.cs.man.ac.uk/franconi Department of Computer Science, University of Manchester (1/56)
Enrico Franconi
franconi@cs.man.ac.uk http://www.cs.man.ac.uk/˜franconi
Department of Computer Science, University of Manchester
(1/56)
(2/56)
(3/56)
(4/56)
necessarily hold in any possible world.
(4/56)
necessarily hold in any possible world.
(4/56)
necessarily hold in any possible world.
constraints.
(4/56)
Data Store Logical Schema Conceptual Schema
(5/56)
Constraints Data Store Logical Schema Conceptual Schema
(5/56)
Constraints Query Result Data Store Logical Schema Conceptual Schema
(5/56)
Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(5/56)
Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(5/56)
properties of concepts (aka slots, attributes, roles), relationships between concepts (aka associations), and additional constraints.
(6/56)
properties of concepts (aka slots, attributes, roles), relationships between concepts (aka associations), and additional constraints.
taxonomies), frame-based (having only concepts and properties), or logic-based (e.g. Ontolingua and DAML+OIL).
(6/56)
properties of concepts (aka slots, attributes, roles), relationships between concepts (aka associations), and additional constraints.
taxonomies), frame-based (having only concepts and properties), or logic-based (e.g. Ontolingua and DAML+OIL).
(6/56)
properties of concepts (aka slots, attributes, roles), relationships between concepts (aka associations), and additional constraints.
taxonomies), frame-based (having only concepts and properties), or logic-based (e.g. Ontolingua and DAML+OIL).
as ontologies.
(6/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
(7/56)
Employee
PaySlipNumber(Integer) Salary(Integer)
Project
ProjectCode(String)
Manager TopManager AreaManager
×
Works-for Manages (1,n) (1,1) (1,1)
(8/56)
In a specific world:
Employee Project String E1 E2 E3 E4 E5 P1 P2 P3 “P12a” “P02b” “P2a/1” “P9”
(9/56)
In a specific world:
Works-for Employee Project String E1 E2 E3 E4 E5 P1 P2 P3 “P12a” “P02b” “P2a/1” “P9”
(9/56)
In a specific world:
Works-for Employee Project String ProjectCode E1 E2 E3 E4 E5 P1 P2 P3 “P12a” “P02b” “P2a/1” “P9”
(9/56)
E1 E2 E3 E4 E5 P1 P2 P3
E1,P1 E2,P1 E2,P2 E2,P3 E3,P1 E4,P2 E4,P3 E5,P3
Employee Project Works-for
(10/56)
Employee employeeId E1 E2 E3 E4 E5 Project projectId P1 P2 P3 String anystring “P12a” “P02b” “P2a/1” “P9”
· · ·
Works-for employeeId projectId E1 P1 E2 P1 E2 P2 E2 P3 E3 P1 E4 P2 E4 P3 E5 P3 ProjectCode projectId pcode P1 “P12a” P2 “P02b” P3 “P2a/1”
(11/56)
Works-for ProjectCode E1:Employee E2:Employee E3:Employee E4:Employee E5:Employee P1:Project P2:Project P3:Project “P12a”:String “P02b”:String “P2a/1”:String “P9”:String
(12/56)
Employee Project Works-for
(13/56)
Employee Project Works-for Works-for ⊆ Employee × Project
(13/56)
Employee Project Works-for
A1 A2
Works-for ⊆ Employee × Project
(13/56)
Project
ProjectCode : String
(14/56)
Project
ProjectCode : String
Project ⊆ {p | ♯(ProjectCode ∩ ({p} × String)) ≥ 1}
(14/56)
Employee Project Works-for
(min,max)
(15/56)
Employee Project Works-for
(min,max)
TopManager ⊆ {m | max ≥ ♯(Manages ∩ ({m} × Ω)) ≥ min} (where Ω is the set of all instances)
(15/56)
Employee Project Works-for
(min,max) A1 A2
TopManager ⊆ {m | max ≥ ♯(Manages ∩ ({m} × Ω)) ≥ min} (where Ω is the set of all instances)
(15/56)
Employee Manager
(16/56)
Employee Manager Manager ⊆ Employee
(16/56)
AreaManager TopManager Manager {disjoint,complete}
(17/56)
AreaManager TopManager Manager {disjoint,complete}
(17/56)
Works-for ⊆ Employee × Project Manages ⊆ TopManager × Project Employee ⊆ {e | ♯(PaySlipNumber ∩ ({e} × Integer)) ≥ 1} Employee ⊆ {e | ♯(Salary ∩ ({e} × Integer)) ≥ 1} Project ⊆ {p | ♯(ProjectCode ∩ ({p} × String)) ≥ 1} TopManager ⊆ {m | 1 ≥ ♯(Manages ∩ ({m} × Ω)) ≥ 1} Project ⊆ {p | 1 ≥ ♯(Manages ∩ (Ω × {p})) ≥ 1} Project ⊆ {p | ♯(Works-for ∩ (Ω × {p})) ≥ 1} Manager ⊆ Employee AreaManager ⊆ Manager TopManager ⊆ Manager AreaManager ∩ TopManager = ∅ Manager ⊆ AreaManager ∪ TopManager
(18/56)
Given an ontology – seen as a collection of constraints – it is possible that additional constraints can be inferred.
description.
denoted by the latter in any legal world description.
description.
any legal world description.
(19/56)
Italian English Person Lazy LatinLover {disjoint,covering} Gentleman Hooligan {disjoint}
(20/56)
Italian English Person Lazy LatinLover {disjoint,covering} Gentleman Hooligan {disjoint}
implies LatinLover = ∅ Italian ⊆ Lazy Italian ≡ Lazy
(20/56)
LatinLover Lazy Mafioso ItalianProf Italian {disjoint,complete} {disjoint}
(21/56)
LatinLover Lazy Mafioso ItalianProf Italian {disjoint,complete} {disjoint}
implies ItalianProf ⊆ LatinLover
(21/56)
Employee
Salary:Integer
Manager
(22/56)
Employee
Salary:Integer
Manager
Salary:Integer
implies Manager ⊆ {m | ♯(Salary ∩ ({m} × Integer)) ≥ 1}
(22/56)
Natural Number Even Number rel
1..1 1..1
(23/56)
Natural Number Even Number rel
1..1 1..1
implies “the classes ’Natural Number’ and ’Even Number’ contain the same number of instances”.
(23/56)
Natural Number Even Number rel
1..1 1..1
implies “the classes ’Natural Number’ and ’Even Number’ contain the same number of instances”. If the domain is finite: Natural Number ≡ Even Number
(23/56)
Root Node link
0..1 2..2
(24/56)
Root Node link
0..1 2..2
implies “the classes Root and Node contain an infinite number of instances”.
(24/56)
should be satisfied by the world of interest.
the legal world descriptions – i.e., all the (finite) relational structures which conform to the constraints imposed by the ontology.
set of First Order Logic (FOL) formulas.
models of the FOL theory associated to it.
(25/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
∀x, y. Works-for(x, y) → Employee(x) ∧ Project(y) ∀x, y. Manages(x, y) → Top-Manager(x) ∧ Project(y) ∀y. Project(y) → ∃x. Works-for(x, y) ∀y. Project(y) → ∃=1x. Manages(x, y) ∀x. Top-Manager(x) → ∃=1y. Manages(x, y) ∀x. Manager(x) → Employee(x) ∀x. Manager(x) → Area-Manager(x) ∨ Top-Manager(x) ∀x. Area-Manager(x) → Manager(x) ∧ ¬Top-Manager(x) ∀x. Top-Manager(x) → Manager(x)
(26/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
∀x. Manager(x) → ∀y. ¬WORKS-FOR(x, y)
(27/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆ 1..⋆
Works-for
1..1 1..1
Manages
∀x. Manager(x) → ∀y. ¬WORKS-FOR(x, y)
relationship is increased, then . . .
(27/56)
A key is a set of attributes of a class whose value uniquely identify elements of the class itself.
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
∀x. Project(x) → ∃=1y. ProjectCode(x, y) ∧ String(y) ∀y. ∃x. ProjectCode(x, y) → ∃=1x. ProjectCode(x, y) ∧ Project(x)
(28/56)
(29/56)
R → ⊤n | R N | ¬R | R1 ⊓ R2 | R1 ⊔ R2 | i/n : C
C → ⊤ | CN | ¬C | C1 ⊓ C2 | C1 ⊔ C2 | ∃
≶k[i]R
R ⊑ R′ | C ⊑ C′ | R ⊑ R′ | C ⊑ C′ Works-for ⊑ subj/2 : Employee ⊓ obj/2 : Project TopManager ⊑ Manager ⊓ ∃=1[man]Manages
(30/56)
(31/56)
bases constrain every world description in the same way – i.e., the models of the DLR theory correspond to the legal world descriptions of the ontology, and vice-versa.
(31/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Works-for ⊑ emp/2 : Employee ⊓ act/2 : Project Manages ⊑ man/2 : TopManager ⊓ prj/2 : Project Employee ⊑ ∃=1[worker](PaySlipNumber ⊓ num/2 : Integer)⊓ ∃=1[payee](Salary ⊓ amount/2 : Integer) ⊤ ⊑ ∃≤1[num](PaySlipNumber ⊓ worker/2 : Employee) Manager ⊑ Employee ⊓ (AreaManager ⊔ TopManager) AreaManager ⊑ Manager ⊓ ¬TopManager TopManager ⊑ Manager ⊓ ∃=1[man]Manages Project ⊑ ∃≥1[act]Works-for ⊓ ∃=1[prj]Manages · · ·
(32/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Managers are employees who do not work for a project (she/he just manages it):
Employee ⊓ ¬(∃≥1[emp]Works-for) ⊑ Manager Manager ⊑ ¬(∃≥1[emp]Works-for)
(33/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Managers are employees who do not work for a project (she/he just manages it):
Employee ⊓ ¬(∃≥1[emp]Works-for) ⊑ Manager Manager ⊑ ¬(∃≥1[emp]Works-for) = ⇒
For every project, there is at least one employee who is not a manager:
Project ⊑ ∃≥1[act](Works-for ⊓ emp : ¬Manager)
(33/56)
(34/56)
and EXPTIME-complete, and practical, proved correct and complete algorithms exist in implemented systems.
(35/56)
and EXPTIME-complete, and practical, proved correct and complete algorithms exist in implemented systems.
Ontology consistency checking with constraints and logical implication of constraints in ontologies are all decidable EXPTIME-complete problems.
(35/56)
and EXPTIME-complete, and practical, proved correct and complete algorithms exist in implemented systems.
Ontology consistency checking with constraints and logical implication of constraints in ontologies are all decidable EXPTIME-complete problems.
DLR ontology server supporting the ontology design.
(35/56)
(36/56)
Data Store Logical Schema Conceptual Schema
(37/56)
Constraints Data Store Logical Schema Conceptual Schema
(37/56)
Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Query Result Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Deduction Query Result Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Deduction Query Result Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
Agent Deduction Query Result Deduction Constraints Query Result Data Store Logical Schema Conceptual Schema
(37/56)
introduced by the ontology
(38/56)
introduced by the ontology
(38/56)
introduced by the ontology
vocabulary than the data stores.
(38/56)
(39/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
(40/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
Employee = { John, Andrea, Mary, Paul } Manager = { John, Andrea } AreaManagerp = { Paul } TopManagerp = { Mary } Supervises = { (John,Andrea), (John,Mary) } OfficeMate = { (Mary,Andrea), (Andrea,Paul) }
(40/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
Employee = { John, Andrea, Mary, Paul } Manager = { John, Andrea } AreaManagerp = { Paul } TopManagerp = { Mary } Supervises = { (John,Andrea), (John,Mary) } OfficeMate = { (Mary,Andrea), (Andrea,Paul) } Paul: AreaManagerp Andrea: Manager Mary: TopManagerp John: Manager
❄ ✛
❅ ❅ ❅ ❅ ❅ ❘
Supervises Supervises OfficeMate OfficeMate
(40/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
(41/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
Paul: AreaManagerp Andrea: Manager Mary: TopManagerp John: Manager
❄ ✛
❅ ❅ ❅ ❅ ❅ ❘
Supervises Supervises OfficeMate OfficeMate
(41/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
Paul: AreaManagerp Andrea: Manager Mary: TopManagerp John: Manager
❄ ✛
❅ ❅ ❅ ❅ ❅ ❘
Supervises Supervises OfficeMate OfficeMate Q :- Supervises(John, X), TopManager(X), Officemate(X, Y), AreaManager(Y)
(41/56)
AreaManagerp TopManagerp AreaManager TopManager Manager Employee
{disjoint,complete}
Supervises OfficeMate
Paul: AreaManagerp Andrea: Manager Mary: TopManagerp John: Manager
❄ ✛
❅ ❅ ❅ ❅ ❅ ❘
Supervises Supervises OfficeMate OfficeMate Q :- Supervises(John, X), TopManager(X), Officemate(X, Y), AreaManager(Y)
(41/56)
In general, the link of the ontology with the information source (called mapping) can be given in terms of a set of views:
source is given;
(42/56)
CompanyEmployee/2; CompanyProject/3
CompanyEmployee name project
john esprit-dwq
· · · · · · CompanyProject project manager department
esprit-dwq enrico cs-uman
· · · · · · · · ·
(43/56)
CompanyEmployee/2; CompanyProject/3
CompanyEmployee name project
john esprit-dwq
· · · · · · CompanyProject project manager department
esprit-dwq enrico cs-uman
· · · · · · · · · Q = “Tell me the projects in which John works, and their managers and departments.”
(43/56)
CompanyEmployee/2; CompanyProject/3
CompanyEmployee name project
john esprit-dwq
· · · · · · CompanyProject project manager department
esprit-dwq enrico cs-uman
· · · · · · · · · Q = “Tell me the projects in which John works, and their managers and departments.”
SELECT project, manager, department FROM CompanyEmployee, CompanyProject WHERE CompanyEmployee.name = “john” AND CompanyEmployee.project = CompanyProject.project
(43/56)
CompanyEmployee/2; CompanyProject/3
CompanyEmployee name project
john esprit-dwq
· · · · · · CompanyProject project manager department
esprit-dwq enrico cs-uman
· · · · · · · · · Q = “Tell me the projects in which John works, and their managers and departments.”
SELECT project, manager, department FROM CompanyEmployee, CompanyProject WHERE CompanyEmployee.name = “john” AND CompanyEmployee.project = CompanyProject.project Q ≡ πproj.,manager,dept.σname=john (CompanyEmployee ⊲
(43/56)
CompanyEmployee/2; CompanyProject/3
CompanyEmployee name project
john esprit-dwq
· · · · · · CompanyProject project manager department
esprit-dwq enrico cs-uman
· · · · · · · · · Q = “Tell me the projects in which John works, and their managers and departments.”
SELECT project, manager, department FROM CompanyEmployee, CompanyProject WHERE CompanyEmployee.name = “john” AND CompanyEmployee.project = CompanyProject.project Q ≡ πproj.,manager,dept.σname=john (CompanyEmployee ⊲
Q(x, y, z) ⇐ CompanyEmployee(john, x) ∧ CompanyProject(x, y, z)
(43/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
(44/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
CompanyEmployee(x, y) ⇐ Employee(x) ∧ Project(y) ∧ Works-for(x, y). CompanyProject(x, y, z) ⇐ Project(x) ∧ Manager(y) ∧ Department(z) ∧ Manages(y, x) ∧ Resp-for(z, x).
(44/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
(45/56)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Project(x) ⇐ CompanyEmployee(y, x) ∪ CompanyProject(x, y, z) Works-for(x, y) ⇐ CompanyEmployee(x, y) TopManager(x) ⇐ CompanyProject(y, x, z) Manages(x, y) ⇐ CompanyProject(y, x, z) . . .
(45/56)
Q(x, y, z) ⇐ Project(x) ∧ Works-for(john, x) ∧ TopManager(y) ∧ Manages(y, x) ∧ ¬InterestGroup(z) ∧ Resp-for(z, x).
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
CompanyEmployee(x, y) ⇐ Employee(x) ∧ Project(y) ∧ Works-for(x, y). CompanyProject(x, y, z) ⇐ Project(x) ∧ Manager(y) ∧ Department(z)∧ Manages(y, x) ∧ Resp-for(z, x).
(46/56)
Q(x, y, z) ⇐ Project(x) ∧ Works-for(john, x) ∧ TopManager(y) ∧ Manages(y, x) ∧ ¬InterestGroup(z) ∧ Resp-for(z, x).
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
CompanyEmployee(x, y) ⇐ Employee(x) ∧ Project(y) ∧ Works-for(x, y). CompanyProject(x, y, z) ⇐ Project(x) ∧ Manager(y) ∧ Department(z)∧ Manages(y, x) ∧ Resp-for(z, x).
Q(x, y, z) ⇐ CompanyEmployee(john, x) ∧ CompanyProject(x, y, z)
(46/56)
Q(x, y, z) ⇐ Project(x) ∧ Works-for(john, x) ∧ TopManager(y) ∧ Manages(y, x) ∧ ¬InterestGroup(z) ∧ Resp-for(z, x).
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Project(x) ⇐ CompanyEmployee(y, x)∪ CompanyProject(x, y, z) Works-for(x, y) ⇐ CompanyEmployee(x, y) TopManager(x) ⇐ CompanyProject(y, x, z) Manages(x, y) ⇐ CompanyProject(y, x, z) . . .
(47/56)
Q(x, y, z) ⇐ Project(x) ∧ Works-for(john, x) ∧ TopManager(y) ∧ Manages(y, x) ∧ ¬InterestGroup(z) ∧ Resp-for(z, x).
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Project(x) ⇐ CompanyEmployee(y, x)∪ CompanyProject(x, y, z) Works-for(x, y) ⇐ CompanyEmployee(x, y) TopManager(x) ⇐ CompanyProject(y, x, z) Manages(x, y) ⇐ CompanyProject(y, x, z) . . .
Q(x, y, z) ⇐ CompanyEmployee(john, x) ∧ CompanyProject(x, y, z)
(47/56)
Q(x, y) ⇐ Employee(x) ∧ Works-for(x, y) ∧ Manages(x, y)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Manager ⊑ ¬(∃≥1[emp]Works-for)
(48/56)
Q(x, y) ⇐ Employee(x) ∧ Works-for(x, y) ∧ Manages(x, y)
AreaManager TopManager Manager Project
ProjectCode:String
Employee
PaySlipNumber:Integer Salary:Integer
{disjoint,complete}
1..⋆
Works-for
1..1 1..1
Manages
Manager ⊑ ¬(∃≥1[emp]Works-for)
(48/56)
(49/56)
Mediator Result Inter-schema Constraints Query Query Conceptual Global Schema Database1 Logical Schema1 Conceptual Schema1 Databasen Logical Scheman Conceptual Scheman
(50/56)
Sources
Query Query Enterprise Data Schema Model Conceptual Data Warehouse Model Model 1 Model m Source Model 1 Source Model n Mediators conceptual/logical mapping physical/logical mapping conceptual link data flow logical link Source Source Wrappers
physical level
Query Query
meta level conceptual level logical level
Meta Model
Interface Integration System
Data Warehouse Schema Data Warehouse Store Schema 1 Schema m Schema 1 Schema n Source Source Data Store 1 Data Store n (51/56)
Local-as-view (Information Manifold, DWQ, Picsel):
Global-as-view (Carnot, SIMS, TSIMMIS, Tambis, Observer, . . .):
requires sophisticated query evaluation procedures.
(52/56)
(53/56)
(53/56)
(53/56)
(53/56)
(53/56)
(54/56)
global-as-view approach,
(54/56)
global-as-view approach,
adopt a naive query evaluation procedure, based on query unfolding: no correctness of the query answering can be proved.
(54/56)
machineries.
(55/56)
inter- and intra-schema constraints;
DLR inference engine;
and manifests any inconsistencies during the conceptual modelling phase.
(56/56)