研究報告
 
 
[從使用者的觀點來設計網站]
劇情1
學生觀點
在遠距教學課程中的藝術演出學生正透過電子媒介的方式來準備一個多媒體的論文。他們必須寫一個關鍵的研究報告有關"20世紀舞蹈情愫觀點"。那些註冊他們的個人profile的大學指出安靜的和運動的圖像資料對聯繫的支援內文和符號特別有用。藉從家和遠程地存取這個制度化的入口的工作,這個學生開始以順應個人profile豐富多媒體檔案格式喜好的系統化跟來自dner kite-marked網站和UK-produced資源的自動優先材質來做搜尋.,一個含有15個結果的表單回傳了,這學生選了前五個來看,第一個項目是來自PATRON網站且是一個由Cinderella的Royal Balletps製作的可觀看video的點選,且由來自泰晤士報ballet舞蹈評論家的Benesh 記號跟書寫。學生透過多媒體的特性PATRON的介面和有用的相關工具直接點選view clip。學生在我的最愛裡面加上了一個跟這資源有關的連結,用commet來對動態影像點選註解,有關舞蹈者對音樂解釋-並把這註解highligh,剩下的連結也是依序用這樣的方式:在geographically dispersed 網站有兩份第二個項目的拷貝。這個制度化的入口指出第二個位置有更好的能力跟觀點因為他是遠距資源的一個當地的mirror。再者會對這論文有貢獻有用的材質會透過(我的最愛)被一起收集且完成的論文將被寄送到數位傳送盒讓演講者來用。
劇情2
講師觀點
一個講師正為了一個有關"Selection interviewing in the social sciences"的線上課程製作一些材質透過the institutional/Blackboard learning環境來傳遞.一些不好的interviewing技術和一些深入研究的影像範例被需求。講師開始一個RDN搜尋,選了SOSIG和IBSS gateway且取得包含一些好的研究內文的27個連結,
講師點選最好的個案研究到黑板Courses tab 的適當地方且建構一個學習目標使學生們可以用關鍵議題來思考,講師之後讓個案自己增加建構有關這個案學習的多樣選擇問題,講師然後在大學網站的資源tab加上一個連結到影像且做了個線上筆記來為文章搜尋一個最喜愛的電子期刊網站。講師最後透過黑板的"通訊中心"寄出一個e-mail到他的教師群,來提醒他們RDN SOSIG gateway的網址。
劇情3
研究科學家觀點
生物社會中博士的研究者,對在環境空氣品質和專門肺臟疾病之間建立聯結感到興趣.,研究者由從完成三個選擇的地點,使用對共有生物社會辭典自動地圖的相同的關鍵字,透過生物社會問題入口交叉搜詢開始,搜尋涵蓋直接經由生物社會的傳統上出版的主要文學,印刷品的檔案館和未發表過流行病學的資料的資料庫,連結到這些文章的每個資源是由ATHENS/SPARTA驗證機制來管理。研究員接收到有關期刊文章書目的數字然後直接下載最進10個全文。來自一些作者的印刷品檔案館的數字被接收且來自MRC資料庫的3組資料被收集。研究員之後選了來自這些資源的每個相關的數字結果且使用一個當地性的統計package
來在任一有根據的相關資料集來跑測試。最後,研究員為了在固定的每月間隔儲存這些搜尋結果到他們的profile。
劇情4
圖書館員觀點
藝術和人性圖書館員正設計一個資訊技術課程來傳遞到 MA Medieval 課程研究,學生(課程將橫跨公共機構 digitised 材料和遠距收集)館員透過制度化的入口設定一個論證式搜尋。一個寬廣的JISC服務儲存庫搜尋和檔案收集hub被執行了,這會識別一個收取當地和制度化的手稿資源號碼。選擇這些收集的描述之一後,館員以highlight 附加細節用圖說明這資訊的價值:
現存跟原始蒐集有相關的子蒐集,藉由正確資料指出的在蒐集和蒐集的信賴度的項目格式(如所選的蒐集描述的數位影像)藉由在蒐集描述服務跟等級服務到只有選用高價值/高品質因素來使用"力量"指示器,於是更詳細和更深入的搜尋在熱門網站之後被直接執行,這些由高品質影像和連結的文字之一的號碼取得的結果跟有關他們位置的資訊和取得原始蒐集描述一起被得到了。這些在之後被儲存到跟MA學生這群人有關的制度化的學習環境資源處。
劇情5
大學校長觀點
一位大學VC正為了一個在化工部門即將到來的教學品性估價panel作準備且想要作一個在收集/服務的範圍和他們對學生跟職員經驗的影響的30分鐘演講。VC開始取得不同的DNER範例內文和收集這些到"我的最愛"。這在來自制度化e-print檔案館的內部出版的範例歸檔論文,來自化學資料銀行的3-D分子圖形,展示過程工程方法的視頻夾子,連結到一個包含學習跟教育群相互之間關係的當地發展線上課程。上述在之後會用原文作記號來連結而這樣也會形成要講述的文章的一部分。VC特別想要演示機構對整個學習過程的管理方法-支援服務,品性確信程式和管理的資訊的角色。VC決定以匿名學生資料(經過允許的)用圖說明來展示對應到學生的數位紀錄,館藏處理,如課程紀錄版的部門文件,財政處理,和軟體。具有以基礎以廣泛接受的標準的共享metadata的協同運作系統的重要性將在討論中被強調。
 
