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

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

92 312 0
Tài liệu đã được kiểm tra trùng lặp

Đ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 537,87 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa semantic Web, Phần 6: Cho người dùng quyền kiểm soát Tóm tắt: Đây là bài viết cuối cùng trong một loạt các bài viết để chỉ cho bạn các

Trang 1

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

Phần 6: Cho người dùng quyền kiểm soát

Tóm tắt: Đây là bài viết cuối cùng trong một loạt các bài viết để chỉ cho bạn cách

tạo một ứng dụng mashup Ở đây, bạn cần có một ứng dụng đang chạy và một khung làm việc thay thế nhờ đó hệ thống có thể sử dụng các lập luận ngữ nghĩa để hiểu các dịch vụ tại điểm sử dụng của nó Trong bài viết này, bạn sẽ để cho người dùng kiểm soát việc chọn lựa loại hình dịch vụ, dữ liệu lấy về từ dịch vụ Web, và cách trình bày dữ liệu đó

Trước khi bắt đầu

Bài viết này dành cho các nhà phát triển muốn học thêm về cách dùng kỹ thuật ngữ nghĩa và ứng dụng ngữ nghĩa Đặc biệt, bài viết chỉ cho bạn cách sử dụng kỹ thuật Web ngữ nghĩa để lấy dữ liệu từ một dịch vụ web bất kỳ và trình bày chúng dưới dạng người dùng tự chọn

Khi tham dự bài viết này bạn chắc chắn phải có kiến thức kỹ càng về lập trình Java Bạn cũng cần hiểu nhiều về khái niệm XML và khung làm việc mô tả tài nguyên (Resource Description Framework - RDF) nói chung cũng như biết kỹ về ngôn ngữ Web bản thể (Web Ontology Language - OWL) nói riêng Nếu bạn cần tìm hiểu lại ba chủ đề này hãy đọc phần 3 và 4 trong loạt hướng dẫn này

Về loạt bài viết

Dường như bạn không thể vào Web mà không vào một trang Web hoặc là cung cấp cho bạn quyền truy cập dữ liệu của nó thông qua một dịch vụ Web có gốc API hoặc là sử dụng dữ liệu từ trang web khác lấy từ một dịch vụ Web có gốc API Khi bạn xem xét lợi thế của việc sử dụng các thông tin sẵn có trong ứng dụng của riêng bạn thì điều đó không hề gây ngạc nhiên Đây 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 một thứ hoàn toàn

mới Những ứng dụng này được gọi là mashups là hiện tượng thịnh hành nhất trên

Web, từ các trang giao tiếp thông thường đến các trang tìm kiếm đặc biệt tới chiến lược mashup từng xuất hiện

Hầu hết các mashup rất hữu ích, nhưng chúng có một đặc điểm chung là chúng được tạo ra cho một loạt các dịch vụ riêng biệt, và nếu một trong các dịch vụ đó thay đổi hoặc dịch vụ riêng biệt của một loại hình cụ thể nào đó thay đổi thì bạn sẽ

có nhiều việc phải làm với nó

Trang 2

Mục đích của loạt bài viết này nhằm tạo ra một ứng dụng mashup tốt đến mức mà người dùng có thể thêm hoặc bớt các dịch vụ nếu muốn, và hệ thống sẽ biết cách giải quyết vấn đề này Các chuỗi tiến trình diễn ra như sau:

Phần 1: Giới thiệu khái niệm mashups, trình bày cách ứng dụng hoạt động và xây dựng một phiên bản đơn giản nhất của một mashup Những sự cố trình bày

nghiêm trọng liên quan tới việc tạo ra hàng loạt các cuộc gọi trên Web cũng sẽ được chỉ ra

Phần 2: Giải quyết một số sự cố khi sử dụng pureXML™ của IBM® DB2 ® để xây dựng bộ nhớ lưu trữ XML để lưu giữ kết quả của các yêu cầu trước đó và để cho phép bạn truy lục thông tin cụ thể

Ở cấp độ cơ bản nhất, bạn sẽ cần phải dùng bản thể luận và các từ vựng để định

nghĩa các khái niệm và mỗi quan hệ giữa chúng vì thế ở Phần 3 bạn bắt đầu tiến trình này bằng cách tìm hiểu về RDF và RDFs, đó là hai thành phần chính của ngôn ngữ web bản thể (OWL), được mô tả trong Phần 4 Phần 5 Lấy các bản thể luận bạn tạo được ở phần 4 và sử dụng nó để cho phép người dùng thay đổi nguồn gốc thông tin

