1. Trang chủ
  2. » Công Nghệ Thông Tin

Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa, Phần 5 potx

92 352 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 92
Dung lượng 475,64 KB

Nội dung

Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa, Phần 5: Thay đổi các dịch vụ Web Tóm tắt: Loạt bài viết này trình bày chi tiết việc tạo ra một ứng dụng Mashup cho phép kiểm soát cá

Trang 1

Ultimate mashup – Các dịch vụ Web

và Web ngữ nghĩa, Phần 5: Thay đổi

các dịch vụ Web Tóm tắt: Loạt bài viết này trình bày chi tiết việc tạo ra một ứng dụng Mashup

cho phép kiểm soát các dữ liệu được hiển thị với người sử dụng Bây giờ bạn biết làm thế nào để tạo một bản thể luận (ontology) để xác định khái niệm đại diện của một dịch vụ, bạn có thể cho phép người dùng lựa chọn dịch vụ mà họ muốn sử

dụng Trước khi bắt đầu

Đây là bài viết cho các nhà phát triển, những người muốn tìm hiểu làm thế nào để

sử dụng một bản thể luận dùng API - cụ thể, trong trường hợp này, là Jena API - cũng như những người chỉ muốn xem làm thế nào các bản thể luận và các xử lý ngữ nghĩa khái niệm khác có thể hữu dụng trong một thế giới ứng dụng thực sự

Nó sử dụng các bản thể luận của bạn trong phần 3 và 4 và tích hợp vào Mashup bạn xây dựng trong phần 1, nhằm cung cấp cho người dùng một sự lựa chọn về các dịch vụ sử dụng

Bài viết này giả định rằng bạn đã quen với khái niệm về XML, khung mô tả tài nguyên (Resource Description Framework - RDF), các bản thể luận, và ngôn ngữ bản thể luận Web (Web Ontology Language - OWL) Nó cũng sử dụng các ngôn ngữ lập trình Java, nhưng nếu bạn chỉ tìm kiếm một khái niệm hoặc chỉ tìm hiểu

nó làm việc như thế nào, điều đó là không quan trọng Nếu bạn cần một bất cứ điều gì trong các khái niệm này (trừ Java, tất nhiên) hãy xem các phần trước Bạn

có thể tìm thấy các liên kết với chúng (và các nguồn cho Java) trong Tài nguyên

Về loạt bài viết này

Ngày nay, có vẻ như bạn không thể lướt trên Web mà không sử dụng một trang Web mà trang đó hoặc có thể cung cấp quyền truy cập vào dữ liệu của nó thông qua một dịch vụ dựa trên API hoặc sử dụng dữ liệu từ một trang web khác lấy được thông qua một dịch vụ dựa trên API Khi bạn xem xét các lợi thế của việc sử dụng các thông tin hiện có trong các ứng dụng của riêng bạn, có lẽ không đáng ngạc nhiên lắm Nó cũng chỉ là vấn đề ở thời gian trước khi một người bắt đầu kết

Trang 2

hợp dữ liệu từ các hệ thống riêng biệt để tạo ra những gì hoàn toàn mới Những ứng dụng, được gọi là mashup, là khu vực mới nhất trên Web, từ các trang web dựa trên cộng đồng đến các trang web chuyên tìm kiếm, thậm chí các ánh xạ

mashup hiện nay

Chúng hầu hết đều hữu dụng, nhưng có một điểm chung là được phát triển cho các thiết lập dịch vụ cụ thể Nếu ưu tiên cho một loại dịch vụ cụ thể thay đổi, bạn sẽ có rất nhiều việc phải làm

Mục đích của các bài viết này là tạo ra các ứng dụng mashup đủ thông minh để người dùng có thể bổ sung hoặc loại bỏ các tiện ích nếu muốn, và hệ thống sẽ biết phải làm gì với chúng Được tiến hành như sau:

Phần 1 giới thiệu các khái niệm về các mashup, trình bày cách hoạt động của chúng và xây dụng các phiên bản đơn giản

