a. Giới thiệu
OWL (The Web Ontology Language) là một ngôn ngữ gần như XML dùng để mô tả các hệ cơ sở tri thức. OWL là một ngôn ngữ đánh dấu dùng để xuất bản và chia sẻ dữ liệu trên Internet thông qua những mô hình dữ liệu gọi là “ontology”. Ontology mô tả một lĩnh vực (domain) và diễn tả những đối tượng trong lĩnh vực đó cùng những mối quan hệ giữa các đối tượng này. OWL là phần mở rộng về từ vựng của RDF và được kế thừa từ ngôn ngữ DAML+OIL Web ontology – một dự án được hỗ trợ bởi W3C. OWL biểu diễn ý nghĩa của các thuật ngữ trong các từ vựng và mối liên hệ giữa các thuật ngữ này để đảm bảo phù hợp với quá trình xử lý bởi các phần mềm.
OWL được xem như là một kỹ thuật trọng yếu để cài đặt cho Semantic Web trong tương lai. OWL được thiết kế đặc biệt để cung cấp một cách thức thông dụng trong việc xử lý nội dung thông tin của Web. Ngôn ngữ này được kỳ vọng rằng sẽ cho phép các hệ thống máy tính có thể đọc được thay thế cho con người. Vì OWL được viết bởi XML, các thông tin OWL có thể dễ dàng trao đổi giữa các kiểu hệ thống máy tính khác nhau, sử dụng các
hệ điều hành và các ngôn ngữ ứng dụng khác nhau. Mục đích chính của OWL là sẽ cung cấp các chuẩn để tạo ra một nền tảng để quản lý tài sản, tích hợp mức doanh nghiệp và để chia sẻ cũng như tái sử dụng dữ liệu trên Web. OWL được phát triển bởi nó có nhiều tiện lợi để biểu diễn ý nghĩa và ngữ nghĩa hơn so với XML, RDF và RDFS, và vì OWL ra đời sau các ngôn ngữ này, nó có khả năng biểu diễn các nội dung mà máy có thể biểu diễn được trên Web.
b. Các phiên bản OWL
Hiện nay OWL có ba loại: OWL Lite, OWL DL (description logic) và OWL Full.
+ OWL Lite: hỗ trợ cho những người dùng chủ yếu cần sự phân lớp theo thứ bậc và các ràng buộc đơn giản. Ví dụ: Trong khi nó hỗ trợ các ràng buộc về tập hợp, nó chỉ cho phép tập hợp giá trị của 0 hay 1. Điều này cho phép cung cấp các công cụ hỗ trợ OWL Lite dễ dàng hơn so với các bản khác.
+ OWL DL (OWL Description Logic): hỗ trợ cho những người dùng cần sự diễn cảm tối đa trong khi cần duy trình tính tính toán toàn vẹn (tất cả các kết luận phải được đảm bảo để tính toán) và tính quyết định (tất cả các tính toán sẽ kết thúc trong khoảng thời gian hạn chế). OWL DL bao gồm tất cả các cấu trúc của ngôn ngữ OWL, nhưng chúng chỉ có thể được sử dụng với những hạn chế nào đó (Ví dụ: Trong khi một lớp có thể là một lớp con của rất nhiều lớp, một lớp không thể là một thể hiện của một lớp khác). OWL DL cũng được chỉ định theo sự tương ứng với logic mô tả, một lĩnh vực nghiên cứu trong logic đã tạo nên sự thiết lập chính thức của OWL.
+ OWL Full muốn đề cập tới những người dùng cần sự diễn cảm tối đa và sự tự do của RDF mà không cần đảm bảo sự tính toán của các biểu thức. Ví dụ, trong OWL Full, một lớp có thể được xem xét đồng thời như là một tập của các cá thể và như là một cá thể trong chính bản thân nó. OWL Full cho phép một ontology gia cố thêm ý nghĩa của các từ vựng được định nghĩa trước (RDF hoặc OWL).
Các phiên bản này tách biệt về các tiện ích khác nhau, OWL Lite là phiên bản dễ hiểu nhất và phức tạp nhất là OWL Full.
Mối liên hệ giữa các ngôn ngữ con của OWL:
+ Mọi ontology hợp lệ dựa trên OWL Lite đều là ontology hợp lệ trên OWL DL. + Mọi ontology hợp lệ dựa trên OWL DL đều là ontology hợp lệ trên OWL Full. + Mọi kết luận hợp lệ dựa trên OWL Lite đều là kết luận hợp lệ trên OWL DL. + Mọi kết luận hợp lệ dựa trên OWL DL đều là kết luận hợp lệ trên OWL Full. c. Cấu trúc một ontology biểu diễn bằng OWL
Namespaces
Cần có những chỉ dẫn chính xác những từ vựng sẽ được sử dụng trong tài liệu. Sử dụng thẻ mở rdf:RDF, ta khai báo tập các từ vựng này. Một OWL ontology bắt đầu với một phần khai báo namespace tương tự như sau:
<rdf:RDF xmlns:xsd="http://www.w3.org/2001/XMLSchema#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:vissim="http://vissim.uwf.edu/VOT_Ontology_Governmental#" xml:base="http://vissim.uwf.edu/VOT_Ontology_Governmental#" >
Từ namespace 1 đến namespace 4 khai báo tập từ vựng OWL, RDF/RDFs (từ khóa) sẽ sử dụng trong tài liệu và các kiểu dữ liệu trong namespace XML Schema (xsd:). Hai namespace cuối cùng xác định ontology liên kết.
Ontology headers
Có vai trò mô tả về ontology. Các thông tin bao gồm ghi chú, điều khiển phiên bản, thông tin phiên bản... được đặt trong thẻ owl:Ontology.
<owl:Ontology rdf:about="">
<owl:versionInfo>1.0 Beta</owl:versionInfo>
<rdfs:label xml:lang="en">Visual Objects Taxaonomy (VOT) Government Features</rdfs:label>
<rdfs:comment>An initial installment of an ontology of visible object on the Earth's surface derived from the Visual Objects Taxonomy (VOT) developed at the University of West Florida. This release contains government and government associated features.</rdfs:comment>
</owl:Ontology>
+ rdf:aboutcung cấp tên hoặc tham chiếu cho ontology, trường hợp tiêu chuẩn, tên của ontology là URL cơ bản về owl: Ontology
+ rdfs:comment cung cấp khả năng cần thiết để chú thích rõ ràng một ontology.
+ owl:priorVersion là một tag chuẩn nhằm cung cấp sự liên kết cho các hệ thống phiên bản làm việc với các ontology.
+ owl:imports cung cấp một cơ chế include-style, owl:imports có một đối số duy nhất, được định nghĩa bởi rdf:resource attribute.
Các định nghĩa ontology: Lớp, cá thể, thuộc tính, các mối quan hệ… d. Các yếu tố cơ bản
Hầu hết các yếu tố trong OWL ontology liên quan đến các lớp (classes), thuộc tính (properties), thể hiện (instances) của lớp và các mối quan hệ (relations) giữa chúng.
Các lớp (class)
Class, rdfs:subClassOf
Các khái niệm cơ bản nhất trong một tên miền phải tương ứng với các lớp. Tất cả các cá thể trong thế giới OWL là thành viên của lớp owl:Thing. Vì vậy mỗi lớp được định nghĩa mặc nhiên là một phân lớp của owl:Thing. OWL còn định nghĩa các lớp rỗng
owl:Nothing.
Định nghĩa một lớp gồm có hai phần: giới thiệu tên hoặc tham chiếu và danh sách các hạn chế. <owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid"/> <rdfs:label xml:lang="en">wine</rdfs:label> <rdfs:label xml:lang="fr">vin</rdfs:label> ... </owl:Class> … <owl:Class rdf:ID="Pasta"> <rdfs:subClassOf rdf:resource="#EdibleThing" /> ... </owl:Class>
Cú pháp rdf:ID="Region" được sử dụng để giới thiệu tên, như một phần của định nghĩa của nó. Thuộc tính rdf:ID giống như thuộc tính ID quen thuộc định nghĩa bởi XML. Các tên được định nghĩa sau này có thể được sử dụng lại. Ví dụ trong cùng một tài liệu, một lớp có liên hệ đến lớp Region thông qua cú pháp rdf:resource=”#Region” hay trong một ontology khác để liên hệ đến lớp Region ta có khai báo
"http://www.w3.org/TR/2004/REC-owl-guide-20040210/wine#Region".
Từ khóa rdf:subClassOf sẽ tạo liên hệ giữa các lớp đặc biệt đến các lớp có tính tổng quát hơn. Nếu X là subclass của Y thì mọi thể hiện của X cũng là một thể hiện của Y. Mối quan hệ do rdf:subClassOf tạo nên có tính bắt cầu, nếu X là subclass của Y và Y là
subclass của Z thì X là subclass của Z. Sau đây là code định nghĩa lớp PotableLiquid là một subclass của lớp ConsumableThing:
<owl:Class rdf:ID="PotableLiquid">
<rdfs:subClassOf rdf:resource="#ConsumableThing" /> ...
</owl:Class>
Cá thể (Instance)
Một cá thể được định nghĩa bằng cách khai báo nó là thành viên của một class.
<owl:Class rdf:ID="WineGrape"> <rdfs:subClassOf rdf:resource="&food;Grape" /> </owl:Class> … <WineGrape rdf:ID="CabernetSauvignonGrape" /> Các thuộc tính (Property)
Từ khóa:ObjectProperty, DatatypeProperty, dfs:subPropertyOf,rdfs:domain, rdfs:range
Thuộc tính là một quan hệ nhị phân. Hai loại của thuộc tính được phân biệt:
+ Các thuộc tính loại dữ liệu (datatype properties), mối quan hệ giữa các thể hiện của các lớp và RDF literals hay với kiểu dữ liệu XML Schema.
+ Các thuộc tính đối tượng (object properties), mối quan hệ giữa các thể hiện của hai lớp.
Khi chúng ta định nghĩa một thuộc tính, có một số cách để hạn chế các quan hệ. Miền (domain) và phạm vi (range) được chỉ định. Thuộc tính có thể định nghĩa là sự chuyên muôn hóa (một thuộc tính con) của các thuộc tính đã tồn tại.
<owl:ObjectProperty rdf:ID="madeFromGrape"> <rdfs:domain rdf:resource="#Wine"/>
<rdfs:range rdf:resource="#WineGrape"/> </owl:ObjectProperty>
Từ nhiều loại thông tin ta, việc sử dụng các thông tin miền và phạm vi thì khác nhau. Trong OWL, phạm vi có thể được sử dụng để kết luận một kiểu. Ví dụ:
<owl:Thing rdf:ID="LindemansBin65Chardonnay"> <madeFromGrape rdf:resource="#ChardonnayGrape" /> </owl:Thing>
Chúng ta có thể kết luận rằng LindemansBin65Chardonnay là một wine vì miền madeFromGrape là Wine.
Các thuộc tính, cũng như các class, có thể được bố trí trong một hệ thống phân cấp:
<owl:Class rdf:ID="WineDescriptor" /> <owl:Class rdf:ID="WineColor"> <rdfs:subClassOf rdf:resource="#WineDescriptor" /> ... </owl:Class> <owl:ObjectProperty rdf:ID="hasWineDescriptor"> <rdfs:domain rdf:resource="#Wine" /> <rdfs:range rdf:resource="#WineDescriptor" /> </owl:ObjectProperty> <owl:ObjectProperty rdf:ID="hasColor"> <rdfs:subPropertyOf rdf:resource="#hasWineDescriptor" /> <rdfs:range rdf:resource="#WineColor" /> ... </owl:ObjectProperty>
Thuộc tính locatedIn, liên quan đến vùng mà nó đặt vào:
<owl:ObjectProperty rdf:ID="locatedIn"> ... <rdfs:domain rdf:resource="http://www.w3.org/2002/07/owl#Thing" /> <rdfs:range rdf:resource="#Region" /> </owl:ObjectProperty> Các giới hạn (Restriction)
Ngoài việc chỉ định những đặc trưng của các thuộc tính, ta có thể hạn chế phạm vi của thuộc tính trong các ngữ cảnh cụ thể trong một số cách.
+ allValuesFrom, someValuesFrom:
• owl:allValuesFrom:giá trị của các thuộc tính của tất cả các thành viên của class được chỉ định bởi mệnh đề owl:allValuesFrom. Ví dụ: Maker của Wine phải là Winery <owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid" /> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasMaker" /> <owl:allValuesFrom rdf:resource="#Winery" /> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class>
• someValuesFrom:Ví dụ: có ít nhất một Maker của Wine phải là Winery
<owl:Class rdf:ID="Wine"> <rdfs:subClassOf rdf:resource="&food;PotableLiquid" /> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasMaker" /> <owl:someValuesFrom rdf:resource="#Winery" /> </owl:Restriction> </rdfs:subClassOf> ... </owl:Class>
+ hasValue [OWL DL]: cho phép xác định các class dựa trên sự tồn tại của các giá trị thuộc tính cụ thể. Vì vậy, một cá thể sẽ là thành viên của một class như vậy bất cứ khi nào tại ít nhất một trong các giá trị thuộc tính là rdf:resource.
<owl:Class rdf:ID="Burgundy"> ... <rdfs:subClassOf> <owl:Restriction> <owl:onProperty rdf:resource="#hasSugar" /> <owl:hasValue rdf:resource="#Dry" /> </owl:Restriction> </rdfs:subClassOf> </owl:Class> e. Các lớp phức tạp
OWL cung cấp thêm các thành phần khởi tạo (constructors), các thành phần khởi tạo này có thể được dùng để tạo các biểu thức được gọi là lớp. OWL cung cấp tập các thành phần khởi tạo cơ bản, cụ thể là union (hợp), intersection (giao) và complement (bổ sung). Tương ứng với các thẻ owl:unionOf, owl:intersectionOf, owl:complementOf. Ngoài ra các lớp có thể là 'enumerated'. Những mở rộng của lớp được nêu rõ bởi nghĩa của constructor oneOf. Và các phần mở rộng của lớp phải được phân ra.
Lưu ý rằng các thể hiện của lớp có thể lồng nhau, mà không yêu cầu phải tạo tên cho các lớp trung gian. Điều này cho phép việc sử dụng tập các operation để xây dựng các lớp phức tạp từ các lớp anonymous hoặc các lớp có giá trị hạn chế (restrictions).
Tập các operators
Operators: intersectionOf, unionOf, complementOf
Nhớ rằng phần mở rộng của các lớp OWL là những tập bao gồm các cá thể là thành viên của lớp. OWL cung cấp phương tiện để thao tác với các thành phần mở rộng sử dụng tập các thành phần khởi tạo cơ bản.
Union
+ Ví dụ sau sử dụng intersectionOf để xây dựng lớp: <owl:Class rdf:ID="WhiteWine"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Wine" /> <owl:Restriction> <owl:onProperty rdf:resource="#hasColor" /> <owl:hasValue rdf:resource="#White" /> </owl:Restriction> </owl:intersectionOf> </owl:Class>
+ Lớp được xây dựng bằng cách sử dụng tập các thiết lập đều giống như định nghĩa hơn bất cứ điều gì chúng ta thấy cho đến nay. Thành viên của lớp được xác định hoàn toàn bởi tập các thiết lập (set operations). Cấu trúc trên nói lên rằng WhiteWine là giao của lớp Wine và tập các thứ có màu trắng. Điều này có nghĩa là nếu một cái gì đó có màu trắng và một wine, thì nó là thể hiện của WhiteWine. Nếu không có định nghĩa như vậy chúng ta có thể biết rằng rượu vang trắng là loại rượu vang màu trắng, nhưng không có điều ngược lại. Đây là một công cụ quan trọng để phân loại các cá thể. (Lưu ý rằng
'rdf:parseType="Collection"' là một yếu tố cần thiết.)
<owl:Class rdf:about="#Burgundy"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Wine" /> <owl:Restriction> <owl:onProperty rdf:resource="#locatedIn" /> <owl:hasValue rdf:resource="#BourgogneRegion" /> </owl:Restriction> </owl:intersectionOf> </owl:Class>
+ Ở đây chúng ta định nghia Burgundy bao gồm những loại rượu vang mà có it nhất một mối quan hệ locateIn với vùng BourgogneRegion. Chúng ta khai báo một lớp mới ThingsFromBourgogneRegion và sử dụng nó như là một lớp trong owl:intersectionOf.
Do chúng ta không có bất kì sử dụng nào khác đối với lớp ThingsFromBourgogneRegion, khai báo trên ngắn hơn, rõ ràng hơn và không đòi hỏi phải tạo một tên dự trù.
<owl:Class rdf:ID="WhiteBurgundy"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Burgundy" /> <owl:Class rdf:about="#WhiteWine" /> </owl:intersectionOf> </owl:Class>
+ Cuối cùng lớp WhiteBurgundy thực sự là giao của rượu vang trắng và Burgundies. Burgundies được trồng ở Pháp, vùng Bourgogne và là rượu vang khô. Theo đó tất cả các cá thể rượu vang mà đáp ứng các tiêu chí này là một phần của phần mở rộng lớp của WhiteBurgundy.
Intersection
+ Ví dụ sau sử dụng unionOf để xây dựng lớp. Sử dụng giống như intersectionOf.
<owl:Class rdf:ID="Fruit"> <owl:unionOf rdf:parseType="Collection"> <owl:Class rdf:about="#SweetFruit" /> <owl:Class rdf:about="#NonSweetFruit" /> </owl:unionOf> </owl:Class>
+ Lớp Fruit bao gồm các phần của lớp SweetFruit và lớp NonSweetFruit. + Lưu ý rằng union hoàn toàn khác với cấu trúc sau:
<owl:Class rdf:ID="Fruit">
<rdfs:subClassOf rdf:resource="#SweetFruit" /> <rdfs:subClassOf rdf:resource="#NonSweetFruit" /> </owl:Class>
+ Điều này nói lên rằng trường hợp của Fruit là tập con của các giao giữa SweetFruit và NonSweetFruit, và chúng ta có tập rỗng.
Complement
+ Thẻ owl:complementOf chọn tất cả các cá thể từ các miền mà không thuộc về một lớp nhất định. Thông thường đề cập đến một tập rất lớn của các cá thể.
<owl:Class rdf:ID="ConsumableThing" /> <owl:Class rdf:ID="NonConsumableThing">
<owl:complementOf rdf:resource="#ConsumableThing" /> </owl:Class>
+ Lớp NonConsumableThing bao gồm tất cả các cá thể không thuộc phần mở rộng của lớp ConsumableThing. Tập này bao gồm tất cả Wines, Regions,... Đó thật sự là sự khác biệt giữa owl:Thing và ConsumableThing.
+ Vì vậy, một mô hình sử dụng điển hình cho complementOf là kết hợp các toán tử khác (set operatiors): <owl:Class rdf:ID="NonFrenchWine"> <owl:intersectionOf rdf:parseType="Collection"> <owl:Class rdf:about="#Wine"/> <owl:Class> <owl:complementOf> <owl:Restriction> <owl:onProperty rdf:resource="#locatedIn" /> <owl:hasValue rdf:resource="#FrenchRegion" /> </owl:Restriction> </owl:complementOf> </owl:Class> </owl:intersectionOf> </owl:Class>
+ Điều này qui định lớp NonFrenchWine là giao của Wine với tập tất cả các thứ không có khu vực là Pháp.
Lớp liệt kê (Enumerated Classes)
OWL cung cấp phương tiện để định rõ một lớp bằng cách liệt kê các thành viên của nó. Ta sử dụng từ khóa oneOf để thực hiện điều này. Lưu ý rằng, sau khi được định nghia là lớp liệt kê, sẽ không có bất kì cá thể nào khác thuộc lớp này.
<owl:Class rdf:ID="WineColor"> <rdfs:subClassOf rdf:resource="#WineDescriptor"/> <owl:oneOf rdf:parseType="Collection"> <owl:Thing rdf:about="#White"/> <owl:Thing rdf:about="#Rose"/> <owl:Thing rdf:about="#Red"/> </owl:oneOf> </owl:Class>
f. Quản lý phiên bản ontology
Ontology cũng giống như phần mềm. Chúng được phát triển liên tục và vì thế sẽ có nhiều thay đổi theo thời gian. Trong thẻ owl:Ontology, ontology có thể liên kết dến một phiên bản đã được định nghĩa trước. Thuộc tính owl:priorVersion cung cấp các liên kết này, và có thể được dùng để theo dõi lịch sử phiên bản của ontology.
<owl:Ontology rdf:about=""> ... <owl:priorVersionrdf:resource="http://www.w3.org/TR/2003/CR-owl-guide- 20030818/wine"/> ... </owl:Ontology>
Các phiên bản ontology có thể không tương thích với nhau. Ví dụ, một phiên bản trước của một ontology có thể bao gồm những phát biểu mâu thuẫn với phiên bản hiện hành. Trong một thẻ owl:Ontology, thẻ owl:backwardCompatibleWith và thẻ
owl:incompatibleWith được sử dụng để chỉ ra sự tương thích hoặc không của chúng với các phiên bản trước. Nếu owl:backwardCompatibleWith không được khai báo thì sự tương thích sẽ không được thừa nhận. Ngoài ra, owl:versionInfo cung cấp sự móc nối phù hợp để sử dụng bởi các phiên bản hệ thống. Trái ngược với ba thẻ trước đó, đối tượng của owl:versionInfo là một từ khóa và các thẻ có thể được dùng để chú thích các lớp, các thuộc tính thêm vào ontology.
OWL Full cung cấp khả năng diễn đạt để thực hiện bất kì kiểu xác nhận nào về một lớp, ví dụ: lớp là một thể hiện của lớp khác hoặc là một thuộc tính và một giá trị của thuộc