Và bài viết này rất hấp dẫn đối với bạn Ở đây, bạn có một ứng dụng đang chạy và một khung làm việc để hệ thống có thể sử dụng lập luận ngữ nghĩa để hiểu các dịch vụ tại điểm sử dụng của nó Trong bài viết này, bạn cung cấp cho người dùng quyền kiểm soát, cho phép người dùng lựa chọn dịch vụ trong bản thể luận và chọn ra các dữ liệu để dùng cho một mashup thông thường

Về bài viết này

Bài viết này là phần 6 trong loạt bài viết giải thích cách thêm các khả năng ngữ nghĩa cho ứng dụng mashup các dịch vụ Web Ở phần 5 (xem Tài nguyên bạn lấy một cây thư mục đã có và bổ sung nó để cho phép người dùng dễ dàng thay đổi dịch vụ Trong bài viết này bạn sẽ dùng các kỹ năng ngữ nghĩa để cung cấp cho người dùng quyền kiểm soát hoàn toàn đối với các thông tin được hiển thị và đối với cách trình bày của nó

Ở bài viết này bạn sẽ học cách

 Gọi một reasoner trên dữ liệu ngữ nghĩa

Trang 3

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

Bạn cần phải cài đặt và kiểm tra các phần mềm sau đây nhằm tuân theo mã trong bài viết này

 IBM® DB2® 9 (trước đây gọi là “Viper”) Cơ sở dữ liệu liên quan này bao gồm khả năng XML mà bạn sẽ cần cho bài viết này Bạn có thể tải về phiên bản thử nghiệm DB2 9: DB2 Enterprise 9 hoặc DB2 Express-C 9 phiên bản

dữ liệu máy chủ DB2 Express 9 miễn phí

 Apache Tomcat Hay dụng cụ servlet khác: bài viết này cho rằng bạn sẽ dùng các servlet để xây dựng các ứng dụng Web, vì thế bạn sẽ cần có dụng

cụ servlet như là Apache Tomcat Nếu bạn chọn cách xây dựng ứng dụng

sử dụng môi trường khác thì hãy đảm bảo chắc chắn rằng bạn có phần mềm thích hợp trong tay Tải phần mềm apache-tomcat-5.5.17.zip và cài đặt nó vào trong một thư mực (không để dấu cách khi viết tên thư mục)

 Java: bài viết này được xây dựng cùng Apache Tomcat 5.5, cần có Java 1.5 hoặc các phiên bản mới hơn Tải phần mềm J2SE SDK

 Để tiến hành công việc thuận lợi hơn bạn có thể sử dụng một IDE như Eclipse hoặc Rational IBM™ Web Developer cho việc khai thác của bạn Bạn có thể tải Eclipse tại Eclipse.org, tải phiên bản thử nghiệm của

Trang 4

Rational Web Developer hoặc dùng môi trường khai thác thông dụng của bạn Bạn sẽ không thể làm được gì thú vị trừ khi việc đó liên quan tới tài liệu thu thập và sự triển khai của mình

Mục đích của loạt bài viết này

Từ khởi đầu của loạt bài viết này, ý tưởng tạo ra một mashup ngữ nghĩa hoặc một ứng dụng Web để lấy thông tin từ các nguồn khác nhau được đưa ra Ngày nay, mashups đã khá thông dụng Vào thời điểm viết loạt bài này, Mashupfeed.com đã

có danh sách 994 mashups tồn tại và có thêm 2,7 mashups được đưa vào sử dụng mỗi ngày Nhưng mỗi một mashup đều không thay đổi loại hình thông tin chúng trình bày Và do đó, người dùng phải chọn một truy vấn để thực hiện, nhưng

nguồn dữ liệu và sự trình bày của nó là cố định Ứng dụng sử dụng một dịch vụ đơn hoặc một loạt các dịch vụ và người dùng sẽ không kiểm soát được điều xảy ra khi chọn một truy vấn

Mục đích của loạt bài viết này là tạo ra một chút khác biệt Ứng dụng bạn đang xây dựng cuối cùng sẽ mang lại cho người dùng quyền kiểm soát đối với dịch vụ, với dữ liệu lấy được và cách trình bày các dữ liệu đó Nhưng trước khi bước vào nội dung chi tiết, chúng ta nên xem chúng ta đã đạt được những gì trong hành trình này

Các bài viết trước

Ở phần một của loạt bài viết, bạn xây dựng một ứng dụng mashup cơ bản dùng để lấy dữ liệu từ các dịch vụ bất kỳ được xác định tại một lớp Java riêng biệt Dữ liệu

mà các dịch vụ này trình bày và hình thức trình bày được điều khiển bởi khuôn mẫu XML lưu giữ như một đặc tính của lớp dịch vụ Để thêm một dịch vụ mới, bạn cần thêm một định nghĩa dịch vụ mới và mọi thứ được tiến hành tự động

Sự điều biến này thực sự có chủ ý Nó cho phép bạn tạo ra một tình huống mà ở

đó người dùng có thể chuyển đổi các dịch vụ theo tác động Hàm của ứng dụng có thể thay đổi bằng cách thay đổi các nội dung của Service

Trang 5

Ở phần 2 bạn đã thực hiện các vấn đề về trình bày bằng việc tạo ra một tình huống trong đó dữ liệu trước hết được lấy ra từ cơ sở dữ liệu, và nếu dữ liệu này không tồn tại bạn sẽ phát một truy vấn và dữ liệu sẽ được bổ sung vào cơ sở dữ liệu Sau

đó ở phần 3, và 4 bạn học về khung làm việc mô tả tài nguyên, một chi nhánh của

nó, ngôn ngữ Web bản thể (OWL)

Ở phần 5, mọi thứ nhập lại với nhau, bạn cung cấp thêm khả năng thay đổi dịch vụ cho người dùng Nói cách khác, nếu người dùng muốn xem kết quả từ

BarnesandNoble.com thay vì xem từ Amazon.com, người dùng phải chọn dịch vụ

đó như một lựa chọn và hệ thống sẽ hiểu cách tìm một giá trị Amazon tương

đương với cách tìm một giá trị Barnes & giá trị Noble bởi vì cả hai bộ dữ liệu đều được mã hóa trong một bản thể luận thông thường

Trong bài viết này bạn sẽ hiểu dần từng khái niệm này

Các bước tiếp theo

Bây giờ là lúc tạo ra một ứng dụng mà ở đó người dùng có thể đưa ra các quyết định của mình Bạn không phải khởi động ứng dụng và ngay lập tức đưa ra một hộp tìm kiếm để bạn nhập truy vấn của mình Đầu tiên bạn phải chọn loại hình dịch vụ như là Bookstore, MappingService, và những dịch vụ tương tự trước khi bạn được thấy một danh mục lựa chọn các dịch vụ

Khi bạn đã lựa chọn dịch vụ bạn sẽ được thấy một danh mục tất cả thông tin mà bạn có thể lấy từ dịch vụ đó Bạn sẽ có cơ hội tạo một khuôn mẫu bằng tay hoặc một chuỗi ký tự XML/XHTML có chỗ lưu các dữ liệu hiện thời

Từ đây bạn có thể phát một truy vấn và yêu cầu dữ liệu hiện lên theo cách bạn vừa yêu cầu

Bản thể luận

Hãy bắt đầu bằng việc nhớ lại các phần liên quan của bản thể luận mà bạn sẽ sử dụng cho dự án này (Xem ví dụ 1)

Trang 8

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

</owl:DatatypeProperty>

Trang 9

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

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

</owl:DatatypeProperty>

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

Trang 10

</rdfs:subClassOf>

</owl:Class>

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

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

</owl:DatatypeProperty>

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

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

Trang 11

</owl:DatatypeProperty>

<! SUBCLASSES OF SERVICE >

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

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

</owl:Class>

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

<rdfs:subClassOf rdf:resource="#Service"/> <rdfs:label>News Service</rdfs:label>

</owl:Class>

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

<rdfs:subClassOf rdf:resource="#Service"/> <rdfs:label>Online Map</rdfs:label>

</owl:Class>

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

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

Trang 13

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

</owl:DatatypeProperty>

<owl:ObjectProperty rdf:ID="stockedProduct"> <rdfs:label>Stocked Product</rdfs:label>

<rdfs:domain rdf:resource="#StockItem"/> <rdfs:range rdf:resource="#Book"/>

Trang 17

về khái niệm Trong một ứng dụng thực, hiển nhiên là bạn sẽ có sẵn thông tin này hoặc là bạn sẽ nhận được báo lỗi như là NullPointerException nếu người dùng chọn chúng Và trong một ứng dụng thực bạn sẽ muốn bắt những loại lỗi này

Cũng cần lưu ý rằng đặc tính outputType rất phổ biến với URI cho lớp StockItem,

vì thế ứng dụng biết nó cần xem xét điều gì

Chuyển đổi dữ liệu thô sang dữ liệu bản thể luận

Trang 18

Trước khi tiếp tục bạn cần lưu ý một điểm Ở phần 5 của loạt bài này (Xem mục Tài nguyên bạn đã nhìn thấy việc tạo ra một chuyển đổi căn bản là chuyển dữ liệu Amazon.com sang dữ liệu Property của riêng bạn và sau đó bằng một biến đổi đơn giản làm cho biểu thức cần có XPath có thể quản lý được Bài viết này cũng sẽ nói

rõ tại sao bạn sẽ không dùng XPath để phân tích các dữ liệu trả về, bạn sẽ cần chuyển dữ liệu sang dạng bản thể luận hiện thời

Và cũng vì đặc tính của cách mà bộ xử lý dùng trong bài viết này tương tác, bạn cần chuyển đổi dữ liệu sang dạng bản thể luận theo cách rất đặc biệt Bạn cần đảm bảo rằng bản thể luận sẽ cụ thể hóa chuỗi chuyển đổi như sau (Xem ví dụ 2):

Ví dụ 2 Chuỗi chuyển đổi

Trang 19

<xsl:stylesheet version="1.0" xmlns=""

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

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

05"

Trang 20

><xsl:value-of

select="translate(res:ItemAttributes/res:ListPrice/res:FormattedPrice, '$',

Trang 22

Ở đây trong ví dụ 2 này một lần nữa bạn cần tạo ra các đối tượng trong

http://example.com/store# nhưng bạn sẽ thấy nó hiện ra cụ thể

Một số chú ý về chuyển đổi dữ liệu

Trong loạt bài này, bạn lấy dữ liệu thô và chuyển đổi nó sang dạng XML sao cho hòa hợp với một bản thể luận cụ thể Có thể bạn sẽ tự hỏi “Tại sao không đơn giản

là để cho reasoner tự làm ra mà không cần phải chuyển đổi dữ liệu?” (reasoner là một dịch vụ lấy các phát biểu có trong một bản thể luận và từ đó suy luận ra các phát biểu mới.) Ví như bạn có thể báo cho bản thể luận biết rằng phần tử

FormattedPrice ở trong trang

http://webservices.amazon.com/AWSECommerceService/2005-10-05 không gian tên là một equivalentProperty đối với itemPrice Bạn có thể dùng một reasoner để lấy dữ liệu từ kết quả thô hơn là trình bày một quá trình chuyển đổi

Câu trả lời là không có lý do gì mà bạn không thực hiện được điều này Nhưng sự thật là ngày nay reasoner Web ngữ nghĩa hơi giậm giật, và cách thức này sẽ thay đổi trọng tâm của bài viết này sang cách xây dựng bản thể luận chứ không phải xây dựng các ứng dụng Web Vì thế, chúng ta cần nhớ là chúng ta có quyền lựa chọn, trong tương lai đó có thể sẽ là lựa chọn tốt cho bạn Nhưng bây giờ, bạn sẽ làm mọi thứ đơn giản hơn bằng trình bày việc chuyển đổi dữ liệu

Cải tiến cấu trúc

Trước khi bạn đi sâu hơn, bạn cần phải thay đổi cấu trúc để phù hợp với hàm mới Thêm kiểu đầu ra

Trước khi bắt đầu, xem lại một số điều liên quan tới bản thể luận Từ vị trí của bản thể luận bây giờ, các lớp tương ứng sẽ như dưới đây Trong trường hợp dịch vụ Bookstore là một lớp con của lớp Service trả lại một hoặc nhiều StockItems thì lớp StockItem có nhiều đặc tính như là itemPrice và stockedProduct Nhưng một loại dịch vụ khác NewsService chẳng hạn có thể cho ra một loại mục khác (ví dụ, StockItem) thay vì cho ra một StockItems thì có thể cho ra một hoặc nhiều mục NewsStory Vì thế, để hệ thống làm việc hợp lý, bản thể luận cần phải biết rõ từng lớp đại diện cho các mục riêng rẽ khi hiển thị câu trả lời cho dịch vụ Để làm được điều này, bạn cần định nghĩa đặc tính outputType cho dịch vụ (Xem ví dụ 3)

Trang 24

Lưu ý rằng đặc tính này chứa giá trị của nó ở bất kỳ Class nào Ví dụ ở Bookstore giá trị của đặc tính này nằm ở StockItem Dạng này là một dạng phức (các lớp là các giá trị và các biểu mẫu) gây khó khăn cho việc soạn thảo một reasoner OWL

Trang 25

p.getLocalName() + " ==> "

+ l.getString() ); }

