Tải bản đầy đủ (.docx) (17 trang)

WEB NGỮ NGHĨA VÀ KHAI PHÁ DỮ LIỆU

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 (325.74 KB, 17 trang )

Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
__________*__________
TIỂU LUẬN MÔN HỌC:
“WEB NGỮ NGHĨA VÀ KHAI PHÁ
DỮ LIỆU”
Đề tài: Xây dựng Web ngữ nghĩa đơn giản
Sinh viên thực hiện: Mai Vũ Đức
Nguyễn Đăng Đức
Nông Anh Đức
Nguyễn Việt Dũng
Lớp: 12BCNTT1
Giáo viên hướng dẫn: PGS. Lê Thanh Hương
Hà nội, 2013
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 1
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
Mục lục:
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 2
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
I. A quick introduction to the Semantic Web
Semantic Web, hay web ngữ nghĩa là đứa con tinh thần của Tim Berners-Lee, cha đẻ của
World Wide Web. World Wide Web là một mạng lưới lơn các thông tincon người có thể
hiểu được được trao đổi dưới đinh dạng HTML. Web ngữ nghĩa là một mở rộng của nó,
cả ý tưởng lẫn thực thi đều nhằm cho mạng lưới dữ lớn này có thể hiểu được bởi cả máy
tính và con người.
Minh chứng từ số lượng lớn các API hiện này cho phép lập trình viên có thể truy cập tới
các website cụ thể và con người muốn coi website như là một đối tượng dữ liệu. Khác
với APIs từ các websites không giống nhau, mặc dù vậy chúng lại cho phép truy cập
cùng một loại dữ liệu. Nếu muốn xây dựng phần mềm biên dịch các kết quả của các
APIs, chung ta phải viết một interface mới. Với web ngữ nghĩa, vấn đề đó bị loại bỏ và


dữ liệu là khả dụng trong mẫu chuẩn ngay từ website, hơn là phải truy cập chúng từ API.
II. RDF, RDFa, microformats, and GRDDL
Các vấn đề cần quan tâm là RDF, RDFa, microformats và GRDDL.
II.1. Resource Description Framework (RDF):
Là nền tảng cơ sở tiêu chuẩn của công nghệ web ngữ nghĩa. Nó cho phép biểu
diễn các tri thức ở định dạng rõ ràng không lẫn lộn, được biểu diễn dưới dạng
XML mà cả con người và máy tính đều đọc được. Để website thành một phần là
web ngữ nghĩa thì cần thiết phải extract RDF được.
II.2. Microformats:
Không hẳn là tiêu chuẩn như các mẫu tiêu biểu. Bằng cách sử dụng HTML và
XHTML chuẩn ở trong cách thức, các thông tin ngữ nghĩa mở rộng có thể được
suy ra từ ý nghĩa các thẻ. Microformats thường thể hiện trong các trường hợp như
people (hCard), events (hCalendar), weblogs (hAtom), curriculum vitae
(hResume), and reviews (hReview). Có thể thu được RDF từ microformats bằng
công cụ GRDDL.
II.3. RDFa:
Là kỹ thuật nhúng RDF vào mã XHTML. Để thực hiện điều này, cần mở rộng
XHTML elements với các attributes, thuộc tính, bổ xung; các thuộc tính này sau
đó được tương ứng với cấu trúc RDF trực tiếp trên trang. Có thể thu được RDF từ
RDFa, và trích xuất nó sử dụng GRDDL.
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 3
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
II.4. Gleaning Resource Descriptions from Dialects of Languages (GRDDL—
pronounced 'griddle'):
Cho phép suy diễn RDF từ tài liệu không phải là RDF. Microformats, RDFa, là
đối tượng của GRDDL, nhưng hơn hết thì nó có thể viết công cụ truyển đổi bất cứ
trang nào để sinh ra RDF tương ứng. Ý tưởng của GRDDL là giúp cho việc nhanh
chóng và dễ dàng lấy một lương lớn thông tin quan trọng của nội dung web.
III. Implementing a Semantic URI Scheme
Url của một trang web bản thân chính nó đã chứa dữ liệu; nó có thể có cấu trúc mang

ngữ nghĩa. Trong phần này, sẽ đề cập đến làm thế nào để Url của một trang web có thể
chứa ngữ nghĩa và làm cho ngữ nghĩa đó dễ dùng.
III.1. What is a semantic URI Scheme?
Ý tưởng sau Url mang ngữ nghĩa là Url có thể đại diện cho mô hình danh mục cảu
website hơn là trỏ đến địa chỉ vật lý của file hoặc script. Có thể thực hiện điều này
bằng mod_rewrite module trong Apache. Đối với ứng dụng demo có các trang sau :
:
• user.php— chứa các thông tin về người dùng trong hệ thống.
• index.php—là trang chủ của hệ thống.
• list.php—là trang chứa danh sách các người dùng, ảnh 1.
Figure 1. The user list, generated by list.php page
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 4
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11