Phần 2 giải quyết một phần của vấn đề bằng cách sử dụng các khả năng

pureXML™ mới của IBM® DB2® để xây dựng một vùng nhớ đệm XML, cái cho phép bạn lưu các yêu cầu trước đó đồng thời cho phép truy hồi các thông tin cụ thể

Sau cùng, bạn cần sử dụng các bản thể luận hoặc các từ định nghĩa cho các khái

niệm hoặc thuộc tính liên quan, nên ở Phần 3 quy trình bắt đầu bằng việc tìm hiểu

về RDF và RDFS, hai thành phần chính của OWL, sẽ được đề cập ở phần 4 Ở phần 5, bạn sẽ dùng đến các bản thể luận đã tạo ở phần 4 và dùng chúng để cho phép người dùng thay đổi nguồn thông tin

Phần 6, thực sự thú vị Ở đây, bạn cung cấp cho người sử dụng quyền kiểm soát,

và cho phép họ sắp xếp các dịch vụ mới vào bản thể luận và lựa chọn các dữ liệu được sử dụng để tùy chỉnh một Mashup

Về bài viết này

Các phần trước đã giải thích thế nào là mashup, và bạn làm thế nào để sử dụng chúng cho việc tổ hợp dữ liệu từ nhiều nguồn Mục đích là cung cấp một hệ thống thông minh, chẳng hạn như khả năng chuyển đổi từ dịch vụ này ra dịch vụ khác

mà không cần phải biết chính xác thông tin được thể hiện như thế nào trước đó Để làm điều đó, bạn sẽ cần phải định nghĩa các khái niệm như "hiệu sách", "DVD",

"giá cả", v.v

Trang 3

Trong các phần trước, bạn đã xây dựng một ứng dụng mashup cho phép người dùng đưa ra yêu cầu về thông tin trên các chủ đề cụ thể hoặc từ khóa Tại bài viết này, bạn sẽ biết cách cho phép người dùng lựa chọn dịch vụ để sử dụng cho dữ liệu

Trong bài viết này, bạn sẽ được học:

 Tải về và thao tác trên một bản thể luận

 Hiển thị thông tin bản thể luận ở dạng HTML

Trong bài viết này, bạn sẽ mã hóa thông tin về các dịch vụ cá nhân trong một tập tin Owl Sau đó, bạn sẽ sử dụng Jena API để trích xuất thông tin đó và sử dụng nó

để thực hiện một yêu cầu REST Cuối cùng, bạn chuyển đổi phản hồi REST vào hình thức chung, và hiển thị nó trên trang HTML như trước

Các điều kiện tiên quyết

Bạn sẽ phải thực hiện việc cài đặt phần mềm dưới đây và kiểm tra nó nhằm theo kịp với mã trong bài bài viết này

 IBM® DB2® 9 (Trước đây thường được biết là "Viper"): Cơ sở dữ liệu liên quan này cũng có các nhiều khả năng quan trọng của XML, thứ bạn sẽ cần cho bài học này Bạn có thể tải về một phiên bản dùng thử của DB2: DB2 Enterprise 9 hoặc DB2 Express-C 9, một bản miễn phí dữ liệu máy chủ DB2 Express 9

 Apache Tomcat hoặc các máy chủ servlet: bài viết này giả định rằng bạn sẽ xây dựng các ứng dụng web bằng cách sử dụng các servlet, do đó, bạn sẽ cần một động cơ như là servlet Apache Tomcat Nếu bạn chọn để xây dựng ứng dụng này bằng cách sử dụng môi trường khác, chỉ cần đảm bảo rằng

Trang 4

