user3455581
user3455581

Reputation: 31

How to map relational database to OWL?

I am trying to map relational database to OWL Here are my 2 tables student(student_id,student_name,course_id)
course(course_ID,course_name)

+----+--------+-----------+    
| id | name   | course_id |  
+----+--------+-----------+     
|  1 | Adam   |         5 |   
|  2 | Michael|         2 |    
+----+--------+-----------+   
+-----------+-------------+    
| course_id | course_name |   
+-----------+-------------+      
|         2 | DM          |    
|         5 | WEBIR       |  
+-----------+-------------+

Now course_id is the foreign key in student table referencing course_id in course table.I created ontology(defined the schema) using Protege 4.3

I am trying to insert data into the OWL file as instances using Jena API. In ontology, columns which are not foreign keys were mapped to datatype properties and foreign keys are mapped to object property as per this paper(mapping relational to OWL(section 4.4.4)). I am adding the tuples as instances to the student and course classes in Jena. If foreign key is object property how can i use it to uniquely determine relation. Here is the jena code I have used to add data as instances to owl file created in Protege.

    for (student std : studlist) {
        Individual stud = stud_ont.createIndividual(nspace + "student/"
                + std.getStudent_id());
        stud.addProperty(stud_id, std.getStudent_id());
        stud.addProperty(stud_name, std.getStudent_name());
        stud.addProperty(reln, std.getCourse_id());
        PrintStream p = new PrintStream(
                "/home/owlDM/newedu.owl");
        m.writeAll(p, "RDF/XML", null);
        p.close();
    }
    for (course crs : courselist) {

        Individual cour = course_ont.createIndividual(nspace + "course/"
                + crs.getCourse_name());
        cour.addProperty(course_course_name, crs.getCourse_name());
        PrintStream p = new PrintStream(
                "/home/owlDM/newedu.owl");
        m.writeAll(p, "RDF/XML", null);
        p.close();
    }

Here "reln" is the object property(functional) for which I am adding course_id(values) which is the foreign key. But would it help in relating two instances ,meaning Suppose I need to infer "Adam has taken WebIR Course".

How can my object property can replace foreign key value in relational to uniquely join two tuples of two classes?
Please suggest,Any help is greatly appreciated.

Upvotes: 3

Views: 1519

Answers (1)

suat
suat

Reputation: 4289

"The D2RQ Platform is a system for accessing relational databases as virtual, read-only RDF graphs".

You might want to have a look at that

Upvotes: 2

Related Questions