Tải bản đầy đủ (.pdf) (57 trang)

Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 4 pot

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (479.12 KB, 57 trang )

Ultimate mashup – Các dịch vụ Web và
Web ngữ nghĩa (semantic Web), Phần
4: Tạo một bản thể luận
Lựa chọn một cách tự động giữa các dịch vụ và các phần của một dịch vụ với
XML dựa trên ngôn ngữ bản thể luận web (OWL)
Nicholas Chase, Tác giả tự do, Site Dynamics Interactive Communications
Tóm tắt: Loạt bài này mô tả cách tạo một ứng dụng Mashup cho phép kiểm soát đối
với các dữ liệu được hiển thị lại cho người sử dụng, để làm điều đó, bạn cần phải xây
dựng một cách có đầu óc. Bây giờ bạn biết hiển thị thông tin trong RDF như thế nào, bạn
có thể bắt đầu tạo một bản thể luận (ontology) bằng cách sử dụng Web Ontology
Language (OWL) dựa trên XML. Việc này cho phép bạn chọn lựa giữa các dịch vụ và
các bộ phận của các dịch vụ một cách tự động.
Trước khi bạn bắt đầu
Bài viết này cho những độc giả muốn hiểu thêm về việc phát triển các bản thể luận, hoặc
sự phân lớp các khái niệm và chúng liên quan đến web ngữ nghĩa như thế nào. Nó cũng
dành cho những độc giả muốn hiểu thêm về các lựa chọn suy diễn sẵn có trên ngôn ngữ
Web Ontology Language (OWL). Bài hướng dẫn này giả định rằng bạn đã biết các khái
niệm về khung mô tả tài nguyên (Resource Description Framework - RDF), bạn có thể
đọc lại phần 3 của loạt bài viết này. (xem Tài nguyên). Bạn cũng nên có hiểu biết chung
về XML nhưng chúng ta sẽ không đi sâu vào những khái niệm này.
Các kỹ năng lập trình không là điều kiện để hoàn thành bài viết này.
Giới thiệu về loạt bài này
Bạn không thể thay đổi hoàn toàn trang web mà không nhảy vào một trang web mà ở đó
cho phép bạn truy cập đến các dữ liệu của nó thông qua một API dựa trên các dịch vụ
web, hoặc sử dụng dữ liệu từ một trang khác thu được thông qua API dựa trên các dịch
vụ web. Khi bạn xem xét ưu điểm của thông tin hiện có trong các ứng dụng của riêng
bạn, điều đó không chắc là có sự ngạc nhiên lớn nào. Điều đó không chỉ là vấn đề thời
gian trước khi ai đó bắt đầu kết hợp dữ liệu từ các hệ thống khác nhau để tạo ra vài thông
tin trọn vẹn. Các ứng dụng này được gọi là các Mashup, các Mashup là ứng dụng gần
đây nhất trên web, từ các trang dựa trên cộng đồng tới các trang tìm kiếm chuyên biệt đều
ánh xạ Mashup.


Các Mashup hầu hết là hữu dụng, chúng có điểm chung là được phát triển với tập các
dịch vụ riêng biệt. Nếu một trong các dịch vụ thay đổi hoặc nếu sở thích của bạn với các
loại dịch vụ thay đổi thì bạn sẽ có nhiều việc phải làm.
Mục đích của loạt bài hướng dẫn này (xem Tài nguyên) là tạo một ứng dụng Mashup để
người dùng có thể thêm hoặc hủy các dịch vụ một cách tùy ý và hệ thống sẽ không biết
được người dùng đã làm gì với chúng. Các bước tiến hành như sau:
Phần 1 đã giới thiệu khái niệm của các Mashup, thể hiện chúng làm việc như thế nào và
xây dựng một phiên bản đơn giản của nó như thế nào. Bạn cũng đã nhận thấy các vấn đề
về hiệu suất quan trọng khi thực hiện gọi hàng tá các trang web tiềm ẩn.
Phần 2 giải quyết vài vấn đề về sử dụng pureXML™ với các khả năng của IBM® DB2®
để xây dựng một nơi lưu giữ XML, nơi này lưu trữ các kết quả của các yêu cầu trước đó
và cũng cho phép bạn lấy thông tin đặc trưng.
Cuối cùng, bạn sẽ cần phải dùng các bản thể luận, hoặc các từ vựng để xác định các
khái niệm và các mối quan hệ giữa chúng. Vì vậy ở phần 3 của tiến trình ta bắt đầu quá
trình đó bằng việc tìm hiểu về RDF và RDFS, hai thành phần quan trọng của ngôn ngữ
bản thể luận web (Web Ontology Language-OWL). Các vấn đề này được thảo luận trong
phần 4. Ở phần 5, bạn đưa các bản thể luận mà bạn đã tạo ra ở phần 4 và sử dụng chúng
để cho phép những người dùng thực hiện thay đổi các nguồn thông tin bên ngoài.
Trong phần 6, thực sự có những điều thú vị. Tại đó, bạn có một ứng dụng đang thực thi
và khung làm việc trong đó, do vậy hệ thống có thể sử dụng suy dẫn ngữ nghĩa để hiểu
các dịch vụ một cách tùy ý. Trong phần này, bạn đưa ra kiểm soát người dùng, cho phép
họ ánh xạ các dịch vụ mới vào bản thể luận, và nhấc hoặc chọn dữ liệu được dùng với
một Mashup tùy ý.