public static void main(String[] args) {

MashupOntologyReader reader = new

Trang 26

Bạn có thể nhìn thấy kết quả của việc thực thi phương thức obtainServiceInfo() (xem ví dụ 5)

Ví dụ 5 Thực thi phương thức obtainServiceInfo()

Trang 27

Ví dụ 6 Phương thức showAllProperties()

Trang 28

import com.hp.hpl.jena.util.iterator.*;

import com.hp.hpl.jena.ontology.*;

public class MashupOntologyReader {

private OntModel serviceOntModel;

Trang 29

public static void main(String[] args) {

MashupOntologyReader reader = new

Trang 30

Bắt đầu từ phần cuối cùng của ví dụ 6, trong hàm main() bạn gọi một hàm mới nhưng lưu ý là để có được các đặc tính cho một lớp bạn cần phải có tham chiếu cho một lớp hiện thời Để làm điều này, bạn cần một tham chiếu cho chính bản thân bản thể luận chứ không chỉ là đối tượng MashupOntologyReader Vì thế bạn cần có một phương thức mới để lấy được tham chiếu cho mẫu bản thể luận đó Khi

mà bạn đã thực hiện được điều này, bạn có thể lấy được tham chiếu cho lớp dựa trên URI của nó Trong trường hợp này bạn đang tìm các đặc tính cho lớp

StockItem

Rõ ràng là việc lấy các đặc tính có liên quan tới sử dụng phương thức

listProperties(), phương thức này sẽ trả về ExtendedIterator Bạn có thể lặp lại qua các đặc tính Trong trường hợp này bạn nhớ xem localName

Bạn sẽ thấy kết quả tương tự (xem ví dụ 7)

Trang 31

Tất nhiên cách này không dễ sử dụng Bạn có thể làm cho nó trông dễ coi hơn một chút

Tân trang lại

Mặc dù là các thông tin trên có ích nhưng chưa chắc là thứ bạn muốn hiển thị cho người dùng thấy Và may mắn là RDF cho phép bạn dán nhãn cho từng lớp hay từng đặc tính Những gì bạn cần làm là hiển thị đặc tính chứ không phải

Trang 32

Ở ví dụ 8 bạn sẽ thấy có một kỹ thuật mới Bạn dùng phương thức getProperty()

để gọi một đối tượng đặc tính cụ thể và sau đó kiểm tra xem mỗi đặc tính có đặc tính đó không (tất nhiên là đặc tính có thể có đặc tính) Nếu nó có chứa đặc tính thì bạn cho OutputLabel nếu nó không chứa đặc tính thì ở đầu ra sẽ xuất hiện

localName Lưu ý là phương thức getLabel() cho phép bạn chọn nhãn dựa theo ngôn ngữ

Kết quả bây giờ trông sẽ như (xem ví dụ 9)

Ví dụ 9 Sử dụng nhãn

Trang 33

Giới hạn đầu ra đối với đặc tính dataType

Ở một ứng dụng hoàn chỉnh, bạn sẽ muốn hiển thị các đặc tính và bất kỳ các đặc tính của đối tượng chứ không chỉ các đối tượng Ví dụ, trong trường hợp này bạn tạo ra một StockItem có chứa đặc tính của sản phẩm mà nó đại diện Trong một ứng dụng hoàn chỉnh, bạn sẽ muốn hiển thị tác giả của quyển sách mà sản phẩm

Trang 34

đại diện Tuy nhiên, để làm điều này bạn cần gọi lại phương thức

showAllProperties()

Bản thân đây không là một sai sót, tuy nhiên bạn cần nhận ra rằng có một số khó khăn xuất hiện Lý do là StockItem của bạn có chứa một đặc tính mang giá trị của Product trong trường hợp này là Book Book có một đặc tính là writtenBy đó là một đối tượng Author Đối tượng Author này có một đặc tính chung đối với tất cả các quyển sách do tác giả này viết, điều này dẫn bạn quay trở lại với đối tượng Author, đối tượng tác giả dẫn bạn quay trở lại với các đối tượng Books, và cứ tiếp tục như thế

Bạn có thể làm việc này nhưng để mọi thứ đơn giản hơn bạn cần giới hạn bản thân bằng các giá trị DatatypeProperty May mắn là không khó để phân biệt sự khác nhau giữa DatatypeProperty và một ObjectProperty (xem ví dụ 10)

Trang 35

if (thisProp.isObjectProperty()){

//System.out.println("This is an object property.");

} else {

System.out.println("Property (raw): "

+thisProp.getLocalName()); }

}

}

}