• profile.php—Shown in action in Figure 2, this page is for users to edit their
profiles
Figure 2. The profile.php page for users to edit their details
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 5
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
• login.php—Đăng nhập.
• logout.php—đăng xuất và trở về index page.
• add-friend.php— thêm bạn
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 6
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
• register.php—đăng kí làm thành viên.
III.2. Apache mod_rewrite
Là một module trong apache server hỗ trợ việc viết lại url trong requested url.
III.3. Using RewriteRule in .htaccess
Sau khi bật mod_rewrite, sẽ phải thực hiện việc phản hồi các truy cập bằng việc
config trong .htaccess. dưới đây là một số ví dụ:

/>Sẽ được viết lại thành
/>hoặc:
/>Và giờ người dùng sẽ nhìn thấy deluxe-widget là một sản phẩm và sẽ dễ dàng hơn
khi nhớ đường dẫn và tìm lại trong lịch sử của trình duyệt
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 7
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
Sử dụng mod_rewrite, có thể sử dụng regular expression to đáp ứng hai kiểu
request, để đạt được điều đó có thể viết lại thành /products/([0-9]+) /product_detail.php?
product_id=$1.
Dưới đây là một số cách phổ biến cho việc viết lại đường dẫn
Listing 1. Using the RewriteMap directive

RewriteMap products txt:/path/to/file/userids.txt
RewriteRule / ^(.*)$ user.php?uid=${products:$1|0}
Using RewriteCond to optionally process rules
Listing 2. .htaccess entries for your simple semantic URI scheme

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+)$ user.php?user=$1 [L,QSA]
</IfModule>
Representing the user's contact information with hCard
Một đặc điểm của RDF là một danh từ trong triples thường được nhắc đến bởi
URIs. Trong thế giới ngữ nghĩa, trang chủ của người dùng sẽ thể hiện chính họ. Để làm
cho sự thể hiện mang tính ngữ nghĩa, chúng ta sẽ sử dụng hCard microformat, do đó khi

người dùng xem trang chủ của người dùng họ sẽ dễ dàng trích xuất thông tin liên hệ chi
tiết dưới dang vCard, định dạng mà có thể dễ dàng import bời nhiều phần mềm quản lý
phổ biến.
Introduction to hCard
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 8
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
hCard là một cách để dùng HTML chuẩn cho phép chỉ ra tên field như là định
dạng RFC 2422 của vCard. vCard được hiểu bởi hầu hết các trình duyệt mail, các ứng
dụng phổ biến. Định dạng đó trông như sau
Listing 3. Example vCard

begin:vcard
fn:Rob Crowther
n:Crowther;Rob
adr:;;;London;;;United Kingdom
email;internet:
title:Web Developer
url: />version:2.1
end:vcard
Như đã thấy, định dạng hết sức là đơn giản, bao gồm chủ yếu loại và giá trị được
phân cách bởi “:”, dấu “;” để phân cách nhiều giá trị
Và hCard là một thể hiện của vCard dưới dạng HTML sử dụng tên class và cấu trúc html
tự nhiên. Như sau
Listing 4. Example from Listing 4 coded up as hCard

<div class="vcard">
<a class="url fn" href=" Crowther</a>
(<span class="title">Web Developer</span>)
<div>Email:
<span class="email">

<span class="type">internet</span>
<span class="value"></span>
</span>
</div>
<div class="adr">
<span class="locality">London</span>,
<span class="country-name">United Kingdom</span>
</div>
</div>
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 9
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
Khi mà có hCard chúng ta có thể sử dụng một extension Operator cho Firefox để xuất ra
vCard
Implementing hCard
Như trong Listing 4, để thực thi hCard và đạt được cấu trúc đúng, chúng ta phải hầu
như thêm vào các classes khi cần thiết và thêm vào một số thẻ cần thiết. Đầu tiên là danh
sách đầy đủ các thuộc tính của hCard. Và các thuộc tính con, sẽ trở thành thẻ con:
• fn
• n (family-name, given-name, additional-name, honorific-prefix, honorific-suffix)
• nickname, sort-string
• url, email (type, value), tel (type, value)
• adr (post-office-box, extended-address, street-address, locality, region, postal-
code, country-name, type, value), label
• geo (latitude, longitude), tz
• photo, logo, sound, bday
• title, role, org (organization-name, organization-unit)
• category, note
• class, key, mailer, uid, rev
hCard chỉ có hai thuộc tính bắt buộc: FN và N.
Một số trường có kiểu con như notably adr, email and tel.