Giới thiệu về bài viết này
Phần trước của loạt bài này đã giải thích một Mashup là gì và bạn có thể sử dụng nó để
kết hợp dữ liệu từ nhiều nguồn như thế nào. Mục đích của loạt bài này là cung cấp một hệ
thống. Hệ thống đó xây dựng trên trí tuệ, giống như khả năng chuyển một dịch vụ này
sang dịch vụ khác mà không biết chính xác thông tin được biểu diễn như thế nào trước

đó. Để làm được việc đó, bạn sẽ cần một phương pháp để xác định các khái niệm như
kho sách (bookstore), DVD, giá, v.v Xây dựng trên phần thảo luận khung mô tả tài
nguyên (Resource Description Framework) ở phần 3. (xem Tài nguyên), ở phần 4 bạn sẽ
tạo một bản thể luận, hoặc phân lớp các khái niệm, sử dụng ngôn ngữ Web Ontology
Language (OWL).
Trong suốt bài học của bài viết này, bạn sẽ học:
Các bản thể luận là gì
Ngôn ngữ Web Ontology Language là gì
Các đặc trưng khác của OWL
Tạo một bản thể luận như thế nào
Tạo các lớp con như thế nào
Các kiểu khác nhau của các thuộc tính OWL
Thêm thông tin vào bản thể luận để cho phép suy diễn như thế nào
OWL-S và ý nghĩa cho phân lớp các dịch vụ Web gì
Trong bài này, bạn sẽ xây dựng một bản thể luận mẫu cho một kho sách. Nó cho phép
bạn xem xét chuyển một kho sách từ một nơi này đến nơi khác như thế nào ở phần 5


Các điều kiện tiên quyết
Theo đoạn mã trong hướng dẫn này, bạn cần phải cài đặt và kiểm tra các phần mềm sau
đây:
IBM® DB2® 9 (thường được gọi là "Viper"): Cơ sở dữ liệu quan hệ này cũng chứa
những khả năng XML quan trọng, bạn sẽ cần chúng cho bài viết này. Bạn có thể tải về
một phiên bản dùng thử của DB2 9: DB2 Enterprise 9 hoặc DB2 Express-C 9, một
phiên bản miễn phí của máy chủ dữ liệu DB2 Express 9.
Apache Tomcat hoặc một máy servlet khác: Bạn sẽ xây dựng các ứng dụng web sử
dụng các servlet, vì vậy bạn cần có một máy servlet chẳng hạn như Apache Tomcat. Nếu
bạn chọn xây dựng ứng dụng trên một môi trường khác, hãy chắc chắn rằng bạn đã nắm
rõ nó trong lòng bàn tay. Tải về apache-tomcat-5.5.17.zip và cài đặt vào một thư mục với
tên thư mục không chứa dấu cách.

