Describing Web Resource in RDF (Chapter III – Part II)

Tiếp theo loạt bài về Semantic Web, chúng ta sẽ tìm hiều một số khái niệm liên quan được dùng trong RDF.

  • Tài nguyên (resource): Chúng ta có thể hiểu đơn giản rằng một tài nguyên cũng giống như một đối tượng, một vật mà chúng ta muốn đề cập. Tài nguyên có thể là tác giả, quyển sách, nhà xuất bản, nơi chốn, con người, khách sạn, các câu truy vấn tìm kiếm v.v… Mỗi tài nguyên có một URI (Universal Resource Indentifier). Một URI có thể là một URL (Unified Resource Locator) hoặc một loại giá trị định danh duy nhất nào đó. Lưu ý rằng, một định danh không nhất thiết phải cho phép truy cập tới tài nguyên. URI đã được định nghĩa không chỉ cho địa chỉ web mà còn cho các đối tượng khác số điện thoại, số ISBN hay các vị trí địa lý. Thậm chí đã có nhiều cuộc tranh luận về bản chất của URI cả về phương diện triết học, chẳng hạn như cái gì “định danh duy nhất” một con người…, trong khuôn khổ của bài viết, chúng ta chỉ giả định rằng URI định danh một tài nguyên web.
  • Thuộc tính (Property): Thuộc tính là loại tài nguyên; chúng mô tả mối quan hệ giữa các tài nguyên, chẳng hạn như “written by”, “age”… Thuộc tính trong RDF cũng được xác định bởi URI (thường là URL). Ý tưởng dùng URI để xác định một vật và mối quan hệ giữa chúng là khá quan trọng. Nó cho phép chúng ta có cùng một mô hình đặt tên, do đó, giảm thiểu được những tình huống trùng tên vốn gây ra nhiều phiền toái đối với việc biểu diễn dữ liệu.
  • Phát biểu (Statement): Một phát biểu xác định thuộc tính cho tài nguyên. Một phát biểu là một bộ ba object-attribute-value gồm có một tài nguyên, một thuộc tính và một giá trị. Giá trị có thể là tài nguyên hoặc cũng có thể là giá trị kiểu chuỗi.
  • Biểu diễn một phát biểu: Giả sử, ta có một phát biểu sau:
  • David Billington is the owner of the Web page http://www.cit.gu.edu.au/~db

    Cách đơn giản để thể hiện phát biểu này đó là sử dụng định nghĩa về bộ ba object-attribute-value ở trên(”David Billington”, http://www.mydomain.org/site-owner, http://www.cit.gu.edu.au/~db)Chúng ta có thể xem bộ ba (x, P, y) như là một biểu thức logic P(x,y), trong đó mệnh đề P chỉ ra mối quan hệ giữa x và y. Thực ra RDF chỉ đưa ra mệnh đề.

    Figure 3-1

    Hình 3.1: Đồ thị biểu diễn bộ ba Để ý rằng thuộc tính “site-owner” và một trong hai đối tượng được xác định bởi URL, đối tượng còn lại được xác định bởi một chuỗi ký tự.Hình 3.1 biểu diễn đồ thị của phát biểu đã đưa ra. Nó là một đồ thị có hướng với các node có gắn nhãn và các cung; các cung được nối trực tiếp từ tài nguyên (chủ từ – subject trong phát biểu) tới giá trị (túc từ – object trong phát biểu). Trong Trí tuệ nhân tạo, loại đồ thị này được gọi là mạng ngữ nghĩa (semantic net). Như đã nói, giá trị được nêu ra trong một phát biểu có thể là một tài nguyên. Do đó, nó có thể được liên kết tới một tài nguyên khác như trong các triple sau:

    • (http://www.cit.gu.edu.au/~db, http://www.mydomain.org/site-owner, “David Billington”)
    • (”David Bilington”, http://www.mydomain.org/phone, “3875507″)
    • (”David Billington”, “http://www.mydomain.org/uses, http://www.cit.gu.edu.au/~arock/defeasible/Defeasible.cgi)
    • (”www.cit.gu.edu.au/~arock/defeasible/Defeasible.cgi”, http://www.mydomain.org/site-owner,”Andrew Roc”
Những triple đó được biểu diễn như sau
Figure 3-2

Đồ thị thật sự là công cụ mạnh mẽ để mô tả cho con người hiểu, nhưng mục đích của Semantic Web lại yêu cầu những hình thức biểu diễn mà máy tính có thể truy xuất và xử lý được.Do đó, có một hình thức biểu diễn đáp ứng được yêu cầu đó là dựa vào XML. Theo khả năng này, một tài liệu RDF được biểu diễn bởi một element của XML với thẻ là rdf:RDF. Phần nội dung của element này đó là số lượng các Diễn giải (Descriptions) dùng thẻ rdf:Description. Mỗi diễn giải như thế tạo nên một phát biểu về một tài nguyên, được xác định bằng một trong ba cách sau:

    • Thuộc tính about: tham chiếu tới một tài nguyên đã có
    • Thuộc tính ID : tạo ra một tài nguyên mới
    • Không có tên: tạo ra một tài nguyên nặc danh (anonymous )

Sau đây là ví dụ về cách thể hiện phát biểu đã đưa ra

Figure 3-3

Thành phần rdf:Description tạo ra một phát biểu về tài nguyên “http://www.cit.gu.edu.au/~db”. Trong đó, phần thuộc tính đóng vai trò như một thẻ, và phần nội dung là giá trị của thuộc tính đó. Việc mô tả đó tuân theo đúng một trật tự, nói cách khác cú pháp XML thiết lập một sự tuần tự (serialization). Thứ tự của các diễn giải (hay tài nguyên) thì không quan trọng mà tùy theo mô hình trừu tượng của RDF. Điều này một lần nữa cho thấy rằng, mô hình đồ thị là mô hình dữ liệu thực sự của RDF còn XML chỉ là hình thức biểu diễn cho đồ thị mà thôi.

Describing Web Resource in RDF (Chapter III – Part I)

  1. Giới thiệu

XML là siêu ngôn ngữ (metalanguage) thông dụng dành cho vệc định nghĩa markup. Nó cung cấp một framework chung và tập các công cụ như parsers dành cho việc trao đổi dữ liệu và các siêu dữ liệu (metadata) giữa các ứng dụng. Tuy nhiên, XML không cung cấp bất kỳ ý nghĩa nào để nói về “ngữ nghĩa” của dữ liệu. Ví dụ, không hề có một định hướng về mặt ngữ nghĩa nào liên quan tới việc lồng các thẻ (tags) với nhau mà hoàn toàn tùy thuộc vào cách mà mỗi ứng dụng thông dịch. Ví dụ, chúng ta có phát biểu:

David Billington is a lecturer of Discrete Mathematics.

Có nhiều cách để biểu diễn phát biểu này trong XML, chẳng hạn

<course name="Discrete Mathematics">

<lecturer>David Billington</lecturer>

</course>

Hoặc

<lecturer name="David Billington">

<teaches>Discrete Mathemtatics</teaches>

</lecturer>

Hoặc:

<teachingOffering>

<lecturer>David Billington</lecturer>

<course>Discrete Mathematics</course>

</teachingOffering>

Hai cách biểu diễn đầu tiên có thứ tự lồng các tags trái ngược nhau song chúng vẫn diễn đạt cùng một thông tin. Vì vậy, không có một tiêu chuẩn nào quy định ý nghĩa đối với việc lồng thẻ.

Mặc dù thường được gọi là “ngôn ngữ” nhưng RDF thực chất là một mô hình dữ liệu (data – model). Nội dung cơ bản của nó chính là bộ ba object-attribute-value hay còn gọi là một statement. Ví dụ như câu ở trên về Billington là một phát biểu. Dĩ nhiên, một mô hình dữ liệu trừu tượng cần một cấu trúc cú pháp để biểu diễn và truyền đạt, do đó RDF có cú pháp hoàn toàn tương tự như XML. Chính vì vậy, nó thừa hưởng mọi ưu thế, lợi ích từ XML. Tuy nhiên, cũng cần biết rằng vẫn tồn tại những cú pháp khác để biểu diễn RDF, do đó cú pháp dựa trên nền XML không phải là thành phần tối cần thiết trong mô hình RDF.

RDF độc lập với miền ứng dụng (domain – independent), tức là không hề có sự giả định trước nào về một miền ứng dụng đặc biệt nào được đưa ra. Nó hoàn toàn tùy thuộc vào người dùng để định nghĩa từ vựng (terminology) trong một lược đồ ngôn ngữ gọi là RDF Schema (RDFS). Gọi là RDF Schema thực sự là không chính xác vì nó gợi lên rằng RDF Schema có mối quan hệ với RDF tương tự như là XML Schema với XML, nhưng thực sự không phải vậy. XML Schema ràng buộc cấu trúc của tài liệu XML trong khi đó RDF Schema định nghĩa từ vựng sử dụng trong các mô hình dữ liệu RDF. Trong RDFS, chúng ta có thể định nghĩa các từ vựng, chỉ ra loại thuộc tính nào được dành cho loại đối tựơng nào và những giá trị nào mà chúng có thể nhận, cũng như mô tả mối quan hệ giữa các objects.Ví dụ:

Lecturer is a subclass of academic staff member.

Câu này có nghĩa là tất cả các “lecturer” đều là “academic staff member”. Điều đáng chú ý ở đây đó là đã có một ý nghĩa mang tính định hướng được gán với “is a subclass of” tức là đã xuất hiện mối quan hệ “có hướng”. Lúc này, nó không còn phụ thuộc vào các ứng dụng khi biên dịch khái niệm này. Ý nghĩa mang tính định hướng này phải được “quan tâm” bởi các phần mềm xử lý RDF. Nhờ khả năng “điều chỉnh” tính ngữ nghĩa của bất kỳ thành phần, RDF/RDFS cho phép chúng ta mô hình hóa một miền ứng dụng riêng.

Ví dụ sau minh họa tính quan trọng của RDF Schema:

<academicStaffMember>Grigoris Antonio</academicStaffMember>
<professor>Michael Maher</professor>
<course name="Discrete Mathematics">

<isTaughtBy>David Billington</isTaughtBy>

</course>

Giả sử chúng ta cần tìm tất cả các “academic staff members”, khi đó, biểu thức XPath sẽ là:

//academicStaffMember

Kết quả chỉ là Grigoris Antoniou. Tuy nhiên trong tình huống này, câu trả lời này không thỏa mãn về mặt ngữ nghĩa. Với con người, kết quả này phải bao gồm cả Michael Maher và David Billington bởi vì:

  • Mọi “professor” đều là “academic staff member” (bởi vì “professor is a subclass of academicStaffMember”).
  • Các “Courses” chỉ được giảng dạy bởi các “academic staff member”

Loại thông tin này tạo ra việc sử dụng mô hình ngữ nghĩa cho các miền ứng dụng riêng biệt, và không thể được hiện thực với XML hay RDF, tuy nhiên loại ngữ nghĩa điển hình này được khai báo trong RDF Schema. Theo đó, RDFS tạo ra thông tin mang tính ngữ nghĩa mà máy tính có thể truy cập được theo như viễn cảnh mà Semantic Web vạch ra.

Giới thiệu về ASP.NET

Trong nhiều năm qua, ASP đã được cho rằng đó thực sự là một lựa chọn hàng đầu cho web developers trong việc xây dựng những web sites trên nền máy chủ web Windows bởi nó vừa linh hoạt mà lại đầy sức mạnh. Đầu năm 2002, Microsoft đã cho ra đời một công nghệ mới đó chính là ASP.NET. Đây thực sự là một bước nhảy vượt bậc của ASP cả về phương diện tinh tế lẫn hiệu quả cho các developers. Nó tiếp tục cung cấp khả năng linh động về mặt hỗ trợ ngôn ngữ, nhưng hơn hẳn về mặt lĩnh vực ngôn ngữ script vốn đã trở nên hoàn thiện và trở thành ngôn ngữ cơ bản của các developers. Việc phát triển trong ASP.NET không chỉ yêu cầu hiểu biết về HTML và thiết kế web mà còn khả năng nắm bắt những khái niệm của lập trình và phát triển hướng đối tượng.

Lần lượt, chúng ta sẽ tìm hiểu về ASP.NET, về cách cài đăt các phần mềm, tạo web server… cũng như cách thức thiết kế một trang ASP.NET. Tuy nhiên, trước tiên chung ta sẽ đinh nghĩa xem ASP thật sự là gì.

ASP.NET là một kỹ thuật phía server (server-side) dành cho việc thiết kế các ứng dụng web trên môi trường .NET.

ASP.NET là một kỹ thuật server-side. Hầu hết những web designers bắt đầu sự nghiệp của họ bằng việc học các kỷ thuật client-side như HTML, JavaScriptCascading Style Sheets (CSS). Khi một trình duyệt web yêu cầu một trang web được tạo ra bởi các kỷ thuật client-side, web server đơn giản lấy các files mà được yêu cầu và gửi chúng xuống. Phía client chịu trách nhiệm hoàn toàn trong việc đọc các định dạng trong các files này và biên dịch chúng và xuất ra màn hình.

Với kỹ thuật server-side như ASP.NET thì hoàn toàn khác, thay vì việc biên dịch từ phía client, các đoạn mã server-side sẽ được biên dịch bởi web server. Trong trường hợp này, các đoạn mã sẽ được đọc bởi server và dùng để phát sinh ra HTML, JavaScriptCSS để gửi cho trình duyệt. Chính vì việc xử lý mã xảy ra trên server nên nó được gọi là kỹ thuật server-side.

fig11.jpg

ASP là một kỹ thuật dành cho việc phát triển các ứng dụng web. Một ứng dụng web đơn giản chỉ các trang web động. Các ứng dụng thường được lưu trữ thông tin trong database và cho phép khách truy cập có thể truy xuất và thay đổi thông tin. Nhiều kỹ thuật và ngôn ngữ lập trình khác cũng đã được phát triển để tạo ra các ứng dụng web như PHP, JSP, Ruby on Rails, CGI và ColdFusion. Tuy nhiên thay vì trói buộc bạn vào một ngôn ngữ và một công nghệ nhất định, ASP.NET cho phép bạn viết ứng dụng web bằng các loại ngôn ngữ lập trình quen thuộc khác nhau.

ASP.NET sử dụng .NET Framework, .NET Framework là sự tổng hợp tất các các kỷ thuật cần thiết cho việc xây dựng một ứng dụng nền desktop, ứng dụng web, web services…. thành một gói duy nhất nhằm tạo ra cho chúng khả năng giao tiếp với hơn 40 ngôn ngữ lập trình.

Thậm chí với những sự lý giải kỹ càng như vậy, bạn vẫn ngạc nhiên tự hỏi điều gì làm nên một ASP.NET tốt như vậy. Sự thật là có rất nhiều kỹ thuật server-side với điểm mạnh và điểm yếu riêng nhưng ASP.NET có những tính năng gần như là duy nhất.

  • ASP cho phép bạn sử dụng ngôn ngữ lập trình mà bạn ưa thích hoặc gần gủi với chúng. Hiện tại, thì .NET Framework hỗ trợ trên 40 ngôn ngữ lập trình khác nhau mà đa phần đều có thể được sử dụng để xây dựng nên những web sites ASP.NET. Chẳng hạn như C# (C sharp) và Visual Basic.
  • Nhưng trang ASP.NET được Compiled chứ không phải là Interpreted. Khác với các trang ASP được Interpreted, điều này có nghĩa là mỗi lần người dùng yêu cầu một trang, máy chủ sẽ đọc các đoạn mã vào bộ nhớ, xử lý cách thức thực thi các đoạn mã và thực thi chúng. Đối với ASP.NET, máy chủ chỉ càn xử lý cách thức thực thi một lần duy nhất. Đoạn mã sẽ được Compiled thành các files mã nhị phân cái mà được thực thi rất nhanh mà không cần phải đọc lại. Chính điều này tạo ra bước tiến nhảy vọt về hiệu suất so với ASP
  • ASP đã cả khả năng toàn quyền truy xuất tới các chức năng của .NET Framework. Hỗ trợ XML, web services, giao tiếp với CSDL, email… và rất nhiều các kỹ thuật khác được tích hợp vào .NET, giúp bạn tiết kiệm được công sức.
  • ASP cho phép bạn phân chia các đoạn mã server-side và HTML. Khi bạn phải làm việc với cả đội ngũ lập trình và thiết kế, sự tách biệt này cho phép các lập trình viên chỉnh sửa server-side code mà không cần dính dáng gì tới đội ngũ thiết kế.
  • ASP giúp cho việc tái sử dụng những yếu tố giao diện người dùng trong nhiều web form vì nó cho phép chúng ta lưu các thành phần này một cách độc lập.
  • Bạn có được một công cụ tuyệt vời hỗ trợ phát triển các ứng dụng ASP.NET hoàn toàn miễn phí, đó là Visual Web Developer, một trình soạn thảo trực quan mạnh mẽ có tính năng Code Autocompletion, Code Format, Database Integration Functionality, Visual HTML editor, Debugging…