Trang 36

Biểu mẫu dữ liệu đầu vào mới

Bạn đã biết về truy lục đặc tính, đã đến lúc xem xét việc xây dựng biểu mẫu thực Biểu mẫu sẽ hoạt động như thế nào

Trước khi bạn bắt đầu, bạn nên hiểu rõ chính xác bạn đang xây dựng cái gì Để cho người dùng quyền kiểm soát, bạn cần một biểu mẫu chấp nhận dữ liệu vào của người dùng Biểu mẫu dữ liệu đầu vào mới sẽ có thể là vài dạng thu thập thông tin (Bạn có thể thực hiện việc này như một dạng sử dụng Ajax nhưng đây sẽ là một bài tập dành cho người đọc bài viết)

biểu mẫu này sẽ thực hiện các bước sau:

1 Người dùng chọn một loại dịch vụ Dạng này sẽ hiển thị cố định bằng việc kiểm tra các lớp con của lớp Service

Trang 37

2 Người dùng chọn một dịch vụ hiện thời Dạng này sẽ hiển thị cố định bằng việc kiểm tra các Instances của lớp được chọn trong bước một

3 Người dùng nhập một khuôn mẫu và chọn các đặc tính hiển thị Dạng này

là sự kết hợp các đặc tính của outputType của dịch vụ đã chọn với trường nhập văn bản