[心得資料]
 
入口網站摘要:
The Web is moving from being a collection of pages toward information pages that interoperate through the Internet.
為什麼不使用XML:
A limitation shared by the XML based standards described web is their lack of an explicit semantics: two identical XML descriptions may mean very different thing depending on the context of their use.
What is rdfDB?
rdfDB is intended to be a simple, scalable, open-source database for RDF for systems like Semantic Web Services.
[sesame問題簡化]

使用RQL為我們的標準查詢工具,套用sesame所提供的RQL功能到資料庫中取資料
例如下面這句RQL的語法,組成下面紅色的句法餵入sesame,藉由sesame找出答案
select X, @P
from {X} @P {Y}
where Y like 'Pablo'
X is the subject, @P the predicate, and Y the object.

http://140.129.25.117:8080/sesame/servlets/performRqlQuery?format=html&repository=rdbms-rdfs-db&query=select+X%2C+%40P+from+%7BX%7D+%40P+%7BY%7D+where+Y+like+%22Pablo%22

利用此法與prolog做結合,資料推理的部分交給prolog,最後要取出資料時使用此方式得到資料庫中的資料
為何如此做:
之前的做法本來是想利用prodata直接存取sesame資料庫中的資料,但是一直找不出它們之間的關係,唯一找出來的關係如下面粗體字所示:
資料表中的teiples資料表中的subject,predicate,和object所代表的數字都是指到resources這個資料表中的ID欄位,根據resources這個資料表中的ID欄位可以找到subject,predicate,和object的namespace,找resources.namespace=namespaces.Id,從namespaces這個資料表中可以得到所使用的namespace的名字,欄位為namespaces資料表中的localname。假若object的值為負,則要去找literals這個資料表的label欄位,去對應它的值
我大概將isa_slot改寫如下:
isa_slot(A,F,V):-
resources(Id,Namespace,A),
namespaces(Namespace,Prefix,_,_,_),
F=Prefix,assert(resId(Id))->
resId(Id),
retractall(resId),
triples(_,_,Id,Object,_),
literals(Object,_,_,V,_)
;V is 0.

範例:isa_slot('last_name','cult',A).
但是我不知匯入的資料如何建立他們的架構,class的表格中並沒有出現任何資料,所以不知frame的類別應該對應到哪個class,所以暫時將得到的namespace當成frame,但是應該不正確,但我又找不到設的欄位,有待解決

所以就先去研究RQL的語法看看到底在做什麼,並去了解語法(目前還不太清楚),但是發現一件事,好像我們可以利用網址的方式將循位的問句送入sesame中,假設這已經是使用者最終想要的到的答案,所以不需再去考慮prolog之後還要做什麼動作,直接將網頁叫起來將參數傳入之後就沒事了。
本來要去了解一堆雜亂不易看懂的數字,現在應該只要設法了解RQL就行了(至少RQL的語法可以找到文章,總比自己摸索不熟悉的資料庫快的多),因為這個表格是sesame自己產生出來的東西,並不容易瞭解其中的關聯,RQL的文章比較容易被找到
所以目前所要做的只是如何將適當的問句丟給sesame,使用RQL的語法

select X,@P,Y 選擇你所要查詢的資料
from {X}@P{Y} 從這三個關係中挑出(X is the subject, @P the predicate, and Y the object.)
[LPA 中文碼]
 