bạn phải có sẵn phần mềm thích hợp Tải về apache-tomcat-5.5.17.zip và cài đặt vào một thư mục mà không có dấu cách trong tên của thư mục

 Java: Apache Tomcat 5.5, cùng với nó thì bài viết này được xây dựng, nó yêu cầu bản Java 1.5 hoặc cao hơn Tải từ J2SE SDK

 The Jena API: Jena API là Java API được thiết kế để làm việc với dữ liệu RDF và OWL Có thể tải về từ http://jena.sourceforge.net/

 Để thuận tiện hơn, có thể dùng một IDE như Eclipse hoặc IBM Rational™ Web Developer đối với phát triển của bạn Có thể tải Eclipse từ Eclipse.org tải bản thử nghiệm Rational Web Developer, hoặc dùng môi trường phát triển bạn yêu thích Bạn không nên đi quá những gì mà lĩnh vực về biên soạn và triển khai yêu cầu

Tổng quan

Trước khi bạn bắt tay vào mã mới, bạn cần phải nhớ lại những gì loạt bài viết này

đã đề cập đến

Bài viết trước: Xác định các dịch vụ

Tại thời điểm này, bạn có một ít mã chứa một ứng dụng làm việc, và có rất nhiều khái niệm Trong Phần 1, bạn đã tạo một ứng dụng bao gồm một Mashup cơ bản Người dùng nhập vào một từ khóa và một mẫu để gửi vào một servlet Servlet cấp

từ khóa đó cho bất kỳ các dịch vụ đã được định nghĩa trong một lớp Service bất

kỳ Đối với mỗi dịch vụ nói trên, bạn cần xử lý kết quả dựa vào các thông tin được cung cấp trong khai báo tự xác định của dịch vụ Ví dụ lớp Service xác định các dịch vụ tin tức Yahoo trông sẽ như sau (xem ví dụ 1)

Ví dụ 1 Xác định một dịch vụ

Service thisService = new Service();

Service subService = new Service();

Trang 5

subService.name = "Technorati";

subService.baseURL =

"http://api.technorati.com/cosmos?key=mydeveloperskey&url="; subService.template = "<span><value/></span>";

Trang 6

cá thể bản ghi dữ liệu trong các kết quả Trong ví dụ ở đây, /ResultSet/Result biểu diễn cho mỗi một phần mới Cuối cùng, dịch vụ bao gồm các thông tin cho biết làm thế nào để hiển thị các kết quả dữ liệu Các mẫu đại diện HTML cho đầu ra, với các yếu tố giá trị và các thuộc tính phục vụ như phần giữ chỗ (placeholder) để

sẽ được thay thế bởi các dữ liệu được tìm thấy trong các biểu thức XPath trong các mảng elementValues và các giá trị thuộc tính attributeValues

Trong trường hợp này, bạn cũng có thể thấy phần gắn thêm của một dịch vụ thứ hai và được thể hiện bởi thành tố dịch vụ con subservice

Các bài viết trước: các tính năng tiên tiến

Trong Phần 2, bạn phát triển phần ứng dụng hơn là tạo ra một yêu cầu Web cho tất các các yêu cầu dịch vụ - đây là một quá trình có thể kéo dài đến vài phút nếu phần mashup tạo ra nhiều yêu cầu - bạn bắt đầu lưu giữ các kết quả yêu cầu trong

cơ sở dữ liệu XML có sử dụng khả năng pureXML mới của DB2 Điều này cho phép bạn kiểm tra một cơ sở dữ liệu cho một yêu cầu cụ thể trước khi chạy

Mashup và tạo một cái mới

Nhưng mục tiêu tổng quát là tạo ra một dịch vụ thông minh – với nó người sử dụng có thể yêu cầu một kiểu dữ liệu cụ thể - như sách, giá - và mashup sẽ hiểu làm thế nào để tìm được cho dù vấn đề không phải là bạn sử dụng dịch vụ nào

Trang 7

Để làm được điều này, ở Phần 3 và 4, bạn sẽ học cách tạo bản thể luận hoặc phân

loại các khái niệm Bằng cách này, bạn có thể định nghĩa các khái niệm như cuốn sách, giá cả,… để cung cấp một hình thức chung và sắp xếp từ đó bạn có thể xử lý từng kiểu dịch vụ chứ không phải chỉ là từng dịch vụ

