跳轉到內容

XQuery/列出 OWL 類

來自華夏公益教科書

您需要一個簡單的 XQuery 程式,可以從使用 RDF 編碼的 OWL 檔案中提取所有 OWL 類。

我們將從選擇檔案中所有具有名稱的類開始。在本例中,名稱儲存在類的 rdf:ID 屬性中,如下所示

  <owl:Class rdf:ID="Wine">

在本例中,我們將使用 葡萄酒本體,用於 W3C OWL 指南 中。

我們的 XQuery 將專門獲取檔案中所有帶有 "owl:Class" 元素的 RDF 標籤。

這是一個簡單的 XQuery,它返回葡萄酒本體中的所有類。您可以將此指令碼載入到一個集合中,例如 /db/apps/owl/views/classes.xq,並將 RDF 資料檔案載入到 /db/apps/owl/data 中

/db/apps/owl/views/classes.xq

xquery version "1.0";

declare namespace xsd="http://www.w3.org/2001/XMLSchema";
declare namespace rdfs="http://www.w3.org/2000/01/rdf-schema#";
declare namespace rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
declare namespace owl="http://www.w3.org/2002/07/owl#";

declare option exist:serialize "method=xhtml media-type=text/html indent=yes";

let $title := 'List of OWL Classes'

let $data-collection := '/db/apps/owl/data'
let $file := request:get-parameter('file', 'wine.rdf')
let $file-path := concat($data-collection, '/', $file)

(: we only want classes that have an ID.  Other classes are not named classes. :)
let $classes := doc($file-path)//owl:Class[@rdf:ID]

(: sort the list :)
let $ordered-classes :=
   for $class in $classes
   order by $class/@rdf:ID
   return $class

return
<html>
    <head>
       <title>{$title}</title>
    </head>
    <body>
      <file>File Path: {$file-path}</file>
      <p>Number of Classes = {count($classes)}</p>
      <ol>
      {for $class in $ordered-classes
         let $class-name := string($class/@rdf:ID)
         return
           <li>{$class-name}</li>
      }
      </ol>
    </body>
</html>

示例結果

[編輯 | 編輯原始碼]

結果將是一個帶有有序列表的 HTML 檔案

File Path: /db/org/syntactica/apps/owl/data/wine.rdf

Number of Classes = 74

   1. AlsatianWine
   2. AmericanWine
   3. Anjou
   4. Beaujolais
   5. Bordeaux
   6. Burgundy
   7. CabernetFranc
   8. CabernetSauvignon
   9. CaliforniaWine
  10. Chardonnay
...

其他工具

[編輯 | 編輯原始碼]

還有幾個其他工具可以用於處理 OWL 檔案,這些工具非常有用。其中一個是列出 OWL 檔案中的所有屬性或列出某個類的所有屬性。這些報告可以用來將類或屬性載入到 XForms 應用程式中,以進行編輯、版本控制、工作流和批准。

華夏公益教科書