Có một số điều cần lưu ý khi nói đến microformats để hiểu rõ hơn tại sao chúng lại
giới hạn hơn thông tin chung cung cấp bởi RDF:
• Giải quyết một vấn đề cụ thể—trước khi microformat mới được xem xét đến.
• Bắt đầu đơn giản nhất có thể—Nếu một vấn đề phức tạp, hãy giải quyết phần đơn
giản trước.
• Thiết kế coi trọng hướng tới con người đầu tiên, sau đó là máy tính.
• Tái sử dụng các khối đã được đông đảo chấp nhận sử dụng như chuẩn.
• Tính thành phần và cài đặt.
Table 1 mẫu tương ứng trường trong phpBB với hCard.
Table 1. Using phpBB user info in hCard
phpBB Column hCard property
username fn, n, nickname
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 10
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
user_email email
user_birthday bday
user_from adr
user_avatar photo
user_website url
user_occ role
Thực thi phpBB Profile với mã hCard
Listing 5. phpBB Profile data to hCard markup

<div class="vcard">
<?php if ($row['user_avatar']) { ?>
<img class="photo" src="<?php echo $row['user_avatar']; ?>" alt="" />
<?php }
if ($row['user_website']) {
echo "<h1><a class=\"url fn nickname\"
property=\"foaf:name\" rel=\"foaf:homepage\"

href=\"".$row['user_website']."\">".$row['username']."</a></h1>";
} else {
echo "<h1><a class=\"url fn nickname\"
property=\"foaf:name\" rel=\"foaf:homepage\"
href=\"".$baseURI.$row['username_clean']."\">".
$row['username']."</a></h1>";
}
if ($row['user_occ']) { ?>
(<span class="title"><?php echo $row['user_occ']; ?></span>)
<?php } ?>
<div>Email:
<span class="email">
<span class="type">internet</span>
<a class="value" href="mailto:<?php echo $row['user_email'];
?>"><?php echo $row['user_email']; ?></a>
</span>
</div>
<?php if ($row['user_birthday']) { ?>
<div>Birthday:
<?php list($bday_day, $bday_month, $bday_year) = array_map('strval',
explode('-', str_replace(" ", "0", $row['user_birthday']))); ?>
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 11
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
<abbr title="<?php echo $bday_year."-".$bday_month."-".$bday_day; ?>"
class="bday">
<?php echo $bday_day." ".getmonth($bday_month); ?></abbr>
</div>
<?php } ?>
<?php if ($row['user_jabber']) { ?>
<div>Jabber address:

<?php echo $row['user_jabber']; ?>
</div>
<?php } ?>
<?php if ($row['user_icq']) { ?>
<div>ICQ address:
<?php echo $row['user_icq']; ?>
</div>
<?php } ?>
<?php if ($row['user_from']) { ?>
<div class="adr">Location: <span class="locality">
<?php echo $row['user_from']; ?>
</span></div>
<?php } ?>
</div>
Kết quả như sau.
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 12
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
Figure 3. User profiles with hCard displayed in your social network app

Microformats nhằm mục đích nhẹ và dễ sử dụng.
Extracting RDF from hCard with GRDDL
Có thể sử dụng service GRDDL để extract ra rdf từ web của w3c
url]&output=rdfxml.
Listing 6. RDF extract (of Listing 6) from GRDDL

<rdf:Description rdf:nodeID="r1209859928r13405r1">
<ns0:fn xmlns:ns0=" test_user_1
</ns0:fn>
</rdf:Description>
<rdf:Description rdf:nodeID="r1209859928r13405r1">

<ns0:nickname xmlns:ns0=" />Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 13
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
test_user_1 </ns0:nickname>
</rdf:Description>
<rdf:Description rdf:nodeID="r1209859928r13405r1">
<ns0:url xmlns:ns0="
rdf:resource=" /> </rdf:Description>
Microformats in the real world
Microformats không phải là ứng dụng chủ yếu của công nghệ Semantic Web.
Chúng nhằm vào điểm bắt đầu của ứng dụng hữu dụng và thực tế.
Representing the user's network with FOAF : Friend of Friend
Tính năng quan trọng của mạng xã hội đó là tìm friend của họ trên mạng đó. Để
làm việc đó, công nghệ websemantic sử dụng công nghệ FOAF để đánh dấu friends của
user. FOAF đưa lại một số lợi ich: danh sách bạn của họ có thể dễ dàng được hiều bởi
Semantic Web crawlers và các ứng dung Semantic Web. Các ứng dụng có thể dễ dàng
trích xuất danh sách bạn bè từ đó.
FOAF for SemanticBook users
Khi mà một người dùng xem trang người dùng khác họ sẽ thấy link để kết bạn
Add Friend link. Khi người dùng ấn vào Add Friend thì thêm 1 row vào sb_friends table
trong MySQL. Và đồng thời trên trang profile của họ sẽ hiện ra danh sách bạn bè, dưới
định dạng FOAF.
FOAF là viết tắt của "Friend Of A Friend."
Linking your users together with FOAF
FOAF namespace thêm vào một số phần từ để mô tả người và mối quan hệ của họ.
Để đạt được điều này chúng ta thêm liên kết tới FOAF namespace, được định nghĩa bời
URI với foaf, tất cả thẻ FOAFbắt đầu với foaf. Foaf:Person có
3 thuộc tính:foaf:Name, foaf:homepage và foaf:knows.
Listing 7. Ví dụ về FOAF

