관계형 데이터베이스를 OWL에 매핑하는 방법은 무엇입니까?
+----+--------+-----------+
| id | name | course_id |
+----+--------+-----------+
| 1 | Adam | 5 |
| 2 | Michael| 2 |
+----+--------+-----------+
+-----------+-------------+
| course_id | course_name |
+-----------+-------------+
| 2 | DM |
| 5 | WEBIR |
+-----------+-------------+
이제 학생 테이블의 외래 키가 Course_ID에 여기있다 올빼미 제 2 개 테이블 학생 (student_id, STUDENT_NAME, Course_ID에)
코스 (Course_ID에, COURSE_NAME)이다 관계형 데이터베이스를지도하려고
코스 테이블의 course_id를 참조하십시오. Protege 4.3을 사용하여 온톨로지 (스키마 정의)를 만들었습니다.
Jena API를 사용하여 인스턴스로 OWL 파일에 데이터를 삽입하려고합니다. 온톨로지에서 외래 키가 아닌 열은 데이터 유형 에 매핑되고 외래 키는이 논문 (mapping relational to OWL(section 4.4.4))에 따라 개체 속성에 매핑됩니다. 나는 튜플을 예나의 학생과 코스 클래스의 인스턴스로 추가하려고합니다. 외래 키가 객체 속성 인 경우 어떻게 그것을 고유하게 관계를 결정하는 데 사용할 수 있습니까? Protege에서 작성한 올빼미 파일에 인스턴스로 데이터를 추가하는 데 사용한 jena 코드는 다음과 같습니다.
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();
}
여기서 "reln"은 외래 키인 course_id (values)를 추가 할 객체 속성 (기능적)입니다. 하지만 두 개의 인스턴스를 관련 짓는 데 도움이 될 것입니까? "Adam에서 WebIR 과정을 수강했습니다"라고 추론해야한다고 가정합니다.
내 개체 속성이 관계형의 외래 키 값을 고유하게 대체 할 수있는 방법 두 클래스의 두 튜플을 결합합니까?
제발, 어떤 도움을 주시면 대단히 감사하겠습니다.
감사를 보라 할 수 있습니다
이었다 내 첫 번째 방법은, D2RQ 그냥 RDF 믿을수 내 데이터베이스를 변환
사용하여 의미 농축 초래하는 객체의 속성을 추가하고 싶었 OWL (Protege)는 D2RQ를 사용하여 수행 할 수 없었습니다. – user3455581온톨로지의 RDF 파일 (또는 RDF 파일과 세 번째 온톨로지의 온톨로지)을 가져와 추론 자의 답변을 얻기 위해 추론 자와 함께 사용하십시오. – Ignazio