Bạn xây dựng bài học này với Java: Apache Tomcat 5.5, yêu cầu Java 1.5 hoặc cao hơn.
Hãy tải về J2SE SDK.
Để làm mọi việc dễ dàng hơn, bạn cần sử dụng một IDE chẳng hạn như Eclipse hoặc
IBM Rational™ Web Developer cho phát triển của mình. Bạn có thể tải về Eclipse ở
Eclipse.org, tải về một phiên bản dùng thử của Rational Web Developer, hoặc sử dụng
môi trường phát triển mà bạn thích. Chúng ta sẽ không làm những gì quá sức với trình
biên dịch và việc phát triển
Tổng quan
Trước loạt bài này, bạn đã tạo các khởi đầu cho ứng dụng của mình. Hãy xem bạn đang ở
đâu và sẽ đi đến đâu ở bài viết này.
Nhìn lại các phần trước
Mục tiêu của các bài viết này là tạo ra một ứng dụng Mashup một ứng dụng sử dụng dữ
liệu từ nhiều nguồn, thông thường sử dụng các dịch vụ web điều đó cho phép người
dùng chọn thông tin đã biểu diễn. Trong phần 1 của loạt bài viết này, bạn đã tạo ứng
dụng Mashup, một Java servlet thực hiện gọi các dịch vụ web đã xác định một cách tùy ý
và hiển thị thông tin của chúng dựa trên một mẫu HTML/XML. Đó là dữ liệu bạn bạn
muốn người dùng kiểm soát.
Nhưng trước khi có điều trên, có vài điều bạn cần làm. Để có một trang điển hình giống
như trong hình 1 có thể đưa hàng tá các yêu cầu HTTP, điều đó có thể không được chấp
nhận trong thế giới thực. Để giải quyết vấn đề, trong phần 2 bạn đã bắt đầu lưu các yêu
cầu như HTML nguyên gốc vào DB2 bằng cách sử dụng các khả năng pureXML mới của
DB2 (xem Tài nguyên). Điều này cho phép bạn kiểm tra cơ sở dữ liệu với các kết quả
của một truy vấn riêng trước khi bạn phải ra khỏi và yêu cầu lại nó. Tất cả điều này là tốt,
nhưng để xây dựng trí tuệ vào hệ thống, bạn cần tìm ra một cách để đặc tả các khái niệm
và các biểu diễn XML của chúng trong một máy có thể đọc được. Bạn sẽ làm được điều
đó ở bài học này bằng các sử dụng ngôn ngữ bản thể luận web (OWL). Nhưng để làm
điều đó, trước tiên bạn có một nền tảng về khung mô tả tài nguyên (Resource Description
Framework - RDF). Ở phần 3, bạn đã học tất cả các đặc điểm RDF, bạn sẽ cần phải bắt
đầu xác định các khái niệm ở đây, trong phần 4.


Hình 1. Trang cuối cùng



Bộ làm tươi RDF
RDF được thiết kế để cung cấp một cách để xác định các khái niệm khác nhau, cho phép
bạn tạo các tài nguyên và các thuộc tính đã liên kết của chúng. Xem ví dụ 1.

Ví dụ 1. Một tài liệu RDF đơn giản

<rdf:RDF
xmlns:rdf="
xmlns:dc="

<rdf:Description rdf:about="

<dc:creator>Nicholas Chase</dc:creator>
<dc:title>Chaos Magnet</dc:title>
<dc:description>
The personal and professional ramblings of technology
author Nicholas Chase
</dc:description>
<dc:date>2006-06-30</dc:date>

</rdf:Description>

</rdf:RDF>

Ở đây bạn thấy một bản mô tả một tài nguyên được xác định bởi URI
(và cũng là định vị ở đó). Bạn đang mô tả các

thuộc tính, chẳng hạn như tác giả (creator) và tiêu đề (title) được xác định ở không gian
tên (namespace) .
Ngôn ngữ lược đồ RDF cung cấp các cách xây dựng RDF để làm cho nó tạo ra các khái
niệm dễ dàng hơn (xem ví dụ 2).

Ví dụ 2. Sử dụng RDFs để tạo các lớp

<rdf:RDF
xmlns:rdf="
xmlns:rdfs="
xml:base="

<rdf:Description rdf:ID="Service">
<rdf:type rdf:resource=
"
</rdf:Description>

<rdf:Description rdf:ID="SOAPService">
<rdf:type rdf:resource=
"
<rdfs:subClassOf rdf:resource="#Service" />
</rdf:Description>

<rdf:Property rdf:ID="endpoint">
<rdfs:domain rdf:resource="#Service"/>
<rdfs:range rdf:resource=
"
</rdf:Property>

<SOAPService rdf:ID="Amazon.com">

<endpoint>

</endpoint>
</SOAPService>

</rdf:RDF>

Trong trường hợp này, bạn tạo một lớp, SOAPService, đó là lớp con của một lớp thứ hai
Service. Bạn cũng tạo một thuộc tính endpoint, và chỉ ra rằng nó chỉ có thể xuất hiện ở
một lớp Service, và nó phải chứa dữ liệu phù hợp với định danh lược đồ XML của một
URI.
Cuối cùng bạn tạo một thể hiện của lớp SOAPService (và lớp Serice) thể hiện đó chứa
thuộc tính endpoint.
Các lớp, các thuộc tính các các cá thể đã tạo thuộc vào miền không gian tên cơ sở,

