meta-Hình 1.1: Thị phần các công cụ tìm kiếm trong tháng 7-2006 Với một loạt công cụ tìm kiếm như vậy, trong thực tế người sử dụng vẫn chưa thể truy cập thông tin một cách nhanh chóng và
Trang 1TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Lý Hưng Thịnh
Tìm hiểu RDF-Database, đồ thị ý niệm
Viết ứng dụng minh họa cho phép người dùng
sử dụng đồ thị ý niệm truy vấn, tìm kiếm dữ
liệu RDF trực tuyến
Chuyên ngành : Công nghệ thông tin
Mã số : 01.01.11 Luận văn tốt nghiệp cử nhân khoa học máy tính
Giáo viên hướng dẫn khoa học :
THS VÕ HOÀNG HẢI
Trang 2TỔNG LIÊN ĐOÀN LAO ĐỘNG VIỆT NAM TRƯỜNG ĐẠI HỌC TÔN ĐỨC THẮNG
Lý Hưng Thịnh
Tìm hiểu RDF-Database, đồ thị ý niệm
Viết ứng dụng minh họa cho phép người dùng
sử dụng đồ thị ý niệm truy vấn, tìm kiếm dữ
liệu RDF trực tuyến
Chuyên ngành : Công nghệ thông tin
Mã số : 01.01.11 Luận văn tốt nghiệp cử nhân khoa học máy tính
Giáo viên hướng dẫn khoa học :
THS VÕ HOÀNG HẢI
Trang 3Lời cảm ơn
Xin chân thành cảm ơn khoa Công nghệ thông tin, Toán ứng dụng Đại học Tôn Đức Thắng đã hỗ trợ, tạo điều kiện thuận lợi cho tôi trong quá trình học tập cũng như khoảng thời gian thực hiện đề tài tốt nghiệp
Tôi xin bày tỏ lòng biết ơn sâu sắc đến thầy Võ Hoàng Hải - người thầy đã hướng dẫn trực tiếp tôi trong quá trình nghiên cứu và hoàn thành luận văn này, thầy đã tận tình hướng dẫn, truyền đạt rất nhiều kiến thức bổ ích và thú vị
Tôi cũng gửi lời cảm ơn tới các anh nhóm Java công ty ASAO Entertainment đã cho tôi nhiều góp ý đúng đắn Gia đình
và bạn bè là những nhân tố tinh thần to lớn giúp tôi vượt qua nhiều khó khăn
Tôi cũng muốn gửi lời cảm ơn tới những đàn anh đi trước
đã để lại nhiều tài liệu hay và các nhà khoa học trên toàn thế giới đã phát minh ra thế hệ web mới này Cảm ơn Google, công
cụ tìm kiếm giúp tôi tìm được hầu hết tài liệu tôi cần
Cuối cùng, tôi xin cảm ơn tất cả mọi người, cảm ơn đời đã cho tôi ngày hôm nay
Trang 4Tóm lược
1 Mục đích:
Tìm hiểu một vài công nghệ nền tảng của Semantic Web như: RDF/RDF Schema, ngôn ngữ truy vấn dữ liệu RDF – SPARQL, đồ thị ý niệm, ontology Từ đó xây dựng ứng dụng web minh họa, cho phép người dùng truy vấn, tìm kiếm dữ liệu bằng đồ thị ý niệm
2 Nội dung:
Gồm hai phần: cơ sở lý thuyết và ứng dụng minh họa
a) Lý thuyết:
■ Giới thiệu web ngữ nghĩa
■ RDF/ RDF Schema – thành phần nền tảng của web ngữ nghĩa
Các ngôn ngữ sử dụng: XML, RDF, RDF Schema, Ontology
Ứng dụng được cài đặt bằng các ngôn ngứ lập trình: Java, JavaScript
Sử dụng công cụ hỗ trợ: protege
4 Kết quả:
viết báo cáo luận văn các nội dung kể trên
Chương trình ứng dụng minh hoạ: CGQueryTourist
Trang 5Mục lục
Chương 1: Giới thiệu đề tài - 4 -
1.1 Bối cảnh 4
1.2 Mục tiêu và phạm vi 8
Chương 2: Web ngữ nghĩa 10
2.1 Web ngữ nghĩa là gì? 10
2.2 Cấu trúc của một Semantic Web 12
Chương 3: RDF - Nền tảng Semantic Web 14
3.1 Giới thiệu: 14
3.2 Các khái niệm cơ bản: 14
3.2.1 Namespace: 14
3.2.2 Qualified name(QName) và cách sử dụng 14
3.2.3 Mô hình RDF ( RDF Model) 15
3.3 Cấu trúc RDF/XML 20
3.3.1 Cú pháp RDF/XML cơ bản 20
3.3.2 RDF Container 20
3.3.3 RDF Collection 21
3.4 RDF Schema 21
3.5 Kết luận: 22
Chương 4: Truy vấn dữ liệu RDF 23
4.1 Giới thiệu 23
4.2 Tạo một câu truy vấn đơn giản 23
4.3 Cú pháp của câu truy vấn 24
4.4 Blank node 25
4.5 Những dạng cú pháp khác 26
4.6 RDF Collections 27
4.7 RDF Literal 27
4.8 Ràng buộc dữ liệu 28
4.8.1 Thêm vào kiểu Optional 29
4.8.2 Ràng buộc trong khối Optional 30
4.8.3 Nhiều khối Optional 31
4.8.4 Khối Optional lồng nhau 31
4.9 Các phép toán và điều kiện trên câu truy vấn 32
4.9.1 Phép hội 32
4.9.2 Phép chiếu 33
4.9.3 Distinct 33
4.9.4 ORDER BY 34
Trang 64.9.5 LIMIT 34
4.9.6 Lựa chọn biến được trả về 35
4.10 Kết luận: 35
Chương 5: Ontology 36
5.1 Khái niệm 36
5.2 OWL (Ontology Web Language) 38
5.3 Ngôn ngữ con của của OWL 39
5.3.1 OWL Full: 39
5.3.2 OWL DL: 39
5.3.3 OWL Lite: 40
5.4 Các thành phần Class: 41
5.5 Các thành phần Properties 41
5.6 Tổng kết 42
Chương 6: Đồ thị ngữ nghĩa 43
6.1 Khái niệm: 43
6.2 Mô tả câu truy vấn bằng đồ thị ý niệm: 44
6.3 Phân loại cách thức biểu diễn của CG: 45
6.4 Mở rộng thuộc tính: 46
6.5 Kết luận: 47
Chương 7: Xây dựng ứng dụng 48
Chức năng ứng dụng: 48
Cách thức hoạt động: 48
Các yêu cầu của ứng dụng: 48
Yêu cầu lưu trữ: 48
Yêu cầu giao diện: 48
Yêu cầu chức năng: 48
Yêu cầu phi chức năng: 49
Mô hình ứng dụng: 50
Kiến trúc phía Client: 51
Kiến trúc phía Server: 52
Các loại thông điệp truyền nhận client – server 56
Danh sách Object: 56
Danh sách thuộc tính của Object: 57
Danh sách Relation: 57
Mô hình yêu cầu truy vấn: 57
Kết quả tìm kiếm: 58
Các bố sung ở client, trên nền của Openjacob: 59
Vẽ đối tượng: 59
Trang 7 Tạo/xóa/sửa thuộc tính: 59
Vẽ quan hệ: 59
Thời điểm tạo quan hệ: 60
Thanh công cụ: 61
Dịch đồ thị ý niệm về XML: 61
Phân tích kết quả trả về của Server: 62
Các thuật toán chi tiết: 62
Tìm thuộc tính của kiểu đối tượng: 62
Tìm kiểu dữ liệu của thuộc tính: 63
Tìm quan hệ giữa hai kiểu đối tượng: 63
Chuyển đồ thị ý niệm về dạng XML: 64
Chuyển dữ liệu XML về Đối tượng: 65
Tạo câu truy vấn từ các đối tượng: 65
Giao diện của ứng dụng: 66
Trang chủ: 66
Trang hiển thị kết quả: 69
Trang hiển thị mã XML: 69
Ví dụ: 69
Chương 8: Tổng kết 73
Tài liệu tham khảo 74
Phụ lục 75
Trang 8Chương 1: Giới thiệu đề tài
Chúng ta đang chìm ngập trong thông tin
nhưng lại khát khao tri thức
(John Naisbitt)
1.1 Bối cảnh
Web đang chuyển mình vào thời kỳ mới tinh tế hơn Chúng ta đã từng tốn thời gian chỉ cho việc ngao du trên Internet, đọc và tải về bất cứ thứ gì có thể tìm thấy Giờ đây chúng ta có cơ hội để thể hiện cái tôi của mình qua việc chia sẻ quan điểm, hình ảnh; trao đổi với người khác bằng văn bản, tiếng nói và video hay bổ sung dữ liệu của mình vào bản đồ thế giới
Các ứng dụng chạy trong trình duyệt giờ đây làm việc nhanh không kém các ứng dụng cài đặt trên PC, đó là nhờ các kỹ thuật lập trình mới như Ajax (Asynchronous JavaScript and XML) và Ruby on Rails Các công nghệ mới cho phép thực hiện nhiều tác vụ hơn tại PC người dung, điều này có nghĩa ít phải trao đổi qua lại với máy chủ hơn Các chương trình chạy trên trình duyệt có thể tương tác với website tốt hơn, dễ dàng hơn Ví dụ như Google, Amazon và các site lớn khác cho phép mọi người tạo ứng dụng móc nối tới dữ liệu của mình thong qua thư viện lập trình API
Việc chuyển từ hưởng thụ sang tham gia là thay đổi then chốt trong cuộc cách mạng Web 2.0 Một số người khác gọi nó là “Open API” (thư viện mở) ám chỉ việc chia sẻ thư viện hàm API Có thể nói năm 2006 là năm bùng nổ của các trang Web 2.0:
Các mạng xã hội trực tuyến: MySpace, FaceBook, Yahoo 360, Opera Community
Website cho phép làm việc: JotSpot: các thành viên ở xa nhau làm việc trên cùng một trang; ThinkFree: có thể làm gần đủ mọi thứ như với các ứng dụng Office (Word, Excel và Powerpoint) của Microsoft; Writeboard: chia sẻ ý tưởng trực tuyến (writeboard.com); Basecamp: quản lý dự án (www.basecamphq.com); HipCal: lên lịch làm việc trực tuyến (hipcal.com); Digg: săn lùng tin tức công nghệ (www.digg.com)
Trang 9 Chia sẻ hình ảnh, video: Flickr: flickr.com, Picaboo: picaboo.com,
YouTube: www.youtube.com, Google video: video.google.com
Bản đồ trực tuyến: Google Earth: earth.google.com, Yahoo Maps:
maps.yahoo.com, GeoBloggers: thông tin địa lý (geobloggers.com), MapLandia: đem cả thế giới đến PC (maplandia.com), Trulia: tìm nhà trực tuyến (www.trulia.com)
Thật sự, Web 2.0 không phải là một cái gì đó hoàn toàn mới mà là sự phát triển
từ Web hiện tại Nó vẫn là Web như chúng ta dùng lâu nay, chỉ có điều giờ đây chúng ta làm việc với Web theo cách khác Các website không còn là các “ốc đảo”
mà trở thành những nguồn thông tin và chức năng, hình thành nên môi trường điện toán phục vụ các ứng dụng web và người dùng Xu hướng chuyển đổi sang Web 2.0 đang diễn ra mạnh mẽ và là xu thế tất yếu
Thế nhưng, điều đó đồng nghĩa với việc gia tăng một cách chóng mặt các trang web, cũng như số lượng thông tin mà nó cung cấp Tuy nhiên, lượng thông tin khổng lồ đó cũng tạo ra những khó khăn lớn trong việc tìm kiếm và chia sẻ thông tin trên WWW Sự phát triển nhanh chóng đó đã thúc đẩy sự ra đời của một thế hệ web
mới, web ngữ nghĩa (Semantic Web) Một công nghệ mới cho phép máy tính “hiểu”
được thông tin và dữ liệu biểu diễn dưới dạng thích hợp với con người
Theo định nghĩa của Tim Berners Lee, giám đốc tổ chức World Wide Web Consortium (http://www.w3c.org), đồng thời là cha đẻ của WWW, Web ngữ nghĩa là
sự mở rộng của WWW hiện tại bằng cách thêm vào các mô tả ý nghĩa (hay ngữ nghĩa) của thông tin mà máy tính có thể “hiểu” và do vậy cho phép sử lý thông tin hiệu quả hơn Như vậy Web có ngữ nghĩa sẽ bao gồm các thông tin được biểu diễn theo cách truyền thống cùng với ngữ nghĩa của các thông tin này được biểu diễn một các tuờng minh Việc thêm phần ngữ nghĩa cung cấp thêm tri thức cho các chương trình (agent), giúp nâng cao chất lượng phân loại, tìm kiếm, trao đổi thông tin
Sự phát triển mạnh mẽ của các công cụ tìm kiếm (search engine và search engine) đã minh chứng cho điều này Các công cụ được sử dụng nhiều nhất phải kể đến là Google, Yahoo, MSN, Ask, … Hình dưới đây cho thấy thị phần của các công cụ tìm kiếm trong tháng 7 năm 2006
Trang 10meta-Hình 1.1: Thị phần các công cụ tìm kiếm trong tháng 7-2006
Với một loạt công cụ tìm kiếm như vậy, trong thực tế người sử dụng vẫn chưa thể truy cập thông tin một cách nhanh chóng và hiệu quả nhất Phần lớn các công cụ
kể trên vẫn chỉ cho phép người dùng tìm kiếm trên các từ khóa mà việc tìm kiếm này đôi khi chưa đúng và đủ Lấy ví dụ, một người muốn tìm kiếm các tài liệu liên quan đến danh tướng Trần Hưng Đạo chẳng hạn Người đó sẽ phải nhập vào các công cụ tìm kiếm từ khóa “Trần Hưng Đạo” Hình 1-2 cho thấy 5 kết quả đầu tiên trả về từ Google
Hình 1.2: Kết quả tìm kiếm trả về từ Google
Trang 11Như ta đã thấy, trong số những kết quả trả về đầu tiên có cả tài liệu về trường PTTH Trần Hưng Đạo hay đền thờ Trần Hưng Đạo, không liên quan gì đến nội dung
mà ta định tìm kiếm Hơn nữa, giả sử có một trang web nào đó mà chỉ dùng một tên khác của con người này như là Trần Quốc Tuấn, Hưng Đạo Vương thì trang web đó
sẽ không được Google trả về Đó cũng là vấn đề chung mà các công cụ tìm kiếm hiện nay đều gặp phải
Với mục đích giúp người sử dụng có thể dễ dàng khai thác kho tri thức đồ sộ
trên mạng, người ta đã bắt đầu nói nhiều đến thuật ngữ Web có ngữ nghĩa (Semantic Web) Với thế hệ mới này của Web, máy tính có thể hiểu tốt hơn nội dung của trang
Web, từ đó việc tìm kiếm sẽ trở nên chính xác và hiệu quả hơn Một hướng tiếp cận mới trong lĩnh vực tìm kiếm là ta sẽ xây dựng một công cụ tìm kiếm mới không dựa trên từ khóa mà dựa trên thực thể, tức là tìm kiếm trên ngữ nghĩa của đoạn văn bản
mà người dùng nhập vào
Xét ví dụ trên khi ta áp dụng công nghệ của thế hệ web mới này, máy tính sẽ nhận ra được “Trần Hưng Đạo” là một định danh cho nhiều thực thể khác nhau: con người, đền thờ, trường học, con đường Khi đó người dùng cần phải chọn một thực thể nhất định, từ đó kết quả tìm kiếm sẽ được giới hạn và chính xác hơn rất nhiều Không chỉ có thể tìm kiếm các thực thể khác nhau về loại, công cụ tìm kiếm mới dựa trên ngữ nghĩa còn có thể tìm kiếm dựa trên thông tin mô tả mà người dùng nhập vào Ví dụ, người dùng có thể đánh vào “nhà máy bia Tiger ở thành phố Hồ Chí Minh”, công cụ sẽ trả về đúng các tài liệu liên quan đến nhà máy bia đó mà không phải là một nhà máy bia Tiger ở Hà Nội hay một thành phố khác Và khi đó người tìm kiếm tiết kiệm được rất nhiều thời gian
Một viễn cảnh xa hơn mà mọi người trông chờ vào thế hệ mới của Web này là khả năng trả lời những câu hỏi tìm kiếm phức tạp và có tính suy luận Ví dụ như: “tìm kiếm các tài liệu liên quan đến các thành phố ở Việt Nam có dân số lớn hơn 1 triệu người” Nếu làm được điều này, có thể nói mọi thông tin đều ở trong tầm tay của con người
Trang 121.2 Mục tiêu và phạm vi
Mục tiêu của luận văn là xây dựng ứng dụng có khả năng truy vấn tri thức bằng đồ thị ý niệm, bằng cách cho phép người dùng vẽ các mô hình theo phương pháp trực quan sinh động, sau đó sẽ được một module để chuyển mô hình trên về ngôn ngữ truy vấn SPARQL – ngôn ngữ truy vấn tri thức biểu diễn bằng RDF/RDFS nhằm hỗ trợ người dùng dễ dàng hơn trong quá trình sử dụng
Để đạt được mục tiêu trên, tôi phải tìm hiểu và nắm bắt được các kỹ thuật nền tảng của web ngữ nghĩa như: RDF, RDF Schema, ngôn ngữ truy vấn dữ liệu RDF, đồ thị ý niệm, ontology Kết quả của việc tìm hiểu này sẽ được báo cáo lần lượt trong phần lý thuyết của luận văn
Tôi đã xây dựng ứng dụng dựa trên mô hình hai tầng Client – Server, sử dụng Ajax trong quá trình truyền/nhận dữ liệu bất đồng bộ Phía người dùng được xây dựng bằng ngôn ngữ JavaScript, cho phép vẽ mô hình để truy vấn Phía server được xây dựng bằng ngôn ngữ Java, có nhiệm vụ làm một server trung gian, giải quyết các yêu cầu tìm kiếm thông tin bằng cách phân tích nội dung yêu cầu cần truy vấn thành ngôn ngữ truy vấn – trong ứng dụng này ngôn ngữ truy vấn được sử dụng là SPARQL – và câu truy vấn này sẽ gửi tới một server khác (Joseki) để tìm kiếm dữ liệu Bằng cách tương tự ta có thể viết nhiều module khác nhau cho các ngôn ngữ truy vấn khác nhau và chỉ cần cấu hình lại là ta có thể tương tác với các server truy vấn dữ liệu RDF khác nhau
Với yêu cầu trên, ta phải xây dựng một ứng dụng rich client, có nghĩa là: các thao tác vẽ, xóa, tạo quan hệ giữa các thực thể phải được xử lý ở phía người dùng, giúp tăng tính hiệu quả của ứng dụng, hỗ trợ tối đa các yêu cầu người dùng Có nhiều giải pháp được đưa ra nhằm giải quyết yêu cầu trên:
1 Sử dụng GWT Framework (Google Web Toolkit Framework):
Được ra đời vào tháng 5 năm 2006, GWT là một tập các công cụ phát triển, các tiện ích lập trình và widget cho phép tạo ứng dụng rich client GWT có đặc điểm rất hay: viết mã cho client bằng ngôn ngữ Java, sao đó sẽ được framework chuyển thành Javascript
Với giải pháp này, chúng ta hoàn toàn có khả năng xây dựng ứng dụng với yêu cầu trên Nhưng phải tốn khá nhiều công sức để lập trình các thao tác vẽ, xóa, tạo kết nối
2 Sử dụng Open Jacop:
Trang 13 Open Jacop là một framework mã nguồn mở, cho phép vẽ các hình cơ bản dạng 2D, được viết bằng ngôn ngữ Javascript
Framework đã xây dựng sẵn các lớp Class, Connector, Port… bên cạnh đó còn bổ sung thêm các thao tác kéo thả (Drag and Drop) Framework này đã giúp ta khá nhiều trong việc xây dựng ứng dụng phía client Công việc còn lại là đọc mã, tùy biến chúng, tương tác với phía server
Trong luận văn này, tôi sẽ dùng Open Jacop và bổ sung thêm kỹ thuật Ajax (Asynchronous Javascript and XML) nhằm mục đích tương tác với server, giúp ứng dụng nhanh hơn, hoạt động mượt mà hơn Bên cạnh đó, tôi cũng sử dụng thêm Yahoo User Interface (YUI), với mục đích xây dựng giao diện
Với những mục tiêu và phạm vi đã được đề ra như trên, tôi xin trình bày những gì đã tìm hiểu được và kết quả của đề tài trong các chương sau
Trang 14Chương 2: Web ngữ nghĩa
I have a dream for the Web [in which computers] become capable of analyzing all the data on the Web – the content, links, and transactions between people and computers A
‘Semantic Web’, which should make this possible, has yet to emerge, but when it does, the day-to-day mechanisms of trade, bureaucracy and our daily lives will be handled by machines talking to machines The
‘intelligent agents’ people have touted for ages will finally materialize
sẻ và trao đổi tin Chương trình máy tính không hiểu được thông tin và dữ liệu biểu diễn dạng phù hợp với con người
Điều này đã thúc đẩy sự ra đời của ý tưởng "Web ngữ nghĩa"(Semantic web), một thế hệ mới của Web, mà lộ trình phát triển của nó đã được Tim Berners-Lee, cha
đẻ của Web, phác thảo ra chỉ khoảng vài năm về trước "Web ngữ nghĩa" là sự mở rộng của Web hiện tại mà trong đó thông tin được định nghĩa rõ ràng sao cho con người và máy tính có thể cùng làm việc một cách hiệu quả hơn Mục tiêu của "Web
Trang 15ngữ nghĩa" là để phát triển các chuẩn chung và công nghệ ngày nay cho phép máy tính có thể hiểu được thông tin trên Web,sao cho chúng có thể hỗ trợ tốt hơn việc tìm kiếm thông tin, tích hợp dữ liệu, tự động hóa công việc
Ví Dụ 1: Phiên bản web mới của Berners-Lee tiến hành như một chuỗi các cơ
sở dữ liệu nối tiếp nhau với nguồn thông tin tập trung theo một biểu mẫu đã được xây dựng từ trước Bên trong kết cấu ấy được bổ sung các hệ thống ý thức để máy tính có thể hiểu được Chẳng hạn, khi bạn dùng công cụ Google
để tìm kiếm một người nào đó thì trong Web 3.0, nhân vật ấy sẽ được miêu tả đầy đủ với nguồn thông tin rất dồi dào, từ ngày sinh, chức danh trong công việc, địa chỉ nhà, sở thích đến thứ tự trong gia phả
Ví dụ 2: Người sử dụng Semantic Web sẽ có được những kết nối rõ ràng nhất với nơi làm việc, người thân, lịch làm việc và những sở thích của nhau Giả sử muốn sắp xếp một bữa tiệc sau một hội nghị, trước tiên bạn sẽ lướt qua cuốn sổ địa chỉ và gửi email xem ai có thể tham gia hội nghị, sau đó gửi tiếp thư mời
dự tiệc Kế đó, tất cả khách mời cùng chủ tiệc cùng nhau bàn luận về thời gian
và địa điểm ăn tiệc qua email
Ví dụ 3: Trong Semantic Web, phần mềm trợ lý của bạn sẽ biết trước những gì
sẽ liên quan đến việc sắp xếp bữa tiệc nên thay vì bạn phải gửi hàng tá email,
nó sẽ chắt lọc những đối tượng dự hội nghị rồi lên danh sách khách dự tiệc Thậm chí nó còn có thể thông qua cuốn sổ địa chỉ của bạn để xem những ai đang sống ở đâu và lúc nào tổ chức tiệc là phù hợp nhất Một khi danh sách khách mời đã được bạn chấp thuận, phần mềm trợ lý sẽ xem xét địa điểm tổ chức tiệc, cuối cùng sẽ gửi chỉ dẫn đến mọi người
Ý tưởng liên kết các nguồn tài nguyên khác nhau(hình ảnh, con người, các khái niệm) cho phép ta mở rộng Web thành một môi trường mới với tập các mối quan hệ mới( như hasLocation, worksFor, isAuthorOf,hasSubjectOf,dependsOn,…) giữa các nguồn dữ liệu, tạo ra các mối liên hệ ngữ cảnh, điều mà Web hiện tại chưa thể làm được
Trang 16Ví dụ:
2.2 Cấu trúc của một Semantic Web
Hình 2.1: Cấu truc Semantic web
Trang 17 Lớp Unicode & URI: nhằm bảo đảm việc sử dụng tập kí tự quốc tế và
cung cấp phương tiện nhằm định danh các đối tượng trong Semantic Web
Lớp XML cùng với các định nghĩa về namespace và schema (lược đồ) bảo đảm rằng chúng ta có thể tích hợp các định nghĩa Semantic Web với các
chuẩn dựa trên XML khác
Lớp RDF [RDF] và RDFSchema [RDFS]: ta có thể tạo các phát biểu
(statement) để mô tả các đối tượng với những từ vựng và định nghĩa của
URI, và các đối tượng này có thể được tham chiếu đến bởi những từ vựng
và định nghĩa của URI ở trên Đây cũng là lớp mà chúng ta có thể gán các
kiểu (type) cho các tài nguyên và liên kết Và cũng là lớp quan trọng nhất
trong kiến trúc Semantic Web
Lớp Ontology: hỗ trợ sự tiến hóa của từ vựng vì nó có thể định nghĩa mối liên hệ giữa các khái niệm khác nhau
Lớp Digital Signature: được dùng để xác định chủ thể của tài liệu (vd: tác giả của một tài liệu hay một lời tuyên bố)
Các lớp Logic, Proof, Trust: đang trong giai đoạn nghiên cứu và các thể hiện của các ứng dụng giản đơn đang được xây dựng Lớp Logic cho phép viết ra các luật (rule) trong khi lớp Proof thi hành các luật và cùng với lớp Trust đánh giá nhằm quyết định ứng dụng nên hay không nên tin tưởng/chấp nhận (trust) chứng cớ (proof)
Trang 18Chương 3: RDF - Nền tảng Semantic Web
3.2 Các khái niệm cơ bản:
Namespace là một tập các tên( name) , được định danh bởi các URI, được sử dụng trong các tài liệu XML như các element type và attribute name Một namespace được khai báo sử dụng một tập các thuộc tính có đã được định nghĩa Tên của một thuộc tính phải có xmlns hay xmlns: như là một tiếp đầu ngữ
Ta có một ví dụ khai báo cho một namespace sau:
<x xmlns:edi='http://ecommerce.org/schema'> </x>
Tiếp đầu ngữ “edi” dùng để chỉ URI http://ecommerce.org/schema
3.2.2 Qualified name(QName) và cách sử dụng
Một QName bao gồm một tiếp đầu ngữ (prefix) mà đã được gán trước
đó bởi một URI theo sau là dấu ‘:’ và tên cục bộ Ví dụ như nếu một QName
có prefix là foo được gán cho một URI là http://example.org/somewhere/,
ta sẽ có QName foo:bar là cách viết tắt của địa chỉ URI
Trang 19<x xmlns:edi='http://ecommerce.org/schema'>
<lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>
Một số QName phổ biến hay sử dụng:
Mô hình cơ bản của RDF gồm ba đối tượng sau:
Tài nguyên (Resources): là tất cả những gì được mô tả bằng biểu thức RDF mà có một URI cụ thể Nó có thể là một trang Web, ví dụ như trang http://www.w3.org/Overview.html, cũng có thể là một phần của trang Web, hoặc là một tập các trang Web,
Thuộc tính (Property): là một nguồn tài nguyên được đặt tên, như:
“Tac_Gia” hay “Dien_dan”
Giá trị của thuộc tính (Property value): là một giá trị của một thuộc tính nào đó VD: “HungThinh” hay “Diễn đàn Java Việt Nam”, hay thậm chí có thể là một nguồn tài nguyên khác như
http://www.javavietnam.org
Sự kết hợp của một nguồn tài nguyên, một thuộc tính và một giá trị của thuộc tính được đặt trong một cái phát biểu có tên là Statement Mỗi phát biểu gồm ba thành phần sau:
o Subject (Chủ thể): địa chỉ hay vị trí tài nguyên muốn mô tả, thông thường thì đây là chuỗi định URL hoặc URI
Trang 20o Predicate (Vị ngữ): xác định tính chất của tài nguyên
o Object (Bổ ngữ): nội dung gán cho thuộc tính
Thực chất subject, predicate, object chỉ là tên gọi khác của resource, property, property value
Phát biểu trên được phân ra thành các phần sau:
Subject http://www.hungthinh.org/index.html Predicate http://purl.org/dc/elements/1.1/creator Object http://www.hungthinh.org/staffid/12345
Chúng ta đã biết URI dùng để mô tả bất cứ cái gì trên Web, cho nên ở phát biểu trên thay vì phải dùng từ “creator” và “Hung Thinh”, ta sẽ dùng URI
“http://purl.org/dc/elements/1.1/creator“ và “http://www.hungthinh.org/staffi/12345”
để mô tả cho từng khái niệm trên
Phát biểu trên được biểu diễn dưới dạng một tripple như sau:
Trang 21
Hình 3.1: Mối quan hệ giữa các thành phần trong triple
Phát biểu trên được mô hình hóa bằng đồ thị có hướng sau:
Literal có hai kiểu sau : plain literal hay là typed literal:
Plain Literal là một chuỗi được kết hợp với một tag tùy ý Trong ngôn ngữ tự nhiên ta có thể gọi nó là một kiểu text
Typed literal được hình thành bằng cách kết hợp một chuỗi với một định danh URI để biểu diễm một kiểu dữ liệu đặc biệt nào nó
3.2.3.4 Tripple và cách sử dụng namespace
Đôi khi không thuận tiện để biểu diễn các phát biểu dưới dạng đồ thị, ta
có thể dùng cách viết dưới dạng tripple Ta có thể viết lại như sau:
Trang 22Như vậy ta thấy rằng việc khai báo các URI thông qua một QName sẽ rất thuận lợi, nó làm cho các URI này ngắn gọn và dễ hiểu Hơn nữa khi có một thay đổi về URI thì ta chỉ việc thay đổi ở phần namespace mà chúng ta đã khai báo chứ không cần phải thay đổi tất cả URI trong bộ dữ liệu của mình
3.2.3.5 Kiểu dữ liệu có cấu trúc và Blank node
Nếu mọi dữ liệu trên Web đều rõ ràng thì thật dễ dàng để khai báo Tuy nhiên, hầu hết các dữ liệu trên Web đều liên quan đến các cấu trúc phức tạp Trong ví dụ ngày của trang web được tạo có thuộc tính khai báo là exterms:creation-date, với một kiểu dữ liệu là plain literal Tuy nhiên, giả sử như giá trị của thuộc tính exterms:creation-date cần phải lưu trữ thông tin về ngày,tháng ,năm độc lập với nhau thì phải biểu diễn vấn đề này như thế nào? Hay là trong trường hợp thông tin cá nhân của Mr John Smith, giả sử khi mô tả địa chỉ của Mr John thì giá trị của nó sẽ được viết dưới dạng một plain literal, như trong tripple sau:
exstaff:85740 exterms:address
"1501 Grant Avenue, Bedford, Massachusetts 01730"
Tuy nhiên, giả sử rằng địa chỉ này cần phải được chia thành một cấu trúc bao gồm các thành phần riêng biệt như đường, thành phố, bang, và mã vùng Làm thế nào có thể làm được trong RDF?
Cấu trúc thông tin như trên sẽ được mô tả trong RDF bằng cách xem thông tin kết hợp là một resource, sau đó tạo ra các phát biểu về resource mới
Trang 23này; hay nói cách khác mục đích của blank node để diễn đạt tài nguyên nó đại diện mà không thể đặt tên tại thời điểm sử dụng
Vì vậy, trong đồ thị RDF , để tạo ra địa chỉ của Mr John Smith từ các thành phần của nó, một node mới sẽ được tạo ra để biểu diễn khái niệm địa chỉ của Mr John, với một URI để định danh cho nó, ví dụ như
http://www.example.org/addressid/85740 (viết tắt là exaddressid:85740) Các phát biểu RDF ( bao gồm các cung và node) sau đó sẽ được biểu diễn ra trong đồ thị với node mới vừa tạo là subject Ta hãy xem tripple sau:
Exstaff:85740 exterms:address exaddressid:85740 exaddressid:85740 exterms:street "1501 Grant Avenue" exaddressid:85740 exterms:city "Bedford"
exaddressid:85740 exterms:state "Massachusetts" exaddressid:85740 exterms:postalCode "01730" Cách biểu diễn thông tin có cấu trúc như vậy đòi hỏi phải có một địa chỉ URI exaddressid:85740 để mô tả khái niệm kết hợp (địa chỉ của Mr John) Những khái niệm như thế này có thể không được sử dụng bởi các thành phần khác trong đồ thị và chính vì vậy định danh này không cần thiết Chính vì vậy
ta nên dùng một node trống (blank node) để biểu diễn node này
Kết quả là bằng cách dùng một định danh (blank node identifiers), có dạng
_:name, để chỉ sự hiện diện của một blank node Ví dụ như, trong ví dụ này định danh _:johnaddress được sử dụng để chỉ blank node( là địa chỉ của Mr John) Ta có thể viết lại tripple sau:
exstaff:85740 exterms:address _:johnaddress
_:johnaddress exterms:street "1501 Grant Avenue"
Trang 24_:johnaddress exterms:city “Bedford"
_:johnaddress exterms:state "Massachusetts"
Ví dụ: ex:index.html exterms:creation-date "August 16, 1999"
Một cú pháp RDF/XML để biểu diễn cho phát biểu trên như sau:
RDF định nghĩa 3 loại đối tượng container: Bag, Sequence, Alternative
Bag là danh sách không có thứ tự của các tài nguyên hoặc các giá trị
Nó được dùng để khai báo thuộc tính có nhiều giá trị và thứ tự của
Trang 25những giá trị này không cần quan tâm đến Bag cho phép những giá trị
có thể trùng lặp nhau
Sequence là danh sách có thứ tự của các tài nguyên hoặc các giá trị Nó được dùng để khai báo thuộc tính có nhiều giá trị và thứ tự của những giá trị này cần được quan tâm đến Chẳng hạn như dùng Sequence để lưu trữ các giá trị theo thứ tự bảng chữ cái Sequence cho phép những giá trị có thể trùng lặp nhau
Alternative là một danh sách các tài nguyên hoặc các giá trị, được dùng
để biểu diễn các giá trị lựa chọn của một thuộc tính Để biểu diễn một tập hợp các tài nguyên, RDF dùng một tài nguyên mới để xác định một tập tài nguyên cần được biểu diễn Tài nguyên mới này phải được khai báo như là một thể hiện của một trong các loại đối tượng container được
đề cập ở trên Thuộc tính type được dùng để khai báo loại đối tượng container được sử dụng Mối quan hệ thành viên giữa container và các tài nguyên của tập hợp được xác định bằng những tên đơn giản như :
“_1”, “_2”, “_3”
3.3.3 RDF Collection
Cũng dùng trong mục đích định nghĩa ra những tập hợp Nhưng RDF container
là định nghĩa một tập hợp mở, vì nó không báo rằng không còn có thêm những thành viên mới nữa Trong khi đó, RDF collection cho phép khai báo một tập hợp đóng Cấu trúc của RDF Collection tương tự như một danh sách, có phần tử đầu (rdf:first), phần tử kế (rdf:rest)và phần tử cuối(rdf:nil)
3.4 RDF Schema
RDF cung cấp một cách để mô tả các phát biểu đơn giản về các resource,
sử dụng các thuộc tính và giá trị đã được định nghĩa trước Tuy nhiên, nhu cầu của con người đỏi hỏi phải có một khả năng để tự định nghĩa các thuật ngữ mà
họ muốn dùng trong các phát biểu đó Ví dụ như, công ty example.com muốn
mô tả các lớp như exterms:Tent, và sử dụng thuộc tính exterms:model, exterms:weighInKg và exterms:packedSize để mô tả chúng hoặc là một ứng dụng nào đó muốn mô tả các lớp như ex3:Person, ex3:Company và các thuộc tính như ex3:age, ex3:jobTitle, ex3:stockSymbol, ex3:numberOfEmployees Tuy nhiên mô hình dữ liệu RDF không cung cấp những cơ chế cho việc khai báo các thuộc tính, cũng như không cung cấp bất kỳ cơ chế nào để có thể định nghĩa ra những quan hệ giữa các thuộc tính và các tài nguyên Đó sẽ là vai trò của RDF Schema, hay nói cách khác RDF Schema được dùng để định
Trang 26nghĩa các tài nguyên và thuộc tính cũng như các quan hệ qua lại giữa tài nguyên với tài nguyên, giữa thuộc tính với thuộc tính, và giữ tài nguyên với thuộc tính
Tương tự XML Schema, RDF Schema là một tập những từ khoá cho phép người dùng định nghĩa bộ từ vựng cụ thể cho dữ liệu RDF (ví dụ như: hasName, hasPrice, authorOf, ) và định nghĩa các quan hệ của nó đến các đối
tượng liên quan Chẳng hạn như hasName ta định nghĩa quan hệ của nó trên
hai đối tượng: ‘http://www.w3c.org/employee/id1321’ và “Jim Lerners” như sau:
hasName(‘http://www.w3c.org/employee/id1321’,“Jim Lerners”)
3.5 Kết luận:
RDF cung cấp cơ sở để biểu diễn và xử lý siêu dữ liệu RDF có mô hình
dữ liệu dựa trên đồ thị Trọng tâm của khái niệm là tài nguyên, thuộc tính
và mệnh đề (statement) Một mệnh đề là một bộ ba: tài nguyên – thuộc
tính – giá trị
RDF có cú pháp dựa trên XML XML và RDF bổ sung lẫn nhau, bởi vì RDF hỗ trợ ngữ nghĩa RDF cho phép phát triển tri thức, tăng khả năng chia sẻ, tái sử dụng
RDF độc lập miền RDF Schema cung cấp cơ chế để mô tả một lĩnh vực nhất định RDFS là một ngôn ngữ ontology cơ bản Khái niệm chính của RDFS
là lớp, các quan hệ lớp con, thuộc tính, các quan hệ thuộc tính con, miền, khoảng
và giới hạn
Trang 27Chương 4: Truy vấn dữ liệu RDF
4.1 Giới thiệu
Như chúng ta đã biết RDF là một cách để mô tả thông tin về các tài nguyên Web một cách linh động Nó được sử dụng để mô tả nhiều loại thông tin ví dụ như thông tin về cá nhân, về hệ thống mạng toàn cầu, metadata về mutimedia như music
và hình ảnh cũng như là cung cấp một phương tiện để tích hợp các nguồn tài nguyên khác Với một lượng thông tin quá lớn như vậy, làm thế nào dữ liệu có thể được truy vấn nhanh chóng và chính xác? Vì vậy tổ chức W3C đã phát triển một ngôn ngữ chuẩn để truy vấn dữ liệu RDF với việc cung cấp nhiều chức năng cho các developer
và end users cách để viết và thực thi một câu truy vấn Chương này mô tả ngôn ngữ truy vấn Protocol And RDF Query Language(SPARQL) để truy cập dữ liệu RDF được phát triển bởi nhóm RDF Data Access Working Group-một phần trong hoạt động của Semantic Web Một RDF Graph là một tập các triple, mỗi triple bao gồm bộ
ba subject, predicate và object (như đã giới thiệu ở chương 3) Những triple này có thể đến từ nhiều tài nguyên khác nhau Ví dụ như: chúng có thể đến từ một tài liệu RDF , chúng có thể được suy ra từ các RDF triple khác hoặc là chúng có thể là sự mô tả RDF của các dữ liệu được lưu trữ từ các định dạng khác như XML hay là từ một cơ
Trích thông tin từ các đồ thị con
Xây dựng một đồ thị RDF mới dựa trên thông tin trong đồ thị truy vấn
4.2 Tạo một câu truy vấn đơn giản
Một câu truy vấn bao gồm 2 mệnh đề, mệnh đề SELECT và mệnh đề WHERE Mệnh đề SELECT định danh các biến mà ứng dụng quan tâm và mệnh đề WHERE bao gồm các triple pattern Một triple pattern là một RDF triple nhưng mỗi thành phần (subject, predicate, object) đều có thể là một biến truy vấn Một basic graph pattern là một tập các triple pattern Ngôn ngữ SPARQL dựa trên nền tảng so sánh các graph pattern Graph pattern đơn giản nhất là các triple pattern
Kết quả của câu truy vấn là tất cả các giải pháp mà một câu truy vấn có thể phù hợp với đồ thị được truy vấn Một câu truy vấn có thể có không,một hay nhiều kết
Trang 28quả Ví dụ dưới đây sẽ chỉ ra một câu truy vấn để tìm ra một tựa đề ( title) của một quyển sách từ thông tin trong một đồ thị RDF
4.3 Cú pháp của câu truy vấn
Các giá trị được đặt trong dấu ‘<>’ dùng để chỉ một định danh URI Các giá trị được đặt trong dấu (“ “) là các giá trị literal Biến trong ngôn ngữ truy vấn có giá trị toàn cục Biến thường bắt đầu với kí tự ‘?’ Đôi khi người ta cũng sử dụng kí tự
‘$’ để chỉ một biến, để chỉ rằng nơi mà hệ thống sử dụng ‘?’ như một ký tự thay thế Trong một câu truy vấn, $abc và ?abc đều là biến
Bởi vì các URI có thể được viết rất dài, SPARQL cung cấp một cơ chế viết tắt Tiếp đầu ngữ (prefix) có thể được định nghĩa và một QName sẽ cung cấp một dạng viết làm cho URI có thể ngắn gọn Sau đây là một cách viết tắt cho triple pattern:
Trang 29_:b foaf:mbox <mailto:peter@example.org>
Trang 30Truy vấn:
PREFIX foaf: http://xmlns.com/foaf/0.1/
SELECT ?name ?mbox WHERE { ?x foaf:name ?name ?x foaf:mbox ?mbox }
Kết quả:
"Johnny Lee Outlaw" <mailto:jlow@example.com>
"Peter Goodguy" <mailto:peter@example.org>
4.5 Những dạng cú pháp khác
Danh sách Predicate-Object
Các triple pattern với một subject chung có thể được viết sao cho subject
đó chỉ được viết 1 lần, mỗi triple pattern sẽ được cách nhau bởi dấu ‘;’
?x foaf:name ?name ; foaf:mbox ?mbox Cách viết trên tương tự với cách viết:
?x foaf:name ?name ?x foaf:mbox ?mbox
Trang 31Một cú pháp blank node được viết tắt có thể được kết hợp với những cách viết tắt khác cho các predicate và object chung
[ foaf:name ?name ;foaf:mbox <alice@example.org> ]
Cách viết này tương tự với:
_:b18 foaf:name ?name _:b18 foaf:mbox <alice@example.org>
_:b2 rdf:rest rdf:nil
4.7 RDF Literal
Một RDF Literal trong ngôn ngữ SPAQL được viết như một chuỗi trong dấu (“”), theo sau có thể là một tag optional language ( được chỉ bởi ‘@’) hay là một kiểu optional datatype( được chỉ bởi ‘^^’) Có một dạng viết thuận lợi đối với các kiểu numeric-typed literal như xsd:integer, xsd:double hay là xsd:boolean
Xét các ví dụ về literal sau:
"chat"
"chat"@fr
"xyz"^^<http://example.org/ns/userDatatype>
Trang 32 "abc"^^myNS:myDataType
1, tương tự như "1"^^xsd:integer
1.0e6, tương tự như "1.0e6"^^xsd:double
true, tương tự như "true"^^xsd:boolean
false, tương tự như "false"^^xsd:boolean Truy vấn RDF Literal:
Truy vấn số nguyên( Integer):
SELECT ?v WHERE { ?v ?p 42 }
Câu truy vấn trên cho kết quả là :x bởi vì 42 là cú pháp cho
"42"^^<http://www.w3.org/2001/XMLSchema#integer>
Truy vấn kiểu language tag
SELECT ?x WHERE { ?x ?p "cat" }
Câu truy vấn trên không cho ra kết quả bởi vì giá trị “cat” không cùng kiểu
dữ liệu với giá trị “cat”@en Nhưng câu truy vấn sau lại cho ra kết quả là :z SELECT ?x WHERE { ?x ?p "cat"@en }
Trang 33:book1 ns:price 42 :book2 dc:title "The Semantic Web" :book2 ns:price 23
Kết quả :
"The Semantic Web" 23
Bằng cách có một ràng buộc trên biến “price” chỉ có book2 có thể phù hợp
với nội dung của câu truy vấn
4.8.1 Thêm vào kiểu Optional
Với những ví dụ trên ta thấy rằng mỗi giải pháp của câu truy vấn phải hoàn toàn phù hợp với các thành phần của querry pattern Nhưng với việc thêm vào từ khóa optional ta có thể có nhiều hơn giải pháp , mặc dù mỗi giải pháp này có thể chỉ thỏa một phần của querry pattern
Dữ liệu:
@prefix foaf: <http://xmlns.com/foaf/0.1/>
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> _:a rdf:type foaf:Person
_:a foaf:name "Alice" _:a foaf:mbox <mailto:alice@work.example> _:b rdf:type foaf:Person
_:b foaf:name "Bob"
Truy vấn:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox WHERE { ?x foaf:name ?name OPTIONAL { ?x foaf:mbox ?mbox } }
Trang 34Kết quả:
"Alice" <mailto:alice@example.com>
“Bob” Nếu không có optional trong query pattern thứ 2 kết quả sẽ là:
"Alice" <mailto:alice@example.com>
Như vậy ta thấy nhiệm vụ của optional trong query pattern là chọn tất cả
các giá trị có thể có của query pattern , nếu thỏa sẽ cho ra kết quả, nếu không
thỏa thì cho ra một kết quả rỗng
4.8.2 Ràng buộc trong khối Optional
Ràng buộc có thể được sử dụng trong khối option
Dữ liệu:
@prefix dc: <http://purl.org/dc/elements/1.1/>
@prefix : <http://example.org/book/>
@prefix ns: <http://example.org/ns#> :book1 dc:title "SPARQL Tutorial" :book1 ns:price 42
:book2 dc:title "The Semantic Web" :book2 ns:price 23
Kết quả:
"SPARQL Tutorial" "The Semantic Web"
23
Trang 35Không có price nào cho cuốn sách có tựa đề là ‘SPARQL Tutorial” bởi
vì khối optional không nhận được giá trị nào thỏa mãn biến truy vấn với ràng buộc dữ liệu trên price cho nên sẽ trả về nột giá trị Null
4.8.3 Nhiều khối Optional
Graph pattern được định nghĩa đệ qui Một câu truy vấn có thể có một hay nhiều khối optional và bất kỳ thành phần nào trong query pattern có thể có một phần optional Trong ví dụ này, có 2 optional block
Dữ liệu:
@prefix foaf: <http://xmlns.com/foaf/0.1/> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> _:a foaf:name "Alice"
_:a foaf:homepage <http://work.example.org/alice/> _:b foaf:name "Bob"
_:b foaf:mbox <mailto:bob@work.example>
Truy vấn:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name ?mbox ?hpage WHERE { ?x foaf:name ?name OPTIONAL { ?x foaf:mbox ?mbox } OPTIONAL { ?x foaf:homepage ?hpage } }
4.8.4 Khối Optional lồng nhau
Optional pattern có thể xảy ra trong bất kỳ một pattern nào, kể cả trong một nhóm các graph pattern mà chính nó cũng là một optional, tạo nên một tập các optional pattern lồng Khối optional bên ngoài phải thỏa cho bất kỳ một khối optional bên trong nó Xét ví dụ sau:
Trang 36_:a foaf:name "Alice" _:a foaf:mbox <mailto:alice@work.example> _:a vcard:N _:x
_:x vcard:Family "Hacker" _:x vcard:Given "Alice" _:b foaf:name "Bob" _:b foaf:mbox <mailto:bob@work.example> _:b foaf:N _:z
_:z vcard:Family "Hacker" _:e foaf:name "Ella" _:e vcard:N _:y _:y vcard:Given "Eleanor"
Truy vấn:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX vcard: <http://www.w3.org/2001/vcard-rdf/3.0#>
SELECT ?foafName ?mbox ?gname ?fname WHERE
{ ?x foaf:name ?foafName OPTIONAL { ?x foaf:mbox ?mbox } OPTIONAL { ?x vcard:N ?vc
?vc vcard:Given ?gname OPTIONAL { ?vc vcard:Family ?fname } }
}
Kết quả:
"Alice" <mailto:alice@work.example> "Alice" "Hacker"
“Bob” <mailto:bob@example.com> "Hacker"
Trang 37Dữ liệu:
@prefix dc10: <http://purl.org/dc/elements/1.0/>
@prefix dc11: <http://purl.org/dc/elements/1.1/> _:a dc10:title "SPARQL Query Language Tutorial" _:b dc11:title "SPARQL Protocol Tutorial"
_:c dc10:title "SPARQL" _:c dc11:title "SPARQL (updated)"
Truy vấn:
PREFIX dc10: <http://purl.org/dc/elements/1.0/>
PREFIX dc11: <http://purl.org/dc/elements/1.1/>
SELECT ?title WHERE { { ?book dc10:title ?title } UNION { ?book dc11:title ?title } }
4.9.3 Distinct
Từ khóa chỉ được sử dụng trong mệnh đề SELECT để mỗi giải pháp trong kết quả là phân biệt( tương tự trong cơ sở dữ liệu, các bộ không được trùng nhau)
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT DISTINCT ?name WHERE { ?x foaf:name ?name }
Kết quả: name
Trang 384.9.4 ORDER BY
Tương tự cơ sở dữ liệu ,mệnh để ORDER BY luôn đặt sau mệnh đề
WHERE, nó sẽ nhận kết quả từ mệnh đề WHERE và chỉ lọc kết quả theo điều kiện có trong mệnh đề ORDER BY Một điều kiện trong mệnh đề ORDER BY
có thề là một biến hay là một hàm Hướng của điều kiện là tăng theo mặc định Chúng ta có thể xét cho điều kiện là tăng hay giàm bằng cách sử dụng khóa ASC[ ]( tăng), DESC[ ] ( giảm)
Ta có các ví dụ:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name WHERE { ?x foaf:name ?name } ORDER BY ?name
Sắp xếp theo biến name tăng dần
PREFIX : <http://example.org/ns#>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
SELECT ?name WHERE { ?x foaf:name ?name ; :empId ?emp } ORDER BY DESC[?emp]
Sắp xếp theo biến emp giảm dần
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?name WHERE { ?x foaf:name ?name ; :empId ?emp } ORDER BY ?name DESC[?emp]
Sắp xếp theo biến name tăng dần và biến emp giảm dần
Câu truy vấn chỉ cho phép tối đa 20 giải pháp được trả về
Trang 394.9.6 Lựa chọn biến được trả về
Trong cơ sở dữ liệu quan hệ, kết quả trả về của mỗi câu truy vấn là một
bảng trong đó, các cột là các là các biến, các dòng là các bộ Với ngôn ngữ
SPAQL ta có thể chọn lựa kiểu biến trả về dưới dạng XML hay là RDF
Dữ liệu:
@prefix foaf: <http://xmlns.com/foaf/0.1/> _:a foaf:name "Alice"
_:a foaf:knows _:b _:a foaf:knows _:c _:b foaf:name "Bob" _:c foaf:name "Clare" _:c foaf:nick "CT"
Truy vấn:
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
SELECT ?nameX ?nameY ?nickY WHERE
{ ?x foaf:knows ?y ; foaf:name ?nameX ?y foaf:name ?nameY OPTIONAL { ?y foaf:nick ?nickY } }
Chương này đã trình bày cú pháp của ngôn ngữ truy vấn SPARQL, các biểu
thức, phép toán, từ khóa phục vụ cho quá trình truy vấn dữ liệu Người dùng có thể
truy vấn bất kỳ thông tin nào trên dữ liệu RDF bằng cách sử dung ngôn ngữ truy vấn
SPARQL
Trang 40Ontology thường được sử dụng trong trí tuệ nhân tạo, web ngữ nghĩa, kỹ nghệ
phần mềm, thư viện, kiến trúc thông tin giống như một chuẩn của “biểu diễn tri thức” (knowledge representation) về từ ngữ hoặc một phần của nó Một ontology bao gồm
các thành phần sau:
3 Cá thể (individual): các thể hiện hoặc đối tượng
4 Lớp: các tập hợp (set, collection), khái niệm, kiểu của đối tượng
5 Thuộc tính: các thuộc tính, tính năng, đặc điểm mà các đối tượng có và
có thể đem ra chia sẻ
6 Quan hệ: cách mà các lớp hoặc các đối tượng có thể quan hệ với nhau
7 Giới hạn chức năng (function term): các cấu trúc phức tạp được chuẩn hoá từ các quan hệ cụ thể mà có thể được đặt trong một giới hạn riêng biệt nào đó
8 Sự kiện: sự thay đổi của các thuộc tính hoặc quan hệ
Ontology được mã hoá băng các ngôn ngữ:
Ngôn ngữ truyền thống:
CycL
DOGMA (Developing Ontology-Grounded Methods and Applications)
F-Logic (Frame Logic)
KIF (Knowledge Interchange Format)
Ontolingua based on KIF
KL-ONE
KM programming language
LOOM (ontology)
OCML (Operational Conceptual Modelling Language)
OKBC (Open Knowledge Base Connectivity)
PLIB (Parts LIBrary)