中文碼 1-byte 2-byte 系統碼
我 167 218 25105
---------------------------------------
如何得值
167和218利用get0(X)將存有'我'的檔案讀入所產生的值
(程式碼在[P1])
25105是利用name('我',X)所得的值
運算
167*256+218 != 25105
218*256+167 != 25105
[P1]
t1:-
see('C:\p\rrr.txt'),inpos(0),
get0(T),t2(T).
t2(T):-
(T>127)->get0(T1),write(T),nl,write(T1),nl,t3(T),seen;write(T),nl,t3(T),seen.
t3(T):-
(T = -1)->true;get0(T1),t2(T1).
------------------------------------------
******************************************
中文碼 1-byte 2-byte 系統碼
你 167 65 21800
------------------------------------------
運算
167*256+65 != 21800
65*256+167 != 21800
-------------------------------------------
******************************************
中文碼 1-byte 2-byte 系統碼
他 165 76 20182
------------------------------------------
運算
165*256+76 != 20182
76*256+165 != 20182
-------------------------------------------
###########################################
結論與解決方案:
###########################################
從以上的數據資料中,我們發現讀入的字碼並不能
直接透過簡單的運算得到結果,我們也分析了好幾
組數據,試圖找出這三個數字之間的關係,因為最
初的假設(X*256+Y=prolog中文碼)是錯的,三個數
字之間的關係我們花了很多時間,但找不出來。
(註:win-prolog 4.2可以使用X*256+Y=prolog中文碼)

解決方案:
先將檔案存成unicode的格式,一般而言若是用筆記本編
輯文件時,預設會以ANSI的格式儲存,此時可以另存新檔
並將編碼改成unicode,再來程式碼如[P2],使用open(X,Y,Z)
其中Z指定為一次讀2-bytes (raw_16_le),因為之前的檔案格
式被調成unicode,故所有資料可以用2-bytes讀出。


[P2]
t1:-
open('C:\p\rrr.txt',read,raw_16_le),
see('C:\p\rrr.txt'),inpos(0),
get0(T),t3(T).

t3(T):-
(T = -1)->seen,true;name(X,[T]),write(X),nl,get0(T1),t3(T1).

-------------------------------------------------
測試結果報告:
-------------------------------------------------
rrr.txt內容為:aaa中華民國
執行上述程式結果:
| ?- t1.
?
a
a
a




yes

唯一的問題是,會多出"?"東西。
以後所要做的工作就是要確認文件是否為unicode。
[和老師討論concept search的方法]


class[(A[:V[,A:V,A:V....]])]
型態: class
class(A)
class(A:V)
class(A:V,A:V,...)
(?) class(A:V,A)
(?) class(_:V)

實現方法:
(1)首先先挑出符合的class名字,將這些符合的class形成一個list,
[C1,C2,C3,C4.....Cn],leap(2)
(2)檢查是否有A值,若沒有A值,leap(4),若有A值,就檢查[C1,C2,C3,C4....Cn]的屬性值,
並以A值去篩選Class產生新的Class List[C1,C2....Cm],leap(3)
(ps (1)(2)兩個步驟只透過ontology來做資料的檢查,此時instance(RDF)
並未進入flex的工作區域,到目前為止flex只load一份ontology在工作區域 )
(3)檢查是否有V值,若沒有leap(5),否則將符合(1)(2)class的instance load到flex中,
leap(4)
(4)從loaded的instance中找尋正確符合的instance,leap(6)
(5)若到此步驟中,表示我們只有收集到可能符合的class名稱,因此可以show出所有符合的
Class name
(6)若到此步驟中,表示我們已經對所有instance的資料作過搜尋,結果有二,一是找到一筆
或多筆使用者想查詢的資料,另一種情況是找不到資料,如何呈現最後資料?


