37
รายงานเชิงเทคนิค: 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 ผ่านทางเว็บไซต์ได ้ เพื่อใช ้ ประโยชน์ต่อไป

ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

  • Upload
    ledang

  • View
    221

  • Download
    7

Embed Size (px)

Citation preview

Page 1: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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 ผานทางเวบไซตได เพอใช

ประโยชนตอไป

Page 2: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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)

Page 3: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 4: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: Technical Report หนา 4

กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553

รปท 3 แสดงฟงกชนและล าดบการท างานในสวนของ Input และ Output

Page 5: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: Technical Report หนา 5

กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553

3.3 ข นตอนการท างานในเชงเทคนค

ในระบบการท างานนไดแบงการท างานออกเปน 3 ขนตอน ซงแตละขนตอนมรายละเอยด

ดงน

รปท 4 แสดงข นตอนการท างานในเชงเทคนค

ขนตอนท 1

ขนตอนท 2

Page 6: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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 สามารถเรยกใชงานคลาสดงกลาวโดยมพารามเตอร ดงน

Page 7: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 8: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 9: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 10: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 11: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: Technical Report หนา 11

กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553

รปท 7 แสดงหนาจอรบชอ SuperClass

ค าอธบาย: จ เมอ ใ เมนOntology Mapping แลวจะปรากฎหนาจอเพอรบชอ SuperClass แลวกดป ม Generate File จากนนจะไดไฟล mapping.html

Page 12: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: Technical Report หนา 12

กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553

รปท 8 แสดงหนาจอเลอกชอตารางจากฐานขอมล

ค าอธบาย: จ เมอ ใ เมน Database Mapping แลวจะปรากฎหนาจอเพอรบชอตารางแลวกดป ม OK จากนนจะไดชอ Primary Key และชอคอลมนทงหมดของตารางนนเพอใหผใชเลอกเปนลกษณะ combobox และเมอผใชเลอกชอคอลมนแลวกดป ม OK จะปรากฎขอมลของคอลมนนนๆ ในชองของ Data

Page 13: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 14: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: Technical Report หนา 14

กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553

รปท 10 แสดงหนาจอไฟล Output ของไฟล mapping.cfg ทไดจากระบบ

ค าอธบาย: จ เมอ ใ เมน mapping.cfg โดยการคลกเมาสขวาแลวเลอก Save

Target As.. จากนนท าการ save ไฟลทตองการ

Page 15: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: Technical Report หนา 15

กจกรรมการเขยนโปรแกรม Semantic-based Knowledge Management Tools for Developers, 4-6 ธนวาคม 2553

รปท 11 แสดงหนาจอไฟล Output ของไฟล synonyms.mp ทไดจากระบบ

ค าอธบาย: จ เมอ ใ เมน synonyms.mp โดยการคลกเมาสขวาแลวเลอก Save

Target As.. จากนนท าการ save ไฟลทตองการ

Page 16: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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)

Page 17: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 18: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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

Page 19: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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>

Page 20: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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>

Page 21: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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"));

Page 22: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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++)

Page 23: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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>";

}

%>

Page 24: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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"

Page 25: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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",

Page 26: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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">

Page 27: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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";

Page 28: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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">&gt;&gt;&gt;กลบหนา

โปรแกรม </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/>

Page 29: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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">&nbsp;</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.

Page 30: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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">&nbsp;</div>

<ul class="treeview" id="tree2">

<%

String temp2 = "";

Page 31: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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;

Page 32: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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");

Page 33: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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>

Page 34: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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>

Page 35: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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;

Page 36: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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; }

Page 37: ระบบจดัการคาศพ ...text.hlt.nectec.or.th/ontology/sites/default/files/semdev/group2... · รายงานเชงิเทคนิค: ... 2.3 Term

รายงานเชงเทคนค: 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");