Upload
ledang
View
221
Download
7
Embed Size (px)
Citation preview
รายงานเชงเทคนค: Technical Report หนา 1
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
ระบบจดการค าศพทตามมโนทศน
Terms to Concepts Mapping System
วนทน ประจวบศภกจ1, วาทน นยเพยร2, วชดา โชตรตน3, พชราภรณ จรานวฒนวงษ4,
ศรณย งามศรเทพฤทธ5, กาญจนา ขนด า6, สระชย หวไผ7, สวนตย รงราตร8
1. ทมาและความส าคญของปญหา
ปจจบนระบบการสบคนขอมลเชงความหมาย (Semantic Search System) และระบบการแนะน า
ขอมล (Recommendation System) นน เปนสงส าคญอยางยงตอการพฒนาเครองมอทใชในการสบคน
ขอมลเพอน ามาใชประโยชนในเรองตางๆ ไดอยางถกตอง มประสทธภาพและตรงกบความตองการของผใช
มากทสด ระบบการสบคนขอมลเชงความหมายจ าเปนตองอาศยการอธบายความสมพนธระหวางขอมลตางๆ
ทมอยในรปแบบของมโนทศน (Concept) หรอทเรารจกกนในชอของออนโทโลย (Ontology) แตเนองจาก
สภาพความเปนจรงในปจจบนของแตละหนวยงานหรอองคกรสวนใหญ มกจะจดเกบขอมลของตนเองไวใน
รปแบบของแฟมขอมลหรอฐานขอมล การจดเกบขอมลในลกษณะนท าใหผลของการสบคนค าตางๆไม
เปนไปตามความหมายทผใชตองการมากนก และยงน าไปใชประโยชนไมไดเทาทควร จงมการปรบ
โครงสรางการจดเกบขอมลดวยการจบคระหวางขอมลทมอยในระบบฐานขอมลกบมโนทศนออนโทโลยโดย
อาศยแรงงานคน แตเนองจากของขอมลในตารางและมโนทศนในออนโทโลยทมจ านวนมาก จงท าใหการ
จบคนนตองใชเวลาและตองอาศยความช านาญเปนอยางมาก
ระบบจดการค าศพทตามมโนทศน (Terms to Concepts Mapping System) จงถกสรางขนเพอการ
จบคระหวางขอมลทมอยในระบบฐานขอมลกบมโนทศนออนโทโลย โดยระบบนจะเปนสวนตดตอกบผใชให
สามารถเลอกจบค ปรบปรงแกไขขอมลจากฐานขอมลไดอยางทนททนใด (Interactive)
ใ (GUI) เพอการพฒนารปแบบของขอมลใหสามารถน าไปใชประโยชนในระบบการสบคน
เชงความหมายไดอยางมประสทธภาพมากยงขนตอไป
2. วตถประสงค
1. เพอจบคขอมลทมอยในระบบฐานขอมลกบมโนทศนออนโทโลย
2. เพอพฒนาสวนตดตอกบผใช (GUI) ส าหรบการจบคและสรางไฟล mapping.cfg และ
synonyms.mp
3. เพอสราง directory ส าหรบจดเกบขอมลใหผใชสามารถ download ผานทางเวบไซตได เพอใช
ประโยชนตอไป
รายงานเชงเทคนค: Technical Report หนา 2
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
3. คณลกษณะระบบ
3.1 Overview
ระบบจดการค าศพทตามมโนทศนประกอบดวยฟงกชนการท างานตางๆ สามารถอธบายตามล าดบ
การท างานและสามารถแสดงล าดบการท างานไดดงรปท 1 ดงน
1. Input ใ input จะประกอบไปดวยออนโทโลยและฐานขอมลทตองการน ามาจบคกน
2. Process ใ process จะม 3 ฟงกชน คอ
2.1 Ontology loader โดยอาศย SKAF API
2.2 DB Selector
2.3 Term concept mapping โดยอาศย GUI Library
3. Output ในสวนแสดงผลลพธ จะแสดงออกมาเปน 2 ไ
3.1 mapping.cfg
3.2 synonyms.mp
รปท 1 แสดงภาพรวมของระบบ (System Overview)
รายงานเชงเทคนค: Technical Report หนา 3
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 2 แสดงตวอยางการจบคระหวางฐานขอมลกบออนโทโลย Noodle_Rice
แลวแสดงผลลพธเปนไฟล synonyms.mp
3.2 Input/Output Specification
ในสวนของฟงกชนและล าดบการท างานในสวนของ Input แ ะ Output นนสามารถ
อธบายไดเปน 6 ขนตอนดวยกน แสดงดงรปท 3
1. Select Class to Map คลาสทตองการจบคจากออนโทโลยทตองการ
2. Select table and column คอการเลอกตารางและคอลมนทตองการจบคจาก
ฐานขอมลทตองการ
3. List All Values คา v ue ใ คอลมนทเลอกจากตาราง
ฐานขอมล
4. List All Subclasses คอการเรยกคลาสยอยภายใตคลาสทเลอกจากออนโทโลย
5. Value to Subclasses Mapping GUI จ ะ จ
จากออนโทโลยโ ผาน ใ
6. Export คอการสงคาผลลพธของการจบคระหวางคาขอมลจ
จากออนโทโลยออกมาในรปแบบของไฟล synonyms.mp และ
mapping.cfg
รายงานเชงเทคนค: Technical Report หนา 4
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 3 แสดงฟงกชนและล าดบการท างานในสวนของ Input และ Output
รายงานเชงเทคนค: Technical Report หนา 5
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
3.3 ข นตอนการท างานในเชงเทคนค
ในระบบการท างานนไดแบงการท างานออกเปน 3 ขนตอน ซงแตละขนตอนมรายละเอยด
ดงน
รปท 4 แสดงข นตอนการท างานในเชงเทคนค
ขนตอนท 1
ขนตอนท 2
รายงานเชงเทคนค: Technical Report หนา 6
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
ข นตอนท 1
ดงคลาสในไฟล .owl โ ใ API .getListOfDirectorySubClasses แ ไ
จ แ แทกของภาษา HTML โ ใ แ ไ โ โ ใ GUI
M pping OW nd D t b se ำ ใหผใชจบคกบขอมลจากฐานขอมล โดยจดเกบขอมลลงในไฟลชอ
mapping.txt
สวนการจดการขอมลในฐานขอมลเพอน าไปดงขอมลมาสราง GUI ใหผใชเลอกชอตารางและชอ
คอลมน ท าการบนทกลงในไฟลชอ datafromtable.txt โ คอชอตาราง ชอคอลมน ชอฟลดท
เปนคยหลกและขอมลของคอลมนนนๆ จงจะคนขอมลดวยเครองหมาย #
ข นตอนท 2
เปนการสราง GUI เพอใหผใชท าการจบคระหวางออนโทโลยกบขอมลในฐานขอมล แลวน าไปสราง
ไฟล mapping.cfg และ synonyms.mp ส าหรบใหผใชดาวนโหลดไปใชงานตอไป
ข นตอนการสราง GUI
1. อานไฟล mapping.html แลวน าไปใชสราง GUI ในรปแบบทร
2. อานไฟล datafromtable.txt แลวน าไปสราง GUI ในรปแบบตวเลอกแบบ checkbox
3. ผใชจบคระหวางชอคลาสของออนโทโลยกบขอมลในฐานขอมล แลวน าไปเกบไวใน textarea
4. ผใชกรอกชอ Super class และ ปายค าทใชในการอธบายความหมายของชอคอลมนใน
ฐานขอมลทเลอกมาใชงาน
5. ท าการสรางไฟล mapping.cfg และ synonyms.mp โดยน าชอตาราง ชอคอลมนทเลอกขอมล
ชอฟลดทเปนคยหลก และชอ Super class ไปเขยนลงไฟลชอ mapping.cfg สวนขอมลทจบค
แลวใน textarea น าไปเขยนลงในไฟลชอ datafromtable.txt
ข นตอนท 3
เปนการสรางแหลงทเกบไฟล mapping.cfg แ ะ synony p แ ะ จ Download ไฟลชอ config.cfg แ ะ synony p โดยการจดเกบไฟล mapping.cfg แ ะ synony p นนจะจดเกบในรปแบบของ Text ไฟล ใ Down o d โ โ ttp ไ โ ไดจ โ จ ไ โ แ ไดเรกทอรตามชอของคลาสทท าการจบคและจดเกบไฟล mapping.cfg แ ะ synony p ไวตามไดเรกทอร ใ แ text โ ะ ตงชอไ
1. mapping.cfg mapping.cfg.txt
2. Synonyms.mp ตงชอเปน synonyms.mp.txt
โดยทงสองไฟลนจะถกจดเกบในไดเรกทอรตามชอคลาสทมการจบค ซ งไดสรางคลาสชอCreateDirMpCfg.java ใน package CreateDirMapOntology ซงกลม 2 สามารถเรยกใชงานคลาสดงกลาวโดยมพารามเตอร ดงน
รายงานเชงเทคนค: Technical Report หนา 7
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
CreateDirMpCfg CDMpCfg = new CreateDirMpCfg();
CDMpCfg.SaveMpCfg(config.getServletContext().getRealPath("/"),"ชอ Class ทท าการ Map");
โดยคลาสดงกลาวจะท าการจดเกบไฟลทงสองตามโครงสรางของไดเรกทอรชอคลาสทอยบนเวบเซรฟเวอรและท าการเขยนไฟล html in โ ส าหรบการ download ไฟลทงสองผานทางเวบบราวเซอรดงรปท 5
รปท 5 แสดงตวอยางการ download ล mapping.cfg และ synonym.mp
รายงานเชงเทคนค: Technical Report หนา 8
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
4. การวางแผนการท างาน
ในระบบการท างานนไดวางแผนการท างานโดยแบงการท างานออกเปน 3 กลมยอย ซงแตละกลม
ยอยมรายละเอยดการท างานดงน
กลมยอยท 1 กลมยอยท 2 กลมยอยท 3
Install JSP Install JSP Install JSP
Read Ontology Design GUI Read Output From Group 2
Select Concept Design Data Structure Convert Output to Config Files
Select Table Implement
Select Column Design Output for Group 3
Send Concept & Value to
Group 2
5. การออกแบบและพฒนา
5.1 ระบบการท างานในสวนตางๆ ของแตละกลมยอย
กลมยอยท 1 : Ontology Class Selection and Database Selection
Input : Ontology File, Database name, Database Table and Column
Output : Term used in database and concept in ontology
กลมยอยท 2 : Term Concept mapping GUI
Input : Term used in database and concept in ontology
Output : mapping, concept, data in database of the ontology
กลมยอยท 3 : Export
Input : Correct Data
Output : Configuration files
รายงานเชงเทคนค: Technical Report หนา 9
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
5.2 องคความรและเทคนคทตองใชในแตละกลมยอย
กลมยอยท 1
Java API Ontology
SQL
JSP HTML/Ajax
กลมยอยท 2
GUI
Javascript
Tree Menu
Data Structure
Document Object Model
กลมยอยท 3
Directory
Configuration Files
Download Configuration Files
รายงานเชงเทคนค: Technical Report หนา 10
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
6. ผลลพธการพฒนา
รปท 6 แสดงหนาหลกของระบบจดการค าศพทตามมโนทศน
ค าอธบาย: จ ใ ใ แ ะ เรยงตามล าดบตามเมนดงน
Ontology Mapping มอคลกแลวจะไปท างานตอทหนาจอรปท 7 Database Mapping เมอคลกแลวจะไปท างานตอทหนาจอรปท 8 Term Concept mapping GUI แ จะไปท างานตอทหนาจอรปท 9 mapping.cfg แ จะไปท างานตอทหนาจอรปท 10 synonyms.mp แ จะไปท างานตอทหนาจอรปท 11
รายงานเชงเทคนค: Technical Report หนา 11
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 7 แสดงหนาจอรบชอ SuperClass
ค าอธบาย: จ เมอ ใ เมนOntology Mapping แลวจะปรากฎหนาจอเพอรบชอ SuperClass แลวกดป ม Generate File จากนนจะไดไฟล mapping.html
รายงานเชงเทคนค: Technical Report หนา 12
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 8 แสดงหนาจอเลอกชอตารางจากฐานขอมล
ค าอธบาย: จ เมอ ใ เมน Database Mapping แลวจะปรากฎหนาจอเพอรบชอตารางแลวกดป ม OK จากนนจะไดชอ Primary Key และชอคอลมนทงหมดของตารางนนเพอใหผใชเลอกเปนลกษณะ combobox และเมอผใชเลอกชอคอลมนแลวกดป ม OK จะปรากฎขอมลของคอลมนนนๆ ในชองของ Data
รายงานเชงเทคนค: Technical Report หนา 13
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 9 แสดงหนาจอ GUI ะ งออนโทโลยกบฐานขอมล
ค าอธบาย: จ เมอ ใ เมน Term Concept mapping GUI ฝงซายจะแสดงออนโทโลยในรปแบบทร ฝงขวาจะเปนฐานขอมลโดยแสดง ec box ใ โ จ แ แ ป ม submit จากจะแสดงขอมลทจบคกนแลวขนมา ใน textarea และผใชตองกรอกชอ superclass และ label configแลวคลกป ม submit ซงผลลพธจะถก generate ออกมาเปน synonyms.mp และ mapping.cfg
รายงานเชงเทคนค: Technical Report หนา 14
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 10 แสดงหนาจอไฟล Output ของไฟล mapping.cfg ทไดจากระบบ
ค าอธบาย: จ เมอ ใ เมน mapping.cfg โดยการคลกเมาสขวาแลวเลอก Save
Target As.. จากนนท าการ save ไฟลทตองการ
รายงานเชงเทคนค: Technical Report หนา 15
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
รปท 11 แสดงหนาจอไฟล Output ของไฟล synonyms.mp ทไดจากระบบ
ค าอธบาย: จ เมอ ใ เมน synonyms.mp โดยการคลกเมาสขวาแลวเลอก Save
Target As.. จากนนท าการ save ไฟลทตองการ
รายงานเชงเทคนค: Technical Report หนา 16
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
7. สรปผลการพฒนา
7.1 สรปผลทไดรบ
จบคขอมลทมอยในระบบฐานขอมลกบมโนทศนออนโทโลย
สวนตดตอกบผใช (GUI) ส าหรบการจบคและสรางไฟล mapping.cfg และ
synonyms.mp
สราง directory ส าหรบจดเกบขอมลใหผใชสามารถ download ผานทางเวบไซตได
เพอใชประโยชนตอไป
7.2 ขอเสนอแนะ
การท างานแตละกลม มสวนส าคญในการสรางออนโทโลย ท าอยางไรใหสามารถเขาไป
แลกเปลยนเรยนรไดในทกกลม อาจเนองจากระยะเวลาสวนใหญมงทจะพฒนาในสวน
ของกลมของตวเอง และการน าเสนอของแตละกลมนนยงไมเหนเทคนคการพฒนาท
ชดเจน เหมอนกบการลงมอท าเอง ควรมการแลกเปลยนเรยนรซ งกนและกนโดยมการ
ก าหนดระยะเวลาเพมเตม
7.3 แนวทางการพฒนาในอนาคต
ในการจบคระหวางฐานขอมลกบออนโทโลยนน เมอเลอกคลาสในออนโทโลยแลวจะ
สามารถจบคกบรายการจากฐานขอมลไดมากกวาหนงครงในกรณทมการจบคกนผดโดย
สามารถยอนกลบไปแกไขไดอกครง
ควรรวมโปรแกรมในแตละสวนใหเปนโปรแกรมเดยวกน เพอใหงายตอการประยกตใช
กบการพฒนาออนโทโลยตอไป
8. อปสรรคและปญหาทพบ
ไฟล Mapping ทกลม 1 สงใหกลม 2 นนไมไดท าเพม Code ของ Button List นองกลม 2 ตองสรางเพมเอง
เมอน าไฟลจากฐานขอมลไปสรางเปนเชคบอก (Checked box) ใหผใชเลอกขอมลทเปนภาษาไทย เมอผใชเลอกแลวไมสามารถแสดงขนมาเปนภาษาไทยได
ฐานขอมลในบางตารางไมมการก าหนดไพมารคย ในขนตอนท 1 ขอมลของระบบฝงฐานขอมลจะไมสามารถดงขอมลบางตารางออกมาแสดงได ตองท าการก าหนดไพมารคยใหกบทกตารางกอน
ระบบนไมไดท าการทดสอบฐานขอมลทมการก าหนดคยรวม (Composite Key)
รายงานเชงเทคนค: Technical Report หนา 17
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
ขอมลผจดท า
1. วนทน ประจวบศภกจ
e-mail : [email protected]
สถานทท างาน: พระนครเหนอ ปราจนบร
ปจจบน: เรยนปรญญาเอกอย ม.เกษตร
งานวจยทสนใจ: Machine learning
โทร. 081-6496846
2. วาทน นยเพยร
e-mail: [email protected]
ปจจบน: เรยนปรญญาเอกอยท ม.เทคโนโลยพระจอมเกลาพระนครเหนอ
งานวจยทสนใจ: Semantic
โทร. 086-6240179
3. วชดา โชตรตน
e-mail : [email protected]
สถานทท างาน: ม.สงขลานครนทร วทยาเขตปตตาน
ปจจบน: เรยนปรญญาโท อยท ม.เทคโนโลยพระจอมเกลาพระนครเหนอ
งานวจยทสนใจ: Ontology and Text Mining
โทร. 086-9656381
4. พชราภรณ จรานวฒนวงษ
e-mail : [email protected]
สถานทท างาน: มหาวทยาลยขอนแกน
ปจจบน: เรยนปรญญาโท อยท มหาวทยาลยขอนแกน
งานวจยทสนใจ: Mobile Application, Smart Service
โทร. 089-6191292
รายงานเชงเทคนค: Technical Report หนา 18
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
5. ศรณย งามศรเทพฤทธ
e-mail : [email protected]
สถานทท างาน: มหาวทยาลยขอนแกน
ปจจบน: เรยนปรญญาตร อยท มหาวทยาลยขอนแกน
งานวจยทสนใจ: Account Software
โทร. 087-4598350
6. กาญจนา ขนด า
e-mail : [email protected]
สถานทท างาน: วทยาลยเทคนคลพบร
ปจจบน: เรยนปรญญาโท อยท ม.เทคโนโลยพระจอมเกลาพระนครเหนอ
งานวจยทสนใจ: Ontology and Text Mining
โทร. 081-7048055
7. สระชย หวไผ
e-mail : [email protected]
สถานทท างาน: มหาวทยาลยรตนบณฑต
ปจจบน: เรยนปรญญาเอกสาขา Ph.D.IT. ม.ศรปทม
งานวจยทสนใจ: Web Application, Data Mining, Web Platform
โทร. 089-9199302
8. สวนตย รงราตร
e-mail : [email protected]
สถานทท างาน: มหาวทยาลยราชภฏพระนครศรอยธยา
ปจจบน: เรยนปรญญาเอกสาขา Ph.D.IT. ม.ศรปทม
งานวจยทสนใจ: Semantic Web Technology
โทร. 081-9486735
รายงานเชงเทคนค: Technical Report หนา 19
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
ตวอยาง source code
Inputsuperclass.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Welcome to Input SuperClass of Ontologies</title>
</head>
<body>
<form name="superclass" method="post" action ="g1.jsp">
<h1>Please Input Superclass </h1>
Superclass Name : <input type="text" name ="superclass" size ="20" >
<input type="submit" value ="Generate File" >
</form>
</body>
</html>
รายงานเชงเทคนค: Technical Report หนา 20
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
G1.jsp
<%@page import="java.io.*"%>
<%@page import="java.lang.*"%>
<%@page import="java.util.*"%>
<%@page
import="nectec.semantic.web.knowledge.general.framework.ontology.processing.*"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<table style='width:10px; height:10px; border:1px solid black;'>
</table>
รายงานเชงเทคนค: Technical Report หนา 21
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
<%
String filename = application.getRealPath("/") + "/FOOD_Ontology.owl";
String defaultNamespace = "http://www.hozo.jp/owl/FOOD_Ontology2.owl#";
OntologyProcessingon_pro = new OntologyProcessing(filename, defaultNamespace);
String superclass = request.getParameter("superclass");
String subclass = "Food_Group";
String totalclass = genSubclass(on_pro,subclass);
totalclass = "<ul class='treeview' id='tree'>"+totalclass+"</ul>";
out.println(totalclass);
try {;
String real_filename = application.getRealPath("/") +"/demo/mapping.html";
FileOutputStreamfos = new FileOutputStream(real_filename);
PrintWriter pw = new PrintWriter(fos);
pw.println(totalclass);
pw.println(request.getParameter("test"));
รายงานเชงเทคนค: Technical Report หนา 22
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
pw.close();
fos.close();
}
catch (Exception e) {
// Handle exceptions
}
%>
<%!
ArrayListallclass = new ArrayList();
public String genSubclass(OntologyProcessingonprocess,String subclass)
{
ArrayList subgroup1 = new ArrayList();
subgroup1 = onprocess.getListOfDirectSubClasses(subclass);
int k = subgroup1.size();
k = k-1;
if(!subgroup1.isEmpty())
{
String allclass1 = "";
for (int i=0 ;i <= k;i++)
รายงานเชงเทคนค: Technical Report หนา 23
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
{ try{
System.out.println("---");
System.out.println(i);
String classname = genSubclass(onprocess,(String)subgroup1.get(i));
allclass1 += classname;
}
catch (Exception e){
System.out.println("An exception occurred: " + e.getMessage());
}
}
String output = "<li class='expandable'><div class='hitarea expandable-
hitarea'></div><input type='radio' name='owl' value='"+subclass+"'/>"+subclass+"<ul
style='display: none;'>"+allclass1+"</ul></li>";
return output;
}
return "<li><input type='radio' name='owl' value='"+subclass+"'/>"+subclass+"</li>";
}
%>
รายงานเชงเทคนค: Technical Report หนา 24
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
demo/index.jsp
<%@page import = "java.util.ArrayList" %>
<%@page import="java.io.File"%>
<%@page import="java.io.BufferedInputStream"%>
<%@page import="java.io.DataInputStream"%>
<%@page import="java.io.FileInputStream"%>
<%@page import="java.io.FileNotFoundException"%>
<%@page import="java.io.IOException"%>
<%@page import="java.io.*"%>
<%@page import="java.net.URLEncoder"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css"
href="2c-hd-flex-layout.css" />
<link rel="stylesheet" type="text/css"
รายงานเชงเทคนค: Technical Report หนา 25
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
href="2c-hd-flex-presentation.css" />
<link rel="stylesheet" href="../jquery.treeview.css" />
<link rel="stylesheet" href="../red-treeview.css" />
<link rel="stylesheet" href="screen.css" />
<script type="text/javascript"
src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<script src="../lib/jquery.cookie.js" type="text/javascript"></script>
<script src="../jquery.treeview.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$("#tree").treeview({
collapsed: true,
animated: "medium",
control:"#sidetreecontrol",
prerendered: true,
persist: "location"
});
$("#tree2").treeview({
collapsed: true,
animated: "medium",
รายงานเชงเทคนค: Technical Report หนา 26
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
control:"#sidetreecontrol",
prerendered: true,
persist: "location"
});
})
</script>
<style type="text/css">
<!--
.style1 {color: #FF0000}
a:link {
color: #FF0000;
}
a:hover {
color: #FF0066;
}
-->
</style>
</head>
<body>
<h1 id="banner">Mapping Demo</h1>
<div id="main">
<form method="post" action="index.jsp">
รายงานเชงเทคนค: Technical Report หนา 27
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
<div id="hdr">
<center><textarea id="mapping_result" rows="10" name="output" cols="50"><%! String
db_text = "";%><%
if (request.getParameterValues("db_cb") != null) {
String[] db;
String[] owl;
ArrayList txt = new ArrayList();
db = request.getParameterValues("db_cb");
owl = request.getParameterValues("owl");
String owl_txt = owl[0];
String temp;
String str = "";
if (db != null) {
for (int i = 0; i <db.length; i++) {
db_text = db[i] + "|" + owl_txt + "\r\n" + db_text;
str = new String(db_text.getBytes("iso-8859-1"), "UTF-8");
//encoded = URLEncoder.encode(db_text, "ISO8859_1");
try {
//application.getRealPath("/") + "/FOOD_Ontology.owl";
String real_filename = application.getRealPath("/") +
"/demo/Synonym.mp";
รายงานเชงเทคนค: Technical Report หนา 28
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
FileOutputStreamfilout = null;
filout = new FileOutputStream(real_filename);
BufferedWriterbrWr = new BufferedWriter(new OutputStreamWriter(filout, "UTF-8"));
brWr.write(str);
brWr.flush();
brWr.close();
} catch (Exception e) {
}
}
out.print(str);
} else {
out.println("");
}
}
%></textarea>
<span class="treeview style1"><strong><a href="../program.jsp">>>>กลบหนา
โปรแกรม </a></strong></span><br/>
Class name:<input type="text" size="25" name="cn" value="Please fill">
Label Config:<input type="text" size="25" name="lf" value="Please
fill"><br/>
รายงานเชงเทคนค: Technical Report หนา 29
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
<input type="submit" value="submit" name="submit"/>
</center>
</div>
<div id="lh-col">
<div id="sidetree">
<div class="treeheader"> </div>
<%
String real_filename2 = application.getRealPath("/") +
"demo/mapping.html";
System.out.println(real_filename2);
File file = new File(real_filename2);
FileInputStreamfis = null;
BufferedInputStreambis = null;
DataInputStream dis = null;
fis = new FileInputStream(file);
// Here BufferedInputStream is added for fast reading.
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
// dis.available() returns 0 if the file does not have more lines.
รายงานเชงเทคนค: Technical Report หนา 30
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
while (dis.available() != 0) {
// this statement reads the line from the file and print it to
// the console.
out.println(dis.readLine());
}
// dispose all the resources after using them.
fis.close();
bis.close();
dis.close();
%>
</div>
</div>
<div id="rh-col"><br />
<div id="sidetree">
<div class="treeheader"> </div>
<ul class="treeview" id="tree2">
<%
String temp2 = "";
รายงานเชงเทคนค: Technical Report หนา 31
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
String real_filename3 = application.getRealPath("/") +
"demo/datafromtable.txt";
File file2 = new File(real_filename3);
FileInputStream fis2 = null;
BufferedInputStream bis2 = null;
DataInputStream dis2 = null;
fis2 = new FileInputStream(file2);
BufferedReaderbr = new BufferedReader(new InputStreamReader(fis2, "UTF-8"));
while (true) {
String line = br.readLine();
if (line == null) {
break;
}
temp2 = temp2 + line;
}
br.close();
String[] piece = temp2.split("#");
for (int j = 3; j <piece.length; j++) {
//String encoded = null;
รายงานเชงเทคนค: Technical Report หนา 32
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
//encoded = URLEncoder.encode(piece[j], "UTF-8");
out.print("<div id='" + piece[j] + "'><input type='checkbox' name='db_cb' value='" + piece[j]
+ "'/>" + piece[j] + "\t" + "</div>");
}
out.print("\n");
String cn = request.getParameter("cn");
String lf = request.getParameter("lf");
try {
;
String real_filename_cfg = application.getRealPath("/") +
"demo/mapping.cfg";
FileOutputStream fos2 = new FileOutputStream(real_filename_cfg);
PrintWriter pw2 = new PrintWriter(fos2);
pw2.println("@COMMENT: Class name in ontology");
pw2.println("class_ont | " + cn);
pw2.println("");
pw2.println("@COMMENT: Table name to be mapped to that
class");
pw2.println("table_db | " + piece[0].substring(1));
pw2.println("");
pw2.println("@COMMENT: Uniquely identifiable property of
class");
pw2.println("unique_id_ont | has_" + cn + "Id");
รายงานเชงเทคนค: Technical Report หนา 33
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
pw2.println("");
pw2.println("@COMMENT: That previously defined property
label");
pw2.println("unique_id_label | " + lf);
pw2.println("");
pw2.println("@COMMENT: Primary key of the table");
pw2.println("primary_key_db | " + piece[2]);
pw2.println("");
pw2.println("@COMMENT: A column in the table which can
determine which subclasses of the current class should one row of data be mapped to");
pw2.println("db_column_to_determine | " + piece[1]);
pw2.println("");
pw2.println("@COMMENT: If there are subclasses and want to
map accordingly create and define in the file and provide the name of the file you created");
pw2.println("synonym_file | synonyms.mp");
pw2.close();
fos2.close();
} catch (Exception e) {
}
%>
</ul>
รายงานเชงเทคนค: Technical Report หนา 34
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
</div>
<script>
$(document).ready(function (){
var a = $("#mapping_result").val();
var b = a.split("\n");
for(var i=0; i <b.length; i+=1){
var c = b[i].split('|');
//alert(c[0]);
$($("input[value='"+c[0]+"']").parent()).hide();
}
});
</script>
</div>
</form>
</div>
</body>
</html>
รายงานเชงเทคนค: Technical Report หนา 35
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
CreateDirMpCfg .java package CreateDirMapOntology; /** * * @author sunote */ import java.io.*; public class CreateDirMpCfg { public String SaveMpCfg(String baseDir, String ClassNameRef) { //-- Create Directory File dir = new File(baseDir, "/OntologyMap/"+ ClassNameRef); ensureDir(dir); //-- Copy To Directory File fileSrc = new File( baseDir, "mapping.cfg" ); File fileDest = new File( dir, "mapping.cfg.txt" ); File fileSrc2 = new File( baseDir, "synonyms.mp" ); File fileDest2 = new File( dir, "synonyms.mp.txt" ); String fileHtml1 =baseDir + "/MenuOntology.html"; String fileHtml2 =baseDir + "/MenuOntology2.html"; try { copyFile(fileSrc, fileDest); copyFile(fileSrc2, fileDest2); WriteFileHtml(fileHtml1, fileHtml2,ClassNameRef); } catch (IOException e) { throw new IllegalStateException(e); } //-- write Directory to File Menu String x = "555"; return x;
รายงานเชงเทคนค: Technical Report หนา 36
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
} public static void ensureDir(File dir) { if(dir.isDirectory() == false && dir.mkdirs() == false) { throw new IllegalStateException("Cannot create directory: " + dir); } } public static void WriteFileHtml(String filename1, String filename2, String ClassNameRef1) throws IOException{ FileReader fr = new FileReader(filename1); // use any filename BufferedReader br = new BufferedReader(fr); int inputline; FileWriter fw = new FileWriter(filename2); //use any filename while((inputline =br.read()) !=-1) // check to see if the file has ended { fw.flush(); fw.write(inputline); } fw.write("<br/>" + ClassNameRef1 ); fw.write("<li><a href='http://localhost:8084/Food_Ontology/OntologyMap/" + ClassNameRef1 + "/mapping.cfg.txt'>mapping.cfg</a></li>"); fw.write("<li><a href='http://localhost:8084/Food_Ontology/OntologyMap/"+ ClassNameRef1 + "/synonyms.mp.txt'>synonyms.mp</a></li>"); fr.close(); fw.close(); (new File(filename1)).delete(); File file = new File(filename2); File file2 = new File(filename1); file.renameTo(file2); } public static void copyFile(File fromFile, File toFile) throws IOException { BufferedInputStream bi = new BufferedInputStream(new FileInputStream(fromFile)); BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream(toFile)); while(true) { int b = bi.read(); if(b == -1) { break; }
รายงานเชงเทคนค: Technical Report หนา 37
กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553
bo.write(b); } bi.close(); bo.close(); } } use_Class_CreateDirMpCfg <%@page import="java.io.File"%> <%@page import="CreateDirMapOntology.CreateDirMpCfg"%> <% CreateDirMpCfg CDMpCfg = new CreateDirMpCfg(); CDMpCfg.SaveMpCfg(config.getServletContext().getRealPath("/"), "noodle"); %> //----CDMpCfg.SaveMpCfg("Path ทเกบไฟลตนทาง", "ชอ Class ทท าการ Map");