Bạn sẽ sử dụng các kỹ thuật giống như thế này để xây dựng các lớp, các thuộc tính và các
cá thể cho bản thể luận của mình hơn là xây dựng RDF nguyên gốc. Chúng dựa vào các
lớp, các thuộc tính, v.v từ không gian tên OWL.


Một bản thể luận là gì?
Khái niệm gốc của bản thể luận giống như nghiên cứu về "nó là gì". Chuyển tiếp từ
Aristotle và Plato, tuy nhiên, giờ đây hầu hết bản thể luận được xem như là một phân lớp
các khái niệm. Có nhiều khái niệm về một bản thể luận. Bởi vì thực tế là thế giới thật
phức tạp. May thay, bộ não con người cũng điều chỉnh được sự phức tạp này. Bạn có thể
nhận ra chiếc áo sơ mi của mình, và bạn cũng biết bạn mặc nó trên mình chứ không phải
ở chân. Điều này dường như thật đơn giản. Đó là áo sơ mi, bạn sẽ không làm điều gì khác
với nó được. Nhưng bạn chỉ biết rằng, vì bạn là con người và có lẽ con người thì mặc
những chiếc áo sơ mi trong cuộc sống của mình.
Tất nhiên máy tính thì không biết được điều này. Nó cũng không biết rằng bạn không nên

mặc đồ sọc và kẻ caro hoặc các sọc ngang vì chúng làm bạn trông béo lên. Vì vậy thật là
khó để một máy tính chọn ra một tủ quần áo cho bạn mà không có hỗ trợ. Một bản thể
luận có thể xác định một số khái niệm cho máy tính chẳng hạn như các cái mũ, các đôi
giầy, các phong cách, các kích cỡ và các thông tin có liên quan và làm thế nào để chúng
phù hợp với nhau.
Thật lý tưởng, một máy tính có thể nhận ra các khái niệm này, và gợi ý áo T-shirt đi với
quần jean trái ngược với gợi ý giầy cao gót và áo yếm. (Sau đó các món đồ có thể xấp xỉ
vào một số trường hợp, nhưng bạn phải lập trình vào bản thể luận.)
Các bản thể luận cũng được ứng dụng vào các giải pháp chuyên nghiệp. Một tìm kiếm
với "bản thể luận trong ngành công nghiệp" mang đến các kết quả về máy tự động, điện
lực, kim loại và các ngành công nghiệp sản xuất và đó chỉ là ở trang đầu tiên! Trong
trường hợp này, các bản thể luận được sử dụng thường xuyên không những để giảng dạy
cho các máy tính làm được điều đó mà còn chọn ra thông tin trong trí óc của những nhân
viên nhiều kinh nghiệm để tri thức của họ có thể được chuyển cho những người khác.
Ở trường hợp của bạn, bạn sẽ tạo một bản thể luận để xác định các khái niệm dưới các
dịch vụ web mà ứng dụng của bạn sử dụng để hệ thống có thể biết rằng ý của bạn là gì
nếu bạn nói bạn muốn một giá cả. (Hoặc ít nhất nó cho biết làm thế nào để tìm nó trong
dịch vụ).


OWL là gì?
Bạn đã học đến đây trong bài viết mà không có một từ nào nói về web ngữ nghĩa, nhưng
thực sự là tại sao bạn ở đây, vì vậy hãy nói về nó.
Web ngữ nghĩa có nghĩa là một nơi mà trong đó các quyết định thông minh có thể được
thực hiện. Nó có thể có nghĩa gì đó đơn giản như là một tìm kiếm có từ khóa là một xâu
bạn đặt vào, tìm kiếm đó trả lại những gì bạn muốn thay vì mọi thứ. Hoặc nó có thể là
một thứ gì đó phức tạp như là kết hợp các lược đồ cho nhiều người hoặc tìm ra điều gì xã
hội nhất trí về một chủ đề cụ thể ngày hôm nay chứ không phải là này hôm qua.
Để làm được điều đó, bạn sẽ biểu diễn thông tin theo cách mà các máy tính có thể hiểu
được nó. Thí dụ, một ứng dụng tìm một ngày phù hợp cho gia đình bạn xum họp cần hiểu