Chúng ta cùng bắt đầu

Liệt kê các loại dịch vụ

Bước đầu tiên là cung cấp một dạng liệt kê các loại dịch vụ thích hợp Thêm mã cho lớp MashupClientServlet (xem ví dụ 12)

Ví dụ 12 Liệt kê các loại dịch vụ

protected void doGet(HttpServletRequest request,

HttpServletResponse response) throws

ServletException, IOException {

Trang 38

response.getWriter().print("<h1>Choose a sevice type</h1>");

Trang 39

OntClass thisClass = (OntClass)i.next();

Kết quả là một biểu mẫu tương tự như hình 1

Trang 40

Hình 1 Dạng lựa chọn cơ bản

Dạng này có duy nhất một rắc rối Bạn sẽ nhận thấy biểu mẫu liệt kê dịch vụ

Store, là một lớp con của Service và MappingService và NewsService cũng là các lớp con của Service nhưng biểu mẫu này không liệt kê bất kỳ lớp con nào của lớp Store mặc dù các lớp con này, theo định nghĩa, là các lớp con của Service

Thêm lập luận

Vấn đề gặp phải ở đây là chẳng liên quan gì tới mã hay bản thể luận của bạn Điều rắc rối là khi bạn tạo một mẫu, bạn tạo nó với một sự bổ sung rất dễ đọc bản thể luận mà không trình bày bất cứ lập luận nào khác ngoài việc thuyết minh cấu trúc RDF Nói cách khác, mô hình hiểu được rằng Bookstore là một lớp con của Store nhưng điều này không có tính chất bắc cầu là vì Store là một lớp con của Service nên suy ra Bookstore là một lớp con của Service

Để tạo ra thông tin này hoặc thông tin tương tự có thể chỉ gắn với các đặc tính của bạn và ngược lại với chuẩn các đặc tính OWL sẵn có bạn cần có một reasoner để tạo ra mô hình Bạn bổ sung lớp MashupOntologyReader (xem ví dụ 13)

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

HÌNH ẢNH LIÊN QUAN

Hình 1. Dạng lựa chọn cơ bản. - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 1. Dạng lựa chọn cơ bản (Trang 40)
Hình 2. Tất cả các lớp con. - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 2. Tất cả các lớp con (Trang 42)
Hình 3. Tập các dịch vụ cuối cùng. - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 3. Tập các dịch vụ cuối cùng (Trang 44)
Hình 4. Danh sách các dịch vụ - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 4. Danh sách các dịch vụ (Trang 49)
Hình 5. Biểu mẫu đặc tính. - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 5. Biểu mẫu đặc tính (Trang 59)
Hình 6. Biểu mẫu truy vấn cuối cùng - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 6. Biểu mẫu truy vấn cuối cùng (Trang 65)
Hình 7. Kết quả cuối cùng - Ultimate mashup – Các dịch vụ Web và Web ngữ nghĩa (semantic Web), Phần 6 ppsx
Hình 7. Kết quả cuối cùng (Trang 91)

TỪ KHÓA LIÊN QUAN