Ở phần 4, bạn đã tạo ra một bản thể luận của hiệu sách có rất nhiều các khái niệm, định nghĩa mà bạn có thể tìm thấy trong các hiệu sách điện tử, như sách, DVD, cho rất nhiều khái niệm có thể được tìm kiếm từ các lưu trữ điện tử như sách, DVD, tác giả ở phần hướng dẫn bạn có thể bắt đầu thêm vào các dữ liệu thực tế cho bản thể luận này

<!ENTITY store "http://example.com/stores#" >

<!ENTITY owl "http://www.w3.org/2002/07/owl#" >

<!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >

]>

<rdf:RDF

xmlns = "http://example.com/store#"

Trang 14

</owl:Class>

<owl:SymmetricProperty rdf:ID="bundledWith"> <rdfs:domain rdf:resource="#Product"/>

<rdfs:range rdf:resource="#Product"/>

</owl:SymmetricProperty>

<owl:TransitiveProperty rdf:ID="genreOf"> <rdfs:domain rdf:resource="#Book"/>

</owl:equivalentClass>

</owl:Class>

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

Trang 15

<rdfs:range rdf:resource="&xsd;string"/>

</owl:DatatypeProperty>

<owl:DatatypeProperty rdf:ID="itemDetailURL"> <rdfs:domain rdf:resource="#StockItem"/>

<rdfs:range rdf:resource="&xsd;string"/>

</owl:DatatypeProperty>

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

Trang 16

</owl:ObjectProperty>

</rdf:RDF>

Bạn sẽ không sử dụng tất cả các định nghĩa này trong phần hướng dẫn, nhưng điều quan trọng cần nhận biết là cấu trúc, một kho Store chứa StockItems có thể ví dụ

là Book, Movie và vân vân Theo cách này bạn có thể xác định một Book một cách

khái quát, các thiết lập thuộc tính về tác giả, nhà xuất bản,…nhưng vẫn còn sự khác biệt về giá cả và thông tin giao hàng phụ thuộc vào các kho hàng mà từ đó khách hàng mua sách

Nhớ là chúng chỉ là các định nghĩa Dữ liệu thực tế bao gồm các cá thể hoặc

những ví dụ cho mỗi lớp Ví dụ (xem ví dụ 3)

Trang 17

<itemDescription>Harry Potter and the Sorcerers

Stone</itemDescription>

<itemDetailURL>http://www.amazonurlforbook</itemDetailURL> <stockedProduct

Trang 18

</Book>

Bạn có thể đặt những cá thể này trong tệp riêng của chúng hoặc trong cùng một tệp của các định nghĩa; điều quan trọng là các không gian tên phải phù hợp với nhau

Trong bài viết này, bạn sẽ tạo các cá thể từ dữ liệu chiết xuất được từ các dịch vụ Web cụ thể

Cài đặt

Bài viết này giả định rằng bạn đã có một hệ thống mashup được cài đặt và đang làm việc, đồng thời có hoặc không có bộ nhớ cơ sở dữ liệu DB2 Để biết thêm thông tin về việc thiết lập Tomcat và các thành phần khác, xem Phần 1 và Phần 2 của loạt bài viết (xem Tài nguyên)

Bạn cũng có thể cần đến Jena API để hoàn thành các đoạn mã trong bài viết này

Có thể tải Jena từ http://jena.sourceforge.net/ Để cài đặt, đơn giản chỉ cần thêm các tệp Jena *.jar vào đường dẫn lớp (class path)

bài viết này sử dụng các dịch vụ giao diện của Amazon Web làm ví dụ Để thực hiện việc mã hóa, bạn cần có các biểu tượng phát triển (developers token), và thay thế chuỗi các số 0 (000000000000000) trong mã bằng công cụ đó Để có biểu tượng phát triển, xem http://www.amazon.com/aws

ạo cho người sử dụng sự lựa chọn: giao diện