thông tin đó biểu diễn cho một lịch biểu mà mọi người có thể tham gia và các khoảng
cách giữa họ, các sân bay phù hợp, lịch trình của hãng hàng không, giá cả, các dị ứng,
thời tiết và v.v (Được rồi, có thể bạn không có quá kỹ càng về kế hoạch xum họp gia
đình của mình nhưng nếu bạn có một máy tính thực hiện việc đó, bạn có thể làm nó
đúng)
Để làm cho tất cả thông tin đó sẵn có trong một cấu trúc máy có thể đọc được, bạn cần
một cách để mã hóa các bản thể luận của tất cả thông tin này vào một cách chuẩn. Phần 3
đã nói về RDF, một chuẩn cho biểu diễn thông tin (xem Tài nguyên). Bây giờ bạn sẽ tận
dụng điều đó để biểu diễn các khái niệm.
Bạn chỉ có thể đưa tất cả các thông tin và biểu diễn nó như RDF, nhưng bạn cần một cách
để máy tính có thể thực hiện các suy luận. Ví dụ, bạn có thể biết Judy đang sống ở
Francesville và Pauline đang sống ở Indianapolis. Bạn cũng biết rằng Francesville ở bang
Indiana và Indianapolis cũng ở bang Indiana. Nhưng chẳng có gì về RDF để cho phép
máy tính thực hiện suy luận rằng Pauline và Judy sống cùng một bang. Ngôn ngữ WOL
là một ứng dụng của RDF cung cấp một cách mã hóa thông tin này để máy tính có thể
thực hiện các suy luận này.
Ồ, còn về chữ viết tắt. Không, nó không khớp với tên. Đây là điều chủ tâm bởi vì OWL
dễ cho việc nói và cung cấp các logo hơn là WOL. Nó có nghĩa là tôn vinh dự án "One
World Language" của William H. Martin từ những năm 1970. (Bạn cũng sẽ tìm các tài
liệu tham khảo tới Winnie the Pooh, nhưng nhìn bề ngoài đó không phải là tài liệu gốc
thực sự.)


Các đặc trưng khác của OWL
OWL là một ngôn ngữ có các mục đích bù nhau nhưng mâu thuẫn. Bản thân nó làm cho
nó có thể miêu tả nhiều khái niệm và các mối quan hệ khác nhau nhưng ở cùng một thời
điểm, làm cho việc dùng các khái niệm đó yêu cầu phần mềm có thể thực hiện việc suy
luận chúng.
Thật không may, một ngôn ngữ cung cấp nhiều lựa chọn, khó hơn viết một phần mềm
tính đến tất cả nó.

OWL giải quyết vấn đề này bằng việc cung cấp ba kiểu hoặc các mức khác nhau của
OWL:
OWL đầy đủ (OWL Full): kiểu có ý nghĩa nhất trong ba kiểu. OWL đầy đủ cơ bản
cho phép bạn làm bất cứ điều gì mà RDF cho phép. Bạn có thể xác định các lớp ngay khi
đang chạy, sử dụng các lớp như là các thuộc tính và các cá thể, xây dựng các bản thể luận
không nhất thiết phải quyết định, nghĩa là một chương trình có thể không có đủ thông tin
để trả lời tất cả các câu hỏi được yêu cầu bởi dữ liệu. Ngay cả các chi tiết kỹ thuật OWL
chỉ ra rằng nó không giống một công cụ đơn sẽ hỗ trợ tất cả OWL đầy đủ.
OWL DL: DL đại diện cho mô tả logic có nhiều ý nghĩa của OWL đầy đủ, nhưng yêu
cầu các bản thể luận được quyết định. Nó cũng đòi hỏi tất cả các lớp được xác định rõ
ràng và có các hạn chế trên một vài đặc tính nâng cao hơn của OWL.
OWL rút gọn (OWL Lite): OWL rút gọn là một phiên bản con của OWL. Nó dành
cho những ai cần tạo một bản thể luận đơn giản hơn và cho những ai không cần đến tất cả
các tính biểu cảm của ngôn ngữ. Ví dụ, OWL rút gọn cho phép bạn chỉ rõ một thuộc tính
phải tồn tại cùng một đối tượng và phải có một giá trị. Nhưng bạn không thể xác định giá
trị đó là gì. Tất nhiên đây là các kiểu dễ nhất để xây dựng các công cụ cho nó.
Các kiểu này lắp vào với nhau nếu bạn phản đối trò chơi chữ. Một bản thể luận OWL rút
gọn hợp lệ cũng là một bản thể luận OWL DL và OWL đầy đủ hợp lệ. và một bản thể
luận OWL DL hợp lệ cũng là một bản thể luận OWL đầy đủ.


