什麼是Semantic Forms ?Semantic Forms是MediaWiki軟體的擴充套件(Extension),要搭配Semantic MediaWiki才能夠運作;而Semantic MediaWiki也是MediaWiki的擴充套件(Extension);Semantic MediaWiki提供了在MediaWiki軟體中加入Ontology語法的功能,而Semantic Forms則是用表單的方式簡化了填寫Ontology的方式。 有關MediaWiki以及Semantic MediaWiki的介紹可參考筆者撰寫之文章。 安裝Semantic FormsSemantic Forms的官方網頁在MediaWiki網站的Extension:Semantic Forms頁面;其安裝步驟如下。
$sfgNamespaceIndex = 150; 在安裝好以後會增加一些Special Pages,列表說明如下。
Semantic Forms設計觀念Semantic MediaWiki延伸了Wiki的語法,加入了屬性([[屬性名稱:=屬性值]])以及關係([[關係名稱::目標頁面]])的語法;雖然Wiki以及新加入的語法比起HTML或是程式語言已是相當簡單,但從應用程式的操作角度來看,Wiki語法的編輯還不夠直覺,這也就是Semantic Forms專案想要解決的問題,希望讓Wiki的語法在使用上更直覺容易。 下面兩點是Semantic Forms的主要設計觀念,在稍後的小節我們會看到實際的例子來說明這樣的觀念。
動手新增Semantic Forms底下筆者以範例的方式來說明Semantic Forms的設計觀念,藉由圖片的輔助讓讀者對Semanitc Forms的有實際的感受,並加以文字的說明讓讀者有整體性的觀念。 新增屬性(Attribute)或關係(Relation)在特殊頁面Special:CreateProperty中可以新增Semantic MediaWiki的屬性(Attribute)或是關係(Relation),與手動新增的內容相同;這個功能算是幫Semantic MediaWiki的介面做加強,以往只能用新增頁面([[Attribute:屬性名稱]]、[[Relation:關係名稱]])並鍵入內容的方式來達成,雖然對於熟悉的編輯者用手動編輯或是介面編輯差異不大,但對於初學者而言是相當直覺式的操作。 新增Semantic Template在Special:CreateTemplate中可以新增Semantic Template,所謂的Semantic Template與一般的樣版(Template)並無差異,重點是在樣版內容中增加了Semantic MediaWiki的屬性及關係,並且其值是由樣版的參數傳入;這樣的好處是使用者只要會呼叫樣版即可藉由樣版的包裝享受Semantic MediaWiki的好處,Semantic Template會將參數套入樣版中顯示最後的結果。下面是呼叫樣版的語法:
下圖是建立樣版時的Semanitc Forms介面;筆者可以點選下面連結看每個欄位的詳細說明。 http://www.flickr.com/photos/kunhsiang/1438134472/ 新增好的樣版內容如下,當然也可以用手動增加頁面([[Template:連絡人]] )的方式來新增或修改:
新增Semantic Form接下來進入到Semantic Forms的重點,要如何新增表單(Form),在前述兩小節談到如何新增屬性、關係以及樣版,這些是Semantic Forms的輔助功能,要是不用介面的方式也可以使用手動的方式來新增;但在表單的部份則是必須要藉由Semantic Forms的功能來達成。 詳談表單的新增方式前,讓我們再來重點式的複習一下Semantic Forms的運作流程。
接下來我們談如何實際規劃一個Semantic Form,在Special:CreateForm頁面中可以建立Semantic Form;新增Semantic Form也有兩個步驟,第一個是選擇對應的Semantic Template,要注意的是一個Semantic Form可以對應到多個Semantic Template、第二個步驟是將Semantic Template對應到實際的Semantic Form欄位。 下圖為選擇Semanitc Template的畫面,讀者可以點入連結看各個欄位的說明。 http://flickr.com/photos/kunhsiang/1452581547 新增好Semantic Template後,我們可以設定每個欄位的屬性,例如顯示名稱、是否為必填…等等;下面的連結亦可點入看詳細的畫面說明。Semantic Forms會每個欄位預設為適合的介面型態,例如日期型別(Date)就會有日期的介面可以選擇年月日、列舉型別(Enumeration)就會將列舉值 用下拉式選單列出。 在設定好之後按下Preview即可看到Semantic Forms為我們所產生的表單語法,也是用Wiki的語法來描述;我們看到此表單語法的主要結構如下連結,並於後文詳細說明: http://flickr.com/photos/kunhsiang/1452877987/ 根據Semantic Form新增頁面在新增好表單後,可以在Special:Forms中選擇特定的表單(Form)後方有Add data with form的連結,可以點選實際新增頁面。 下方的兩張圖是實際新增頁面及輸入表單內容的畫面,亦可透過Special:AddPage 或是Special:AddData這兩個特殊頁面來達成;其用法再說明如下:
實際上在新增完資料儲存後會將值存為Semantic Template的型式,而Free Text的部份就會緊接著Semantic Template為一般的Wiki語法。
修改頁面在新增完頁面後會有需求修改頁面,第一種方式是透過頁面Special:EditData來達成。
第二種方式可在頁面的上方加編輯標籤(Edit with Form),方法是要先將利用[[Category:分類名稱]]語法將頁面分類,然後在分類頁面[[:Category:分類名稱]]中加入以下語法。
以下為設定好後之頁面,在右上角會有Edit with Form的標籤,點入後即可使用對應的表單編輯頁面。 Semantic Forms語法結構Semantic Forms給了我們方便的視覺化介面來新增屬性、關係、樣版及表單,然而最重要的是Semantic Forms的表單語法,藉由此語法可以讓我們設計表單,讓Wiki的使用更上高一層,結合Semantic MediaWiki及Semantic Forms可以設計許多小型簡單的應用程式,而不需要花費很高的成本開發系統,或是做為雛型收集需求之用。 Semantic Forms的語法以{{{for template}}}及{{{end template}}}做為表單的開始及結束,緊接著在for template之後為表單對應到的樣版名稱,並且還可用 | 號來分隔出其它屬性,較為重要的屬性有:
底下舉個例子給讀者參考。
{{{for template}}} {{{end template}}} 是Semantic Forms描述樣版的基本結構,在其中會有許多 {{{field}}} 的欄位描述,需注意的是某些特殊的欄位 如 {{{free text}}}、{{{page title}}}不必包含於{{{for template}}} {{{end template}}}區塊中。 我們先針對{{{field}}}的屬性進行說明,再度提醒屬性間以 | 號隔開。
除了{{{field}}}外,另外有兩個特殊欄位變數{{{page title}}}及{{{free text}}};其中{{{page title}}}用來顯示使用者所編輯的頁面名稱,如上所述不必放置於{{{for template}}}區塊之中。 {{{free text}}}用來表達除了Semantic Template之外的內容,一樣放於{{{for template}}}區塊外,可以指定的屬性有rows、cols、hidden、restricted、preload;其中preload=page title為專屬屬性,可以預先載入某個網頁內容。 結語筆者在接觸Semantic Forms前已經有在使用Semantic Template,在使用Semantic Forms時有個疑問,就是原先的Semantic Template套用在Semantic Forms能否不加修改就能運作正常;這部份是沒有問題可以正常運作的,除了一個小問題,就是在FreeText的部份只能加在Semantic Template後面而無法於前面也能有FreeText。 Semantic Forms是個年輕的專案,在2007年5月才開始第一版,由Yaron Koren所開發;在維基年會看到其發表,覺得Semantic Forms是未來促進Wikipeida及Semantic Web推廣重要的應用就加以研究。 Semantic Forms除了視覺化的方式來新增屬性、關係、樣版及表單外,最重要的核心就是Semantic Forms的語法,這語法比起一般程式語法如C#,甚至HTML簡單許多,當然在功能上比不上;但對於簡化Wiki的使用以及瞭解Semantic Web的實務用途有相當大的幫助。
|