Mục đích của bài viết này là cung cấp một phương thức cho người dùng thay thế một dịch vụ bằng một dịch vụ khác dựa trên thông tin trong bản thể luận Hãy bắt đầu bằng việc cho người dùng một lựa chọn

Tạo ra các cá thể

Trang 19

Bước đầu tiên là tạo một cá thể từ đó khách hàng sẽ lựa chọn Bạn sẽ phải tạo ra các trường hợp cá biệt của các lớp Bookstore Ví dụ, tệp bản thể luận hiện nay nhìn giống như ví dụ 4

Trang 20

Nhưng tất nhiên chúng hiện chỉ đơn thuần là Bookstores Sau đó, bạn phải thêm thuộc tính cho chúng

Ghi nhớ là bạn có vài cá thể ở đây và có nhiều loại khác nhau Bạn phải sử dụng API để kiểm tra các đối tượng này

Tạo ra mô hình

Để trông gọn gàng hơn một chút, bạn sẽ phải điều chỉnh tất cả các chức năng bản thể luận ở trong một lớp mới, MashupOntologyReader Bắt đầu bằng việc tạo ra lớp cơ bản (xem ví dụ 5):

public class MashupOntologyReader {

private OntModel bookStoreOntModel;

Trang 21

bookStoreOntModel =

ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM, null);

}

public static void main(String[] args) {

MashupOntologyReader reader = new MashupOntologyReader();

}

}

Ở đây bạn sử dụng ModelFactory để tạo một mô hình bản thể luận Lưu ý là Jena API đồng thời cũng là một RDF API, cho nên nó cho phép bạn tạo ra rất nhiều kiểu mô hình khác nhau Bình thường, trong trường hợp này, bạn cần một mô hình bản thể luận, và thông qua các dữ liệu cố định được cung cấp, bạn phải xác định rõ

là bạn muốn nó nằm bên trong bộ nhớ

Tải bản thể luận

Jena API cho phép bạn tạo các bản thể luận từ đầu và bao gồm các phương thức cần thiết để thực hiện, trong trường hợp này, bạn đã có sẵn một tệp bản thể luận để đọc, cho nên bước tiếp theo là tải nó từ mô hình bạn vừa tạo ra (xem ví dụ 6):

Ví dụ 6 Tải bản thể luận

Trang 22

public class MashupOntologyReader {

private OntModel bookStoreOntModel;

// you have a local copy of the bookstore ontology

Trang 23

MashupOntologyReader reader = new MashupOntologyReader();

}

}

Đầu tiên, hãy dành chỗ ghi tên cho đối tượng bạn vừa tải Với bản thể luận bạn đã xây dựng ở phần 4, không gian tên là http://www.example.com/store Từ đó bạn sử dụng của mô hình DocumentManager để thêm vào các đầu mục Lưu ý rằng bạn chỉ rõ không gian tên và tập tin mà từ đó cho phép thâm nhập, nhưng các mô hình không thực sự đọc các định nghĩa trừ khi bạn gọi hàm read()

Trang 24

public void getIndividuals(){

public static void main(String[] args) {

MashupOntologyReader reader = new MashupOntologyReader();

reader.getIndividuals();

}

}

Trang 25

Để bắt đầu, cần tạo ra một phương thức getIndividuals() mà nó sẽ tạo ra một bộ đếm và sử dụng mô hình của phương thức listIndividuals() của bản thể luận để lấy

bộ lặp Iterator chuẩn của JAVA qua nó bạn có thể tiếp cận các cá thể tìm được Bạn chưa có bất kỳ một dữ liệu nào về các cá thể do đó đơn giản cung cấp một bộ đếm để xem điều gì xảy ra Bạn sẽ có một danh sách từ một đến mười một

Bây giờ mọi việc đều thú vị, rõ ràng bạn có nhiều hơn là các cá thể Bookstore Hãy tìm hiểu xem bạn thật sự thu được cái gì

Có các thông tin về cá thể

