Khi xây dựng các thành phần trong một hệ thống nhận biết ngữ cảnh, đa số được phân chia thành ba thành phần chính: Bộ cung cấp ngữ cảnh (Context supplier), bộ tiêu dùng ngữ cảnh (Context Consummer), bộ trừu tượng ngữ cảnh (Context Abstractor). Mỗi thành phần có một chức năng, nhiệm vụ riêng đối với ngữ cảnh của hệ thống.
Hình 3.1 Các thành phần hệ thống nhận biết ngữ cảnh
3.2.1 Bộ cung cấp ngữ cảnh
Một bộ cung cấp ngữ cảnh là một thành phần chuyên mang đến ngữ cảnh cho hệ thống. Một bộ cung cấp ngữ cảnh có thể chỉ là một cảm biến đơn giản giao tiếp với các giá trị thô hay một hệ thống miền phức tạp cung cấp thông tin ngữ cảnh mức cao.
Các ngữ cảnh được cung cấp cho hệ thống thường dựa trên cấu trúc dữ liệu phù hợp với hệ thống. Bộ cung cấp ngữ cảnh xác định duy nhất và cung cấp các ngữ cảnh từ một miền nhất định. Thông tin ngữ cảnh đã tạo được gán với thời gian và vị trí ban đầu và thường là về vị trí logic và vật lý trong đó bộ cung cấp được định vị. Vì bộ cung cấp được xây dựng như một hệ thống miền đặc tả, tri thức miền lĩnh vực luôn sẵn có trong suốt quá trình thực thi. Tri thức này sau đó được sử dụng để gán giá trị ngữ cảnh với các đặc tính miêu tả và đồng thời được sử dụng để xác định các nguyên tắc phân phối theo không gian và thời gian.
Một bộ cung cấp ngữ cảnh có một số lượng các thuộc tính tĩnh để xác định thời điểm thiết kế của nó và các thuộc tính này có hiệu lực theo thời gian sống của bộ cung cấp.
3.2.2 Bộ tiêu dùng ngữ cảnh
Bộ tiêu dùng ngữ cảnh là các thành phần sử dụng thông tin ngữ cảnh có sẵn trong hệ thống. Một bộ tiêu dùng ngữ cảnh có thể truy cập tới bất kỳ đối tượng ngữ cảnh nào hiện hữu. Tri thức miền lĩnh vực của ứng dụng xác định các ngữ cảnh đáng quan tâm cho bộ tiêu dùng ngữ cảnh cụ thể. Bộ tiêu dùng ngữ cảnh có cấu trúc động.
3.2.3 Bộ trừu tượng ngữ cảnh
Một bộ trừu tượng ngữ cảnh là một thành phần đọc thông tin ngữ cảnh và thêm các đối tượng ngữ cảnh mới từ các ngữ cảnh cũ. Một bộ trừu tượng ngữ
Không gian mờ Context Producer
Context Consumer
cảnh có các thuộc tính của một bộ tiêu dùng ngữ cảnh cũng như bộ tạo ngữ cảnh. Khái niệm cơ bản của bộ trừu tượng ngữ cảnh là lấy ngữ cảnh có sẵn trong hệ thống để phát sinh ngữ cảnh mới và tiếp tục cung cấp các ngữ cảnh này đi.
3.3 Các công việc cần thiết cho tính toán nhận biết ngữ cảnh
3.3.1 Các cơ chế thu hồi và cảm ngữ cảnh
Ngữ cảnh là bất kỳ thông tin gì có thể được dùng để miêu tả tình huống của một người, một thiết bị hay một đối tượng vật lý phi tính toán. Để có thể nhận biết ngữ cảnh, người phát triển hệ thống phải cung cấp các tác nhân với việc truy cập vào ngữ cảnh. Quá trình thu thập ngữ cảnh từ môi trường vật lý được gọi là thu hồi ngữ cảnh.
1. Các ngữ cảnh được thu thập bằng cách truy cập trực tiếp vào các cảm biến ngữ cảnh mức thấp.
2. Các ngữ cảnh được thu thập từ một vài cơ sở hạ tầng trung gian chạy tương tác với các cảm biến mức thấp
3. Các ngữ cảnh được thu thập từ các server chuyên duy trì tri thức tình huống về môi trường.
Thu hồi ngữ cảnh có thể được tạo theo 3 cách: lọc hình thức, phát hiện ngữ cảnh và extraction ngữ cảnh. Trong cách tiếp cận Form điền thông tin, thông tin ngữ cảnh được lấy trực tiếp từ đầu vào của người yêu cầu. Theo cách tiếp cận phát hiện có thể tích hợp các kiểu: cảm nhận, ghi nhận và các hệ thống định vị cho phát hiện vị trí. Trong cách tiếp cận còn lại, thông tin ngữ cảnh được lấy từ ontology người yêu cầu và dịch vụ[6].
Hình 3.2 Thu hồi ngữ cảnh
a. Phát hiện ngữ cảnh
Phát hiện ngữ cảnh là để phát hiện và phân tích thông tin ngữ cảnh như vị trí, môi trường và thông tin thiết bị trong suốt thời gian chạy đồng thời cảnh có thể xử lý cả phía dịch vụ và phía người yêu cầu dịch vụ. Về phía người yêu cầu
Form điền thông tin Phát hiện ngữ cảnh Diễn giải ngữ cảnh
Thu hồi ngữ cảnh
dịch vụ, các thiết bị thông minh và mạng cảm biến được tích hợp để cảm nhận và đáp ứng lại các môi trường xung quanh người yêu cầu. Về phía dịch vụ, một dịch vụ web được thiết kế để chấp nhận các yêu cầu dịch vụ. Khi có một yêu cầu login, cổng thông tin sẽ nắm bắt yêu cầu, phân tích xem thiết bị nào mà người yêu cầu đang sử dụng để tạo đặc tả thiết bị và phát hiện loại kênh mạng nào người dùng đang kết nối vào Internet để tạo đặc tả môi trường.
Các tình huống ngữ cảnh sâu như liệu người yêu cầu đang trong một cuộc họp hay đang lái xe vẫn chưa thể biết ở giai đoạn này; và sẽ được phân tích này tới pha diễn giải ngữ cảnh. Bên cạnh việc phát hiện yêu cầu, lịch sử các yêu cầu dịch vụ kết hợp được lưu trữ để có thể phân tích về các hành vi yêu cầu, các mẫu yêu cầu quan trọng được tham chiếu. Từ đó là cơ sở cho việc xây dựng sở thích người dùng nhằm đáp ứng các mong muốn cá nhân của họ.
Hình 3.3 Phát hiện ngữ cảnh
b. Phân tích ngữ cảnh
Nếu dịch vụ phát hiện ngữ cảnh không thể phát hiện ngữ cảnh hiện thời một cách rõ ràng, đặc tả của người dùng sẽ được đưa vào xem xét. Bộ phân tích ngữ cảnh như một quá trình lấy thông tin ngữ cảnh từ sở thích và đặc tả người dùng. Thông tin ngữ cảnh có thể hiểu được phân rã theo cách tĩnh và động.
RIDF GPS
Chiều yêu cầu
Dịch vụ Web Chiều Server Thu thập ngữ cảnh Phát hiện ngữ cảnh
Hình 3.4 Cấu trúc diễn giải ngữ cảnh
3.4 Ứng dụng minh họa
Xây dựng tiện ích tìm kiếm quán cà phê theo ngữ cảnh tích hợp trên Smartphone Android: “Coffee Context Search”
Với sức mạnh công nghệ, việc tìm kiếm thông tin ngày nay đã trở nên rất nhanh chóng và dễ dàng. Chỉ cần một thiết bị cầm tay như điện thoại thông minh, thiết bị hỗ trợ số cầm tay (PDA- Personal Digital Asistant)… có kết nối mạng người dùng có thể tra cứu được thông tin mình cần. Tuy nhiên từ đây cũng phát sinh nhiều vấn đề như số lượng thông tin cung cấp tới khách hàng là quá lớn dẫn đến sự dư thừa, khiến cho người dùng khó lựa chọn luồng thông tin hợp lý theo nhu cầu. Trong khi đó, với nhịp sống bận rộn, điều kiện môi trường luôn thay đổi người dùng rất cần tới những ứng dụng mang tính cá nhân, tiện lợi và thích ứng cho các sở thích cũng như trong ngữ cảnh cụ thể.
Chương 3 sẽ trình bày về việc xây dựng một ứng dụng có khả năng tích hợp trên điện thoại chạy hệ điều hành Android giúp người dùng tìm kiếm địa điểm quán cà phê theo ngữ cảnh người dùng.
3.4.1 Giới thiệu về hệ điều hành Android
3.4.1.1 Android là gì?
Android là một ngăn xếp phần mềm cho các thiết bị di động bao gồm một hệ điều hành, middleware và các ứng dụng khóa được phát triển bởi Google Android.
Thông tin yêu cầu
Tham chiếu
Sự kiện thu được
Các quy tắc Các sự kiện
Thông tin lập lịch
Thông tin xã hội
được dựa trên nhân Linux 2.6 và các ứng dụng cho Android sử dụng ngôn ngữ lập trình Java [18].
Android là một hệ điều hành mã nguồn mở, các nhà phát triển có thể tạo ra các ứng dụng cho Android và bất kỳ ai cũng có thể lấy và sửa đổi theo ý thích. Tuy nhiên các thiết bị Android cũng chứa một số phần mềm độc quyền mà các nhà phát triển không thể tiếp cận được những phần mềm này. Ví dụ: hệ thống định vị toàn cầu (GPS). Android cũng hỗ trợ nhiều tính năng như: Wi-fi, Bluetooth, các mạng 3G và 4G, ….
3.4.1.2 Kiến trúc Android
Android là một ngăn xếp phần mềm, bao gồm các tầng như hình 3.5 được trích từ trang http://kebomix.wordpress.com/2010/08/17/android-system- architecture/ sau đây, trong đó các hàm thực thi các ứng dụng trong hai tầng Applications và Applications framework được viết bằng ngôn ngữ lập trình Java. Còn các hàm thực thi các ứng dụng ở các tầng dưới: Libraries, Android runtime, Linux kernel được viết bằng mã gốc hay native code được viết bằng ngôn ngữ C/C++.
Hình 3.5 Kiến trúc Android
Sau đây ta sẽ tìm hiểu qua về chức năng của từng tầng:
- Tầng applications: Android được tích hợp sẵn một số ứng dụng cần thiết cơ bản như: calendar, maps, contacts, brower, camera, phone, … Tất cả các ứng dụng này đều được viết bằng ngôn ngữ Java.
- Tầng Application Framework: giúp phát triển các ứng ụng một cách phong phú và sáng tạo. Nhà phát triển có thể truy cập vào các API cùng một framework được xây dựng bởi các ứng dụng lõi, giúp đơn giản hóa việc sử dụng lại các thành phần, thừa kế các giao diện, quản lý các hoạt động và tài nguyên…
- Tầng Libraries: Android bao gồm một tập hợp các thư viện C/C++ được sử dụng bởi nhiều thành phần khác nhau trong hệ thống Android. Điều này được thể hiện thông qua nền tảng ứng dụng Android. Một số thư việc cơ bản: System C library, Media Libararies, SQLite.
- Tầng Android runtime: Tầng này bao gồm các thư viện lõi và máy ảo Dalvik (Dalvik Virtual Machine - DVM). Các thư viện lõi bao gồm các thư viện lớp cơ bản nhất như: cấu trúc dữ liệu, mạng, các tiện ích, hệ thống file. DVM được thiết kế để đạt được các chức năng quản lý chu kỳ sống của đối tượng, quản lý ngăn xếp, quản lý luồng, bảo mật.
- Linux kernel: Android được xây dựng trên nhân Linux, nhưng Android không phải là Linux. Android dựa trên Linux phiên bản 2.6 cho các hệ thống dịch vụ cốt lõi như an ninh, quản lý bộ nhớ, quản lý quá trình, ngăn xếp mạng, và mô hình điều khiển. Hạt nhân cũng hoạt động như một lớp trừu tượng giữa phần cứng và phần còn lại của ngăn xếp phần mềm. Linux kernel hỗ trợ các thư viện chia sẻ (shared libraries) và nó còn là một mã nguồn mở
3.4.1.3 Công cụ phát triển phần mềm Android (Android SDK)
Android SDK[15] cung cấp nhiều tập tin và các công cụ đặc biệt nhằm mục đích
giúp cho việc thiết kế và phát triển các ứng dụng chạy trên nền tảng Android. Android SDK cũng chứa các thư viện để buộc các ứng dụng vào trong các đặc tính lõi của Android, chẳng hạn như những thư viện này được kết hợp với các chức năng của điện thoại di động (thực hiện và nhận cuộc gọi), các chức năng GPS, và nhắn tin văn bản. Những thư viện này tạo nên lõi của SDK và sẽ được sử dụng thường xuyên nhất.
Phần lớn Android SDK bao gồm các tập tin, tài liệu, với lập trình API, các công cụ, và các ví dụ. Trong Android SDK có một vài tập tin trong thư mục gốc giống như android.jar (một ứng dụng Java được biên dịch có chứa các thư viện lõi SDK và API), một số ghi chú, phần còn lại của Android SDK được chia thành ba thư mục chính:
· Docs: Chứa tất cả các tài liệu đi kèm với Android.
· Samples: Bao gồm các ví dụ, có thể được biên dịch và kiểm tra bên trong của Eclipse.
Tools: Chứa tất cả các công cụ gỡ lỗi, biên dịch, và phát triển mà ta cần trong suốt quá trình phát triển một ứng dụng Android.
Trong mục Samples của Android SDK có chứa 6 ví dụ mẫu cho ứng dụng Android. Những ví dụ này cung cấp bởi Google để cung cấp cho ta một ý tưởng nhanh chóng về làm cách nào để phát triển một ứng dụng Android. Mỗi ứng dụng mẫu thể hiện mỗi phần khác nhau về chức năng của Android. Chúng ta có thể mở và chạy các ứng dụng này từ bên trong của Eclipse.
Ứng dụng API Demos là một ứng dụng chủ (host application) mô tả nhiều hàm API trong một Activity đơn lẻ. Một Activity là một ứng dụng Android. Giao diện lập trình ứng dụng API là phần lõi của Android SDK. API là tập hợp các hàm, phương thức, đặc tính, lớp và các thư viện được sử dụng bởi các nhà phát triển ứng dụng để tạo ra các chương trình làm việc trên nền tảng cụ thể. Các Android API chứa tất cả các thông tin cụ thể mà ta cần để tạo ra ứng dụng có thể làm việc và tương tác với một ứng dụng trên nền Android.
Android SDK cũng chứa hai bộ APIs bổ sung là Google APIs và Optional APIs:
· Google APIs
Nằm trong tập tin android.jar, các API của Google được chứa trong gói com.google.*. Có một vài gói đi kèm với các API của Google. Một số gói được vận chuyển trong các API của Google bao gồm các gói cho đồ họa, tính khả chuyển, địa chỉ liên hệ và các tiện ích về lịch. Chẳng hạn như với gói cho Google Maps. Sử dụng gói com.google.android.maps. Trong gói này có chứa các thông tin cho bản đồ Google (Google Maps) ta có thể tạo các ứng dụng tương tác liên tục với giao diện quen thuộc của Google Maps.
· Optional APIs
Các Optional APIs bao gồm các tùy chọn chương tr.nh khi cố gắng sử dụng các tính năng này trong các ứng dụng Android. Một trong những tính năng tùy chọn là một điện thoại di động dựa trên GPS. Android LBS (Location-Based Services) API giải quyết việc tiếp nhận và sử dụng thông tin từ GPS của điện thoại. (Kết hợp thông tin trong LBS Android API với GPS trong Google Maps API có thể tạo ra một ứng dụng rất hữu ích có thể tự động hiển thị một bản đồ định vị trí ). Một số Optional APIs khác bao gồm các tùy chọn cho việc sử dụng Bluetooth, WiFi, chơi nhạc MP3…
Android SDK và Plugin Eclipse được gọi là Android Development Tools (ADT). Trình giả lập Android được tích hợp với Eclipse, sử dụng ADT plug-in cho Eclipse IDE. Trình giả lập điện thoại Android hay còn gọi là AVD (Android Virtual Device) trên đó các ứng dụng có thể chạy và được thử nghiệm. Một khi
AVD được khởi chạy, có thể triển khai một số lượng ứng dụng bất kỳ trong khi nó vẫn còn đang chạy và thậm chí có thể sử dụng nó để gỡ rối ứng dụng.
3.4.1 Xác định kịch bản và ngữ cảnh sử dụng trong hệ thống
3.4.2.1 Kịch bản sử dụng
Như chúng ta đã biết, trong nhịp sống công sở hiện nay, thói quen uống cà phê là một sở thích điển hình của các nhân viên văn phòng, học sinh sinh viên…Với sự phát triển mang tính chất đa hình đa dạng của các quán cà phê, số lượng ngày một nhiều như nấm và đặc biệt được bao phủ hầu hết bởi mạng không dây. Do đó việc tận dụng khoảng thời gian uống cà phê để thực hiện các công việc khác chính là cách tận dụng thời gian trong cuộc sống công nghiệp hiện nay. Người ta có thể chọn hình thức uông cà phê để thư giãn với không gian riêng tư một mình, tán gẫu với bạn bè, hẹn hò, học tập hay các cuộc thương thảo.
Chính vì những đặc điểm trên, nên việc lựa chọn một quán cà phê hợp lý theo sở thích cũng như ngữ cảnh hiện tại của người dùng là vô cùng quan trọng. Rõ ràng, việc chọn một quán cà phê để hẹn hò cần không gian lãng mạn, riêng tư, tránh ồn ào khác hẳn với khi bạn muốn chọn một nơi uống cà phê cùng đám bạn thân. Hoặc giả sử như khi muốn trao đổi vấn đề cùng đối tác làm ăn thì một quán cà phê với không gian sang trọng lịch sự lại là lựa chọn số một. Còn các bạn sinh viên có nhu cầu học tập và giải trí mọi lúc mọi nơi thì luôn cần những địa điểm hợp lý với nguồn wifi sẵn có.
Đó là những yêu cầu và thách thức thực tế đối với một tiện ích tìm kiếm