<rdf:RDF

xmlns:rdf=" />Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 14
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
xmlns:foaf=" /> <foaf:Person rdf:about="#me">
<foaf:name>Rob</foaf:name>
<foaf:homepage rdf:resource="http://url/semanticbook/rob" />
<foaf:knows>
<foaf:Person>
<foaf:name>Alice</foaf:name>
<foaf:homepage rdf:resource="http://url/semanticbook/alice" />
</foaf:Person>
<foaf:Person>
<foaf:name>Bob</foaf:name>
<foaf:homepage rdf:resource="http://url/semanticbook/bob" />
</foaf:Person>
</foaf:knows>
</foaf:Person>
</rdf:RDF>
Expressing FOAF relationships with RDFa
RDFa là một mở rộng cho XHTML cho phép nhúng thông tin RDF vào XHTML.
RDFa mở rộng XHTML với một số attributes cho thẻ html. Trong đó có các attributes đã
tồn tại là rel, rev, name, content, href and src. Các attributes mới thêm vào là about,
property, resource, datatype and typeof.
Để sử dụng RDFa attributes, cần phải có DTD cụ thể vả namespaces như dưới đây
Listing 8. The document header for XHTML+RDFa

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML+RDFa 1.0//EN"
" /><html xmlns=" /> xmlns:foaf=" />FOAF sử dụng RDFa.
Listing 9. FOAF in RDFa


Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 15
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
<div typeof="foaf:Person">
<a property="foaf:name" rel="foaf:homepage"
href="http://url/semanticbook/rob">Rob</a>
<div class="social-network" about="#me" rel="foaf:knows">
<ul>
<li typeof="foaf:Person">
<a property="foaf:name" rel="foaf:homepage"
href="http://url/semanticbook/alice">Alice</a>
</li>
<li typeof="foaf:Person">
<a property="foaf:name" rel="foaf:homepage"
href="http://url/semanticbook/bob">Bob</a>
</li>
</ul>
</div>
</div>
In Listing 10, you used five attributes that have meaning in RDFa, and which are listed in
Table 2.
Table 2. Attributes significant in RDFa
Attribute RDFa
typeof This is equivalent to rdf:type in RDF. The attribute
indicates the class of thing represented by the object
contained within it.
property A property defines a relationship between a thing
(which encloses it) and a literal bit of text.
rel The rel attribute defines a relationship between the
thing and another thing.
about This is equivalent to the rdf:subject in RDF. It

specifies the subject of the element's descendents.
href The href attribute along with rel points to the actual
thing that rel defines the relationship for. This is
equivalent to the rdf:subjectin RDF.
Để kiểm thử RDFa, gửi tới W3C RDFa Distiller.
Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 16
Tiểu luận: Web ngữ nghĩa và khai phá dữ liệu – Nhóm 11
Listing 10. RDF generated from your RDFa markup. Compare with Listing 8

<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:foaf=" /> xmlns:rdf=" /> <rdf:Description rdf:about="http://url/semanticbook/network/rob#me">
<foaf:knows>
<foaf:Person>
<foaf:homepage rdf:resource="http://url/semanticbook/bob"/>
<foaf:name>Bob</foaf:name>
</foaf:Person>
</foaf:knows>
<foaf:knows>
<foaf:Person>
<foaf:homepage rdf:resource="http://url/semanticbook/alice"/>
<foaf:name>Alice</foaf:name>
</foaf:Person>
</foaf:knows>
</rdf:Description>
<foaf:Person>
<foaf:homepage rdf:resource="http://url/semanticbook/rob"/>
<foaf:name>Rob</foaf:name>
</foaf:Person>
</rdf:RDF>

Đề tài số 3: Xây dựng web ngữ nghĩa đơn giản 17

×