Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
SQL Databases are a Moving Target Juan F. Sequeda – [email protected] Syed Hamid Tirmizi – [email protected] Daniel P. Miranker – [email protected] Department of Computer Sciences The University of Texas at Austin My favorite slide SEMANTIC WEB DATABASES 2 The Semantic Web Vision Semantic Query Engine User Layer: Users and agents interact with this layer and query the ontologies Local ontology Local ontology Local ontology DB DB DB Ontology Layer: defines the semantic representation of RDB. Inference Database Layer: Data that needs to accessed semantically 3 So what should be done? • Make it easy for existing databases to generate Semantic Web content. Research Problem(s): Generate Ontologies from Database Content • (many systems already make RDF from database data) • Mapping database restrictions to OWL – People don’t live past 120 years old • Mining database content for additional domain knowledge – Professors earn more than teaching assistants 4 Finally: Can the Semantic Web Work? Semantic Query Engine • We see a big problem: – Who builds this? – Who generates these mappings? Local ontology Local ontology Local ontology DB DB DB 5 The Semantic Web Vision Semantic Web Query Engines generate DB Schema/ Metadata Table Content Local ontology RDF SQL-query translate 6 Our Position • SQL has semantics – SQL has been evolving it is a moving target! – SQL DDL can be used to generate local ontologies – A Greatest Common Denominator like OWL-DL can aid with data integration 7 Why are SQL Databases Moving Targets? • In the beginning we had… Relational Model Student(Juan, 22) • SQL86-89 came out with Table Definitions CREATE TABLE employee ( name VARCHAR(100), age INTEGER) • SQL92 added data integrity Constraints CHECK, PRIMARY KEY, FOREIGN KEY, UNIQUE • SQL99 added Triggers 8 SQL DDL to Ontologies • Requirements – To create the ontology automatically, we need to compare the technologies – We need to identify constructs with similar semantics • Analysis – Our analysis leads to a layer cake for SQL with corresponding layers in the Semantic Web stack • Implementation – We express our transformations as FOL and use SQL BNF as a guideline for completeness. 9 Relational Model to RDF • Relational Model – Employee(name, age) – T1: Employee (Juan, 21) • RDF <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:ex="http://www.example.com/#"> <rdf:Description rdf:about="http://www.example.com/employee"> <ex:name>Juan</ex:name> <ex:age>21</ex:age> </rdf:Description> </rdf:RDF> 10 Table Definition to RDFS • Table Definition CREATE TABLE employee ( name VARCHAR(100), age INTEGER) • RDFS 11 Table Definition to RDFS <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"> <rdfs:Class rdf:ID="employee"> Table Name <rdfs:comment>Employee</rdfs:comment> <rdfs:subClassOf rdf:resource="http://www.w3.org/1999/02/22-rdf-syntaxns#Resource"/> </rdfs:Class> Attributes <rdf:Property rdf:ID="name"> <rdfs:comment>Name of Employee</rdfs:comment> <rdfs:domain rdf:resource="#employee"/> <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal"/> </rdf:Property> <rdf:Property rdf:ID="age"> <rdfs:comment>Age of Employee</rdfs:comment> <rdfs:domain rdf:resource="#employee"/> <rdfs:range rdf:resource="http://www.w3.org/1999/02/22-rdf-syntax-ns#Literal"/> </rdf:Property> </rdf:RDF> Data type 12 SQL to RDFS • Tables rdfs:Class • Columns rdf:Property – Table rdfs:Domain – Datatype rdfs:Range • Foreign Keys rdf:Property – Table rdfs:Domain – Referencing Table rdfs:Range 13 SQL to RDFS SQL BNF rdfs:Class <table definition> ::= CREATE [ <table scope> ] TABLE <table name> <table contents source> [ … ] rdf:Property rdfs:domain rdfs:range <column definition> ::= <column name> <data type> [NOT NULL] [...] rdf:Property rdfs:domain rdfs:range <referential constraint definition>::= FOREIGN KEY <left paren> <referencing columns> <right paren> REFERENCES <referenced table and columns> [...] Shared Semantics Tables are equivalent to classes Attributes become properties having the domain as the current table and the range as the datatype. Foreign Keys are relationships 14 SQL to OWL CREATE TABLE employee( employee_id INTEGER PRIMARY KEY, employee_ssn VARCHAR(11) UNIQUE, employee_name VARCHAR(100) NOT NULL, employee_salary INTEGER NOT NULL, employee_type CHAR(8) CHECK ( employee_type IN ('TEMP', 'FULLTIME', 'CONTRACT')) dept INTEGER FOREIGN KEY (dept) REFERENCES department (dept_id)) CREATE TABLE department( dept_id INTEGER PRIMARY KEY, dept_name VARCHAR(100) NOT NULL, manager INTEGER FOREIGN KEY (manager) REFERENCES employee (employee_id)) 15 SQL to OWL <owl:Class rdf:ID="Department"/> <owl:ObjectProperty rdf:ID="dept"> <rdfs:domain rdf:resource="#Employee"/> <rdfs:range rdf:resource="#Department"/> </owl:ObjectProperty> Table Name Foreign Key Attribute <owl:DatatypeProperty rdf:ID="age"> <rdf:type rdf:resource="&owl;FunctionalProperty"/> <rdfs:domain rdf:resource="#Employee"/> Data type <rdfs:range rdf:resource="&xsd;int"/> </owl:DatatypeProperty> 16 SQL to OWL <owl:DatatypeProperty rdf:ID="employee_type"> Enumerated <rdfs:domain rdf:resource="#Employee"/> Check <rdfs:range> Constraint <owl:DataRange> <owl:oneOf> <rdf:List> <rdf:first rdf:datatype="&xsd;string">Temp</rdf:first> <rdf:rest> <rdf:List> <rdf:first rdf:datatype="&xsd;string">Fulltime</rdf:first> <rdf:rest> <rdf:List> <rdf:first rdf:datatype="&xsd;string">Contract</rdf:first> <rdf:rest rdf:resource="&rdf;nil"/> </rdf:List> </rdf:rest> </rdf:List> </rdf:rest> </rdf:List> </owl:oneOf> </owl:DataRange> </rdfs:range> </owl:DatatypeProperty> 17 SQL to OWL SQL BNF Shared Semantics <table definition> ::= CREATE [ <table scope> ] TABLE <table name> <table contents source> [...] A table can be an Object Property if acts like a binary relation, or else it is a Class <check constraint definition> ::= CHECK <left paren> <search condition> <right paren> <in predicate> ::= <row value expression> [ NOT ] IN <in predicate value> The enumerated check constraint represents owl:oneOf owl:DatatypeProperty owl:FunctionalProperty owl:maxCardinality owl:cardinlity <column definition> ::= <column name> <data type> [NOT NULL] [...] An attribute is equivalent to a Datatype Property with their domain and range. Depending if the attribute is NOT NULL or not, it can have owl:maxCardinality or owl:cardinality. owl:ObjectProperty rdfs:domain rdfs:range owl:FunctionalProperty <referential constraint definition> ::= FOREIGN KEY <left paren> <referencing columns> <right paren> REFERENCES <referenced table and columns> [...] Foreign Keys connect to relations, therefore they act as Object Properties with their respective domain and range. owl:Class owl:ObjectProperty owl:oneOf 18 Rules: SQL to OWL • Binary Relation: a relation that only has two foreign keys (single or composite) referencing two relations. Re l (r ) FK ( xtr, r , xt, t ) FK ( xsr, r , xs, s) Attr( y, r ) y xtr xsr Bin Re l (r , s, t ) • Class: A relation that is not a binary relation is a class. Re l (r ) Bin Re l (r , x, y ) Class (r ) • Object Property – A binary relation is an object property Bin Re l (r , s, t ) Class ( s) Class (t ) ObjP(r , s, t ) ObjP(r , t , s) Inv (r , r ) – A foreign key that references another relation is an object property, whose domain is the current relation and range is the relation that the foreign key references PK ( y, s) FK ( x, r , y, s) Class (r ) Class ( s ) ObjP( x, r , s) FuncP( x) PK ( y, s) FK ( x, r , y, s) Uni( x) Class (r ) Class ( s) ObjP( x, r , s ) FuncP( x) ObjP( x , s, r ) FuncP( x ) Inv ( x , x) 19 Rules: SQL to OWL • Data type Property: If an attribute is not an object property, then it is a data type property. Its domain is the current relation and the range is the data type. Re l (r ) Class (r ) Attr( x, r ) FK ( x, r , y, z ) DTP ( x, r , type( x)) FuncP( x) MaxCard ( x,1) Re l (r ) Class (r ) Attr( x, r ) FK ( x, r , y, z ) NN ( x) DTP ( x, r , type( x)) FuncP( x) Card ( x,1) Re l (r ) Class (r ) Attr( x, r ) FK ( x, r , y, z ) CheckList ( x) DTP ( x, r , type( x) list ( x)) FuncP( x) MaxCard ( x,1) 20 SQL to Rules • Triggers are business rules and it can not be expressed in OWL • Should think about how this could be mapped to the rule layer of the Semantic Web And the final layer cake… 21 SQL Layer Cake 22 Greatest Common Denominator for Data Integration • All ontologies generated by SQL should have similar semantic power to facilitate better data integration – Use of different technologies may cause problems in data integration – The constructs we use has OWL-DL as GCD • OWL-DL is what SW people like the most. – Reasoning and Inference – Decidability – Computational Completeness • Therefore OWL-DL should be the target for SQL to Semantic Web transformations. 23 24 Summary • SQL has semantics – SQL has been evolving it is a moving target! – SQL DDL can be used to generate local ontologies – A Greatest Common Denominator like OWL-DL can aid with data integration 25 Thank You 26 Other Slides… 27 Discussion Topics • Hierarchy and Inheritance – SQL DDL doesn’t have it – How do database people model it – Not clear how to get the semantics • CHECK Constraint – Has more semantics that OWL can handle – CHECK (value >0 AND value < 360) • OWL Constraints – allValuesFrom someValuesFrom • URI 28 Discussion Topics: Hierarchy and Inheritance • Hierarchy and Inheritance – Integrate information that is spread across several relations (vertical partitioning) and can be either • Integrated in one concept • Inheritance But how do you decide! – Key Equality and Data Inclusion: two relations that share the same primary key and the child relation’s primary key is also a foreign key Project PK Software Project PK, FK 29 Discussion Topics: Hierarchy and Inheritance • How do you represent Hierarchy and Inheritance in database? – Hierarchy: Hand - Finger Hand Finger PK FK ? – Inheritance: Person - Student Person PK Student PK PK, FK 30 Discussion Topics: someValuesFrom vs allValuesFrom A(id, x) B(id, y) C(A_id, B_id) • Can we say that A and B are classes? Yes • Can we say that C represents an object property? Yes • Can we say that B can only be connected to A using the object property? ¿? • Can we say anything about the cardinality of this relation? ¿? 31 Discussion Topics: CHECK Constraint • Embodies semantics and rules at the same time • Enumerated CHECK constraint owl:one of • But what about: – CHECK (value >0 AND value < 360) 32 Translation BNF: SQL to OWL <sql-owl statement> ::= <class defintion> <property table>| <object property definition> <class definition> ::= CREATE TABLE <table name> <object property definition> :: = <object definition> <object property table> <object definition> ::= CREATE TABLE <table name> <object property table> ::= <left paren> <object property references> <object property references> <right paren> <property table>::= <left paren> <property> [ { <comma> <property}...] <property> ::= <object property> |<datatype property> 33