Bạn định thực hiện điều gì
Trong bài viết này, bạn sẽ xây dựng một bản thể luận khá đơn giản cho một trong những
trường hợp sử dụng của ứng dụng Mashup. Cụ thể, bạn sẽ xây dựng một bản thể luận xác
định vài khái niệm liên quan khi giao dịch với kho sách trực tuyến.
Điều đó có thể không giống nhiều trong lược đồ lớn các sự kiện, nhưng trong khi làm
điều như vậy bạn sẽ nhận ra rằng hầu hết các tính năng được OWL cung cấp. Một bản thể
luận đầy đủ mọi kiểu dịch vụ bạn phải gặp yêu cầu không gian nhiều hơn là bài viết này
cho phép. Cuối bài viết này, bạn có thể đưa các tri thức đã đạt được và xây dựng một bản
thể luận độc đáo bất kỳ.

Cấu trúc của bản thể luận
Bước thứ nhất trong việc xây dựng một bản thể luận là bạn hiểu ban đang xây dựng cái
gì. RDF (và bằng OWL mở rộng) là một ngôn ngữ rất có ý nghĩa, nhưng phải trong cấu
trúc văn bản của nó. Nó không thực hiện những điều dễ hình dung một cách đặc biệt. Vì
vậy hãy bắt đầu bằng việc xem xét cấu trúc như bạn thấy nó.
Cấu trúc cơ bản
Trong bài này, chúng ta không có đủ không gian để ghi chép việc tạo cùng một bản thể
luận đầy đủ cho các kho sách trực tuyến, ít nhiều cho mọi kiểu dịch vụ bạn có thể gặp.
Nhưng bạn có thể tạo một mẫu đại diện. Cụ thể, bạn muốn xác định các khái niệm sau
đây trong hình 2.

Hình 2. Cấu trúc cơ bản

Bắt đầu ở góc trên trái, bạn có một Service, các lớp con như là một kho Store, các lớp
con như là một kho sách Bookstore. Các kho Store chứa các món đồ StockItems, mỗi
món đồ có một giá itemPrice và tương ứng có một stockedProduct riêng. Trong trường
hợp này, sản phẩm đó có thể là Book hoặc một Movie. Nếu nó là sách Book, thì nó phải
có ít nhất một tác giả Author. Author đó là một lớp con của lớp Person, một lớp cũng
chứa đạo diễn phim (Directors).


Thúc đẩy các khả năng OWL
Hình 2 chỉ ra bạn đang xử lý các lớp (class) nào. Nhưng nếu đã có tất cả những gì bạn
muốn chỉ định, bạn sẽ không cần OWL, Thay vì bạn có thể chỉ ra tất cả với RDF và lược
đồ RDF.
Không, bạn cần OWL với lí do nó cung cấp các khả năng. Ví dụ, bạn có thể xây dựng
một cách logic phát biểu rõ rằng một Book có thể được định danh duy nhất bằng một số
ISBN của nó. Mặt khác, nếu hai cuốn sách riêng biệt có cùng một số ISBN thì chúng là
sách giống nhau. Bạn cũng có thể xây dựng một cách linh động với các cấu trúc khác do
các dịch vụ khác nhau cung cấp. Ví dụ, bạn có thể chỉ rõ rằng các lớp Writer và Author

là cùng một lớp.
Sau đó bạn sẽ thấy các khả năng khác.


Bản thể luận cơ bản
Bạn đã biết nó là gì mà bạn đang cố gắng hoàn thành. Vì vậy bạn có thể bắt đầu xây dựng
bản thể luận. Trước tiên hãy tạo ra các lớp và một vài cá thể để bạn có thể xem những thứ
đó phù hợp với nhau như thế nào.


Tạo bản thể luận
Bước thứ nhất là tạo một tài liệu bản thể luận thực sự. Trong nhiều trường hợp, nó cũng
giống như các tài liệu RDF mà bạn đã có (xem ví dụ 3).

Ví dụ 3. Tạo một bản thể luận

<?xml version="1.0"?>
<!DOCTYPE rdf:RDF [
<!ENTITY store " >
<!ENTITY owl " >
<!ENTITY xsd " >
]>
<rdf:RDF
xmlns = "
xmlns:store = "
xml:base = "
xmlns:owl = "
xmlns:rdf = "
xmlns:rdfs= "
>