(PS 為什麼會找到多筆資料,可能的原因有(a)在同一個class下,有相同或不同
的屬性擁有相同的值,(b)在不同的Class中,有相同或不同的屬性擁有相同的值
(a範例) class person
instance 'A' is a person
'喜歡吃的東西' is '蘋果' and
'今天的中餐' is '蘋果' and
'喜歡吃的甜點' is '巧克力'.
instance 'B' is a person
'喜歡吃的東西' is '巧克力' and
'今天的中餐' is '蘋果' and
'喜歡吃的甜點' is '咖啡'.
說明:因為進入(6)時,
有可能donnot care A,而V='巧克力'則'A'和'B'都會被找到
有可能donnot care A,而V='蘋果'則'A'會被找到兩次
有可能A='今天的中餐',V='蘋果'則'A'和'B'都會被找到
(b範例) class teacher
instance 'A' is a teacher
'喜歡吃的東西' is '蘋果' and
'今天的中餐' is '蘋果' and
'喜歡吃的甜點' is '巧克力'.
class student
instance 'B' is a student
'喜歡吃的東西' is '巧克力' and
'今天的中餐' is '蘋果' and
'喜歡吃的甜點' is '咖啡'.
說明:因為進入(6)時,
有可能donnot care A,而V='巧克力'則'A'和'B'都會被找到
有可能donnot care A,而V='蘋果'則'A'會被找到兩次
有可能A='今天的中餐',V='蘋果'則'A'和'B'都會被找到
)

[檢討並實作concept search的程式]

實作方式,根據上述演算法實現,並加入以下概念:

x表示don't care 例如 Attr-x->表忽略value,x-Value->表示忽略Attr
若Attr-Value的條件有多個,採聯集的方式,傳回Class是一List,所有符合條件的
instance名稱和class的名字存於其中。

因此原先的class[(A[:V[,A:V,A:V....]])]輸入改成
class[(A-V[,A-V[,A-V.....]])] 其中{A|x or 屬性}{V|x or 數值}

[Agent程式改寫]

 

我所寫的程式功能簡介與特點:
1.將原來視窗版的程式改寫成非視窗的單純模式,希望透過webflex做出對外溝通的介面。
2.程式中可以與許使用者自由的輸入資料,但是資料內容只限小寫英文字母,不得有特殊
符號或出現flex所使用的關鍵字,因為目前所傳送的資料型態,我接把它視為atom,而
非字串或List,將來有機會可修正此錯誤。
3.程式的進入點為telnet(X,Y),其中X代表主機名稱(字串或atom),Y代表port(數字)。
4.與主機建立連線成功之後會出現>>>的提示符號,用hello、goodbye、bye等字輸入測試。
5.程式的結束[crtl]+c在按[Enter]
6.程式寫作方式:
我採用問答的方式來完成,透過first_conn(hi,C)與主機建立第一次連線
並取得與主機的溝通管道,並將自己的資訊告知主機。
往後透過secend_conn( request,Request,Channel )來傳訊息。
我利用delay_loop來等候訊息傳送的時間,在之前的實驗中,因為我沒有
加上時間的延遲造成資料抓不到,視窗版(原先)的程式沒有看到delay的
東西,可能delay隱含在視窗的處理機制中。

[實作演算法]

 

樹狀結構的演算法:
Step1:根據ontology取得'Root'下的第一代小孩,形成一個list[X1,X2,X3....]
(註:使用isa_frame(X,'Root'),而不是descendant('Root',X))
Step2:對每一個小孩成員作處理,從第一個到最後一個,如果Xn(初值n=1)有小孩->Step3;Step4
Step3:形成下一代孩子的list[X1,X1,X1],Step2
Step4:n=n+1 if n<=現在處理這一代的孩子個數->Step2;Step5
Step5:End


演算法:
假設根據ontology取得'Root'下的第一代小孩叫做ClassList
action s(ClassList);
for X is included in ClassList
if 有小孩
do getchild(*,List)
...
and s(List)
else 沒有小孩
...
end if
end for.

[問題點]

 

問題:1.透過Agent來傳資料時,字數為什麼只限制在1000個字左右?
2.為什麼Agent有特殊字的限制?
我之前所寫的Agent程式的確有此bug,我之前也提過,因為我在程
式中傳送資料是以atom的方式傳出去的,以這種方式傳出去的缺點,
就是不能用中文、,、a、is或大寫英文字母等來傳送,因為這些開頭
或存在的東西皆不是atom,而且atom有長度的限制,參考prolog help
atom too long中的說明,atom最多只能有1024個字,甚至使用
name(Atom,List),將某一個超過1024長度的List轉成Atom會有問題,
agent也無法傳送,同理在程式中有用到cat(list,atom,_)也會發生相同的錯誤。
************************************************
解決方式:根據prolog說明書中記載,字串與list並無長度的限制,因此
必須設法將這些原本以atom傳送的資料型態設法轉換成list或字串來傳送,
今天我測試了一下,若改成字串,就可傳送整篇文章給對方。

arrow
arrow
    全站熱搜

    CJY0503 發表在 痞客邦 留言(0) 人氣()