Khi có thông tin tham khảo của cá thể, việc thu thập các thông tin của nó là vấn đề đơn giản thông qua sử dụng các phương thức thu thập mà API cung cấp Bất kỳ một cá thể Individual nào, cho dù là loại đối tượng nào, đều có ba loại thông tin giống nhau: URI, sử dụng duy nhất để xác định tài nguyên, kiểu, và tên, cái mà tương ứng với thuộc tính rdf:ID trong tệp RDF (xem ví dụ 8):

Ví dụ 8 Lấy thông tin cá thể

Trang 26

counter++;

Individual thisIndividual = (Individual) i.next();

String indType = thisIndividual.getRDFType().getLocalName();

String indName = thisIndividual.getLocalName();

String indResourceURI = thisIndividual.getURI();

Bạn cần chú ý đầu ra trông giống với Ví dụ 9:

Ví dụ 9 Đầu ra thông tin cá thể

0: Book Harry_Potter_and_the_Sorcerers_Stone

http://example.com/store#Harry_Potter_and_the_Sorcerers_Stone

1: Genre Memoir http://example.com/store#Memoir

2: Genre Philosophy http://example.com/store#Philosophy

Trang 27

3: Genre History http://example.com/store#History

4: Genre Nonfiction http://example.com/store#Nonfiction

5: Genre Fiction http://example.com/store#Fiction

6: Author Fyodor_Dostoevsky http://example.com/store#Fyodor_Dostoevsky 7: Author Joanne_Rowling http://example.com/store#Joanne_Rowling

8: Author J_K_Rowling http://example.com/store#J_K_Rowling

9: Bookstore Buy.com http://example.com/store#Buy.com

10: Bookstore Amazon.com http://example.com/store#Amazon.com

11: Bookstore BarnesAndNoble.com

http://example.com/store#BarnesAndNoble.com

Chú ý rằng thứ tự các cá thể xuất hiện ở đầu ra thì không cần thiết phải giống với thứ tự chúng xuất hiện trong tệp bản thể luận Hiện giờ chúng không là vấn đề, nhưng nếu nhúng dữ liệu vào mẫu (template) thì sẽ có vấn đề May mắn là nếu biết trước là sẽ được chuẩn bị trước và đây là vấn đề có thể xử lý dễ dàng

Tại thời điểm này bạn chỉ lo lắng về chuyện thu thập các cá thể Bookstore

Trang 29