<owl:Ontology rdf:about="">
<rdfs:comment>
An example OWL ontology for Online Bookstores (The Ultimate
Mashup: Part #4)
</rdfs:comment>
<rdfs:label>BookStore Ontology</rdfs:label>
</owl:Ontology>

</rdf:RDF>

Ở trên đầu tài liệu, bạn xác định các thực thể XML cho mỗi xâu miền không gian tên
XML của mình. Các thực thể này cho phép bạn dễ dàng thêm vào miền không gian tên
khi cần thiết. Ví dụ, bạn có thể sử dụng thực thể &xsd; để viết tắt các miền không gian
tên nếu bạn đã xác định lược đồ XML định nghĩa các kiểu dữ liệu.
Tiếp theo là bản thân thành phần RDF, với tất cả các điều kiện về miền không gian tên
được xác định. Các thành phần này chứa phần tử owl:Ontology.
Trước khi đi tiếp, hãy xem điều này có nghĩa là gì. Nó có nghĩa là ở nơi nào đó trong
owl: namespace ( là một định nghĩa về một lớp đã
gọi Ontology. Định nghĩa này cho phép bạn tạo một đối tượng Ontology riêng. Bởi vì nó
là yếu tố chính, nó không phải tham chiếu đến bất kỳ các tài nguyên khác.
Một khi bạn tạo nó, bạn có thể sử dụng các thuộc tính chú thích (comment) và nhãn
(label) của các RDF để thêm thông tin vào bản thân Ontology.


Các lớp OWL cơ bản nhất
Ở phần thảo luận về RDF, bạn đã học cách bạn có thể xác định một tài nguyên khi có
kiểu rdf:Class, hoặc một loại lớp cụ thể, sau đó bạn có thể sử dụng chúng như một kiểu.
Bạn đã học vậy bạn có thể tạo các subclass của các kiểu cá thể này.
Trong OWL, một cách tự động mọi lớp là một lớp con của owl:Thing. (Bởi vì nếu nó

không là một "thing", bạn sẽ không cần một lớp cho nó.) Điều đó có nghĩa là bạn không
phải xác định mối quan hệ một cách rõ ràng bởi đó là giả thiết.
Cơ bản về owl:Thing là một lớp cơ sở mà mọi thứ khác được lấy từ đó và bạn sẽ được
sử dụng tốt.
OWL cũng xác định một lớp thứ hai, owl:Nothing. Lớp này biểu diễn một lớp rỗng,
không có thành phần nào cả.


Tạo các lớp
Bây giờ bạn biết nền tảng cơ bản như thế nào, bạn có thể bắt đầu tạo các lớp OWL cho
riêng mình (xem ví dụ 4).

Ví dụ 4. Tạo các class


<owl:Ontology rdf:about="">
<rdfs:comment>
An example OWL ontology for Online Bookstores (The Ultimate
Mashup: Part #4)
</rdfs:comment>
<rdfs:label>BookStore Ontology</rdfs:label>
</owl:Ontology>

<owl:Class rdf:ID="Service">
<rdfs:label>Web Service</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Store">
<rdfs:label>Online Store</rdfs:label>
</owl:Class>


<owl:Class rdf:ID="Bookstore">
<rdfs:label>Bookstore</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Product">
<rdfs:label>Product sold at online store</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Book">
<rdfs:label>Book</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Movie">
<rdfs:label>Movie</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Person">
<rdfs:label>Person</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Author">
<rdfs:label>Author</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Director">
<rdfs:label>Director</rdfs:label>
</owl:Class>

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

<rdfs:label>Book Genre</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="StockItem">
<rdfs:label>Stocked Item</rdfs:label>
</owl:Class>

</rdf:RDF>

Bạn đã làm gì ở đây, bạn đã tạo một thể hiện của owl:Class với mọi thực thể mà bạn
muốn liên kết với bản thể luận của mình. Bằng việc gán cho mỗi chúng một rdf:ID, bạn
có thể dễ dàng tham chiếu lại chúng từ các định danh sau.


Các lớp con OWL
Bây giờ bạn đã có các lớp, bạn có thể bắt đầu tạo các quan hệ giữa chúng (xem ví dụ 5).

Ví dụ 5. Tạo các lớp con subclass


<owl:Class rdf:ID="Service">
<rdfs:label>Web Service</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Store">
<rdfs:subClassOf rdf:resource="#Service"/>
<rdfs:label>Online Store</rdfs:label>
</owl:Class>

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

<rdfs:subClassOf rdf:resource="#Store"/>
<rdfs:label>Bookstore</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Product">
<rdfs:label>Product sold at online store</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Book">
<rdfs:subClassOf rdf:resource="#Product"/>
<rdfs:label>Book</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Movie">
<rdfs:subClassOf rdf:resource="#Product"/>
<rdfs:label>Movie</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Person">
<rdfs:label>Person</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Author">
<rdfs:subClassOf rdf:resource="#Person"/>
<rdfs:label>Author</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Director">
<rdfs:subClassOf rdf:resource="#Person"/>
<rdfs:label>Director</rdfs:label>

</owl:Class>

<owl:Class rdf:ID="BookGenre">
</owl:Class>

<owl:Class rdf:ID="StockItem">
</owl:Class>

</rdf:RDF>

Không có gì huyền bí ở đây; bạn chỉ sử dụng cùng một thuộc tính rdfs:subClassOf bạn
đã học ở phần 4 để tạo các quan hệ giữa các kiểu mà bạn đang tạo ra.


DatatypeProperty và ObjectProperty
Một khi bạn tạo các lớp, bạn cần phải thêm các thuộc tính. Trong OWL, trái với RDF và
RDFs bạn có hai kiểu thuộc tính: DatatypeProperty và ObjectProperty.
DatatypeProperty xác định một thuộc tính có một kiểu đơn giản như là một giá trị (xem
ví dụ 6).

Ví dụ 6. DatatypeProperty


<owl:Class rdf:ID="Service">
<rdfs:label>Web Service</rdfs:label>
</owl:Class>
<owl:DatatypeProperty rdf:ID="endpoint">
<rdfs:domain rdf:resource="#Service"/>
<rdfs:range rdf:resource="&xsd;anyURI"/>
</owl:DatatypeProperty>




<owl:Class rdf:ID="Book">
<rdfs:subClassOf rdf:resource="#Product"/>
<rdfs:label>Book</rdfs:label>
</owl:Class>
<owl:DatatypeProperty rdf:ID="title">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:range rdf:resource="&xsd;string"/>
</owl:DatatypeProperty>

<owl:Class rdf:ID="Movie">
<rdfs:subClassOf rdf:resource="#Product"/>
<rdfs:label>Movie</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="Person">
<rdfs:label>Person</rdfs:label>
</owl:Class>
<owl:DatatypeProperty rdf:ID="name">
<rdfs:domain rdf:resource="#Person"/>
<rdfs:range rdf:resource="&xsd;string"/>
</owl:DatatypeProperty>



<owl:Class rdf:ID="StockItem">
</owl:Class>
<owl:DatatypeProperty rdf:ID="itemPrice">

<rdfs:domain rdf:resource="#StockItem"/>
<rdfs:range rdf:resource="&xsd;double"/>
</owl:DatatypeProperty>

</rdf:RDF>

Ở đây bạn tạo bốn thuộc tính đơn giản, mỗi thuộc tính được gán vào một trong các lớp
của bạn và xác định cụ thể với một kiểu lược đồ XML đã xác định.
Mặt khác ObjectProperty có các cá thể các đối tượng của một lớp riêng như là giá trị
của nó (xem ví dụ 7).

Ví dụ 7. ObjectProperty


<owl:Class rdf:ID="Author">
<rdfs:subClassOf rdf:resource="#Person"/>
<rdfs:label>Author</rdfs:label>
</owl:Class>
<owl:ObjectProperty rdf:ID="writtenBy">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:range rdf:resource="#Author"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="writerOf">
<rdfs:domain rdf:resource="#Author"/>
<rdfs:range rdf:resource="#Book"/>
</owl:ObjectProperty>

<owl:ObjectProperty rdf:ID="genreOf">
<rdfs:domain rdf:resource="#Book"/>
<rdfs:range rdf:resource="#BookGenre"/>

</owl:ObjectProperty>



<owl:Class rdf:ID="StockItem">
</owl:Class>
<owl:DatatypeProperty rdf:ID="itemPrice">
<rdfs:domain rdf:resource="#StockItem"/>
<rdfs:range rdf:resource="&xsd;double"/>
</owl:DatatypeProperty>

<owl:ObjectProperty rdf:ID="stockedProduct">
<rdfs:domain rdf:resource="#StockItem"/>
<rdfs:range rdf:resource="#Product"/>
</owl:ObjectProperty>
<owl:ObjectProperty rdf:ID="stocks">
<rdfs:domain rdf:resource="#Store"/>
<rdfs:range rdf:resource="#StockItem"/>
</owl:ObjectProperty>

</rdf:RDF>

Chú ý rằng các thuộc tính này tham chiếu trở lại các lớp xác định với miền giá trị của
chúng (các lớp ở chỗ mà chúng có thể xuất hiện) và phạm vi của chúng (các kiểu giá trị
mà chúng có thể giữ).

×