リレーショナル データベースを OWL にマップしようとしています ここに私の 2 つのテーブルがあり
ます
+----+--------+-----------+
| id | name | course_id |
+----+--------+-----------+
| 1 | Adam | 5 |
| 2 | Michael| 2 |
+----+--------+-----------+
+-----------+-------------+
| course_id | course_name |
+-----------+-------------+
| 2 | DM |
| 5 | WEBIR |
+-----------+-------------+
これで、course_id は、コース テーブルの course_id を参照する学生テーブルの外部キーになります。Protege 4.3 を使用してオントロジーを作成 (スキーマを定義) しました。
Jena API を使用してインスタンスとしてデータを OWL ファイルに挿入しようとしています。オントロジーでは、外部キーではない列はデータ型プロパティにマッピングされ、外部キーはこのペーパーに従ってオブジェクト プロパティにマッピングされます(OWL(セクション 4.4.4) に関連するマッピング)。タプルをインスタンスとして Jena の学生クラスとコース クラスに追加しています。外部キーがオブジェクト プロパティの場合、それを使用して関係を一意に決定するにはどうすればよいですか。Protege で作成された owl ファイルにデータをインスタンスとして追加するために使用した 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) を追加するオブジェクト プロパティ (機能) です。しかし、2 つのインスタンスを関連付けるのに役立つでしょうか。つまり、「Adam が WebIR コースを受講した」と推測する必要があるとします。
2 つのクラスの 2 つのタプルを一意に結合するために、オブジェクト プロパティで外部キー値をリレーショナルに置き換えるにはどうすればよいですか?
提案してください、どんな助けでも大歓迎です。