public static void main(String[] args) {

MashupOntologyReader reader = new MashupOntologyReader();

Individual[] individuals = reader.getIndividuals("Bookstore");

Bước tiếp theo là thêm tính năng này vào ứng dụng thực sự

Trang 30

Tạo ra một thực đơn từ danh sách các dịch vụ

Tại thời điểm này, bạn đã sẵn sàng tiếp cận với các khả năng của Jena từ trong các ứng dụng thật của web Trước khi bạn bắt đầu, phải chắc chắn rằng các tệp *.jar đều có thể truy cập vào từ ứng dụng của web và lớp MashupOntologyReader có sẵn cho servlet Bổ sung chức năng sau vào phương thức doGet() (xem ví dụ 11):

Ví dụ 11 Tạo ra một mẫu chọn thực đơn

MashupOntologyReader reader = new MashupOntologyReader();

Individual[] individuals = reader.getIndividuals("Bookstore");

Trang 31

response.getWriter().print("<select name=\"serviceURI\">");

for (int i = 0; i < individuals.length; i++){

Individual thisIndividual = individuals[i];

Trang 32

Đầu tiên, tạo một thể hiện của lớp MashupOntologyReader, cái mà cũng tải bản thể luận thực sự Từ đó bạn có thể sử dụng phương thức getIndividuals() bạn vừa tạo ra để thu được một mảng Bookstore Khi bạn đã có mảng Bookstore bạn có thể lặp vòng chúng nếu bạn muốn các mảng khác sử dụng cùng phương thức trước khi thu lại được URI và tên hoặc ID Sử dụng chúng để tạo ra thực đơn HTML select trong mẫu có sẵn

Kết quả cuối cùng trông giống hình 1

Hình 1 Thêm vào hộp lựa chọn

Gửi biểu mẫu và dịch vụ đầu ra

Lấy dịch vụ mà người sử dụng muốn sử dụng là việc rất giản đơn Thực tế, nó không khác với lấy lại bất cứ thông tin nào đã gửi từ một biểu mẫu (xem ví dụ 12):

Trang 33

Ví dụ 12 Lấy lại thông tin từ mẫu thông tin

String query = request.getParameter("query").toString();

String serviceURI = request.getParameter("serviceURI").toString();

Service service = ont.obtainServiceInfo(serviceURI);

Một cách đơn giản, lấy serviceURI như là một tham số từ mẫu Bạn có thể cung cấp nó tới trang để bảo đảm nó hoạt động được

Trang 34

Bây giờ bạn có thể sẵn sàng lấy lại thông tin dịch vụ thực tế

Lấy lại dịch vụ thông tin từ bản thể luận

Giờ bạn đã biết loại dịch vụ nào người sử dụng muốn dùng, bạn sẽ cần phải lấy thông tin về nó từ bản thể luận Để làm vậy, bạn cần thêm API đối với phương thức doPost()

Bổ sung thông tin dịch vụ vào bản thể luận

Khi bạn xây dựng bản thể luận ở Phần 4, đã bao gồm thông tin dịch vụ căn bản, nhưng bây giờ phải chi tiết hơn một chút Đặc biệt, phải thêm vào các thông tin bổ sung về dịch vụ, chẳng hạn như mẫu và bản ghi dữ liệu hiển thị đang tồn tại ở thời điểm lớp Service hiện tại cũng như một cách để tập hợp các tham số bổ sung cho một dịch vụ, chẳng hạn như các kiểu tìm kiếm hoặc một mã phát triển (developer token)

Trang 36

</owl:DatatypeProperty>

<owl:DatatypeProperty rdf:ID="xsltTransformationString"> <rdfs:domain rdf:resource="#Service"/>

Trang 37

</rdfs:subClassOf>

</owl:Class>

<owl:DatatypeProperty rdf:ID="paramname">

<rdfs:domain rdf:resource="#ServiceParameterMap"/> <rdfs:range rdf:resource="&xsd;string"/>

Trang 38

Bất cứ thông tin nào như mẫu ghi các hồ sơ hiển thị (ở đây gọi là rootnode) khá là

dễ hiểu Bạn chỉ cần thêm vào như một thuộc tính của lớp Ở một số trường hợp, tình trạng không đơn giản như thế Ví dụ, nhập các thông số đầu vào cần cả tên và giá trị, cho nên bạn phải xây dựng cấu trúc để có đủ các thông tin như vậy

Trong trường hợp này, cấu trúc này được gọi là ServiceParameterMap

ServiceParameterMap tham chiếu với tài nguyên paramname và paramvalue Với toàn bộ các thuộc tính đã được tạo ra, bây giờ bạn có thể thiết lập các cá thể thực

tế

Dịch vụ riêng biệt trong bản thể luận

Tạo các cá thể dịch vụ thực tế khá đơn giản, chỉ cần theo cấu trúc các lớp (xem ví

Trang 39

<queryParameter>Title</queryParameter>

</Bookstore>

<ServiceParameterMap rdf:ID="amazonInput1">

Ngày đăng: 07/08/2014, 10:20

HÌNH ẢNH LIÊN QUAN

Hình 1. Thêm vào hộp lựa chọn - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa, Phần 5 potx
Hình 1. Thêm vào hộp lựa chọn (Trang 32)
Hình 2. Thông tin dịch vụ - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa, Phần 5 potx
Hình 2. Thông tin dịch vụ (Trang 50)
Hình 3. Kết quả của sự chuyển đổi - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa, Phần 5 potx
Hình 3. Kết quả của sự chuyển đổi (Trang 75)
Hình 4. Kết quả cuối cùng - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa, Phần 5 potx
Hình 4. Kết quả cuối cùng (Trang 91)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w