1. Trang chủ
  2. » Tất cả

NGHIÊN CỨU VỀ WEB NGỮ NGHĨA VÀ ỨNG DỤNG (Một số công nghệ phát triển phần mềm))

29 56 0

Đ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 29
Dung lượng 374,26 KB

Nội dung

Semantic Web – trang web ngữ nghĩa tương tự với World Wide Web, được tạo ra bởi Sir Tim BernersLee vào năm 1989. Tuy nhiên, thay vì tập trung vào các tài liệu, nó được xây dựng dựa trên dữ liệu. Giống như biểu thức được sử dụng rộng rãi hơn World Wide Web, web ngữ nghĩa cũng được tạo ra bởi Sir BernersLee, người bây giờ cũng được biết đến với tư cách là giám đốc của World Wide Web Consortium (W3C). Khái niệm web ngữ nghĩa lần đầu tiên được BernersLee thảo luận cùng với nhà nghiên cứu James Hendler của AI và nhà khoa học máy tính Ora Lassila trong một bài báo khoa học Mỹ năm 2001. Định nghĩa chính thức của W3C về web ngữ nghĩa là “một khung cộng tác chung cho phép dữ liệu được chia sẻ và sử dụng lại trên các ranh giới ứng dụng, doanh nghiệp và cộng đồng”. Web ngữ nghĩa về cơ bản cho phép kết nối thông tin bằng cách sử dụng mạng có thể dễ dàng đọc bằng máy cho dù máy tính, thiết bị IoT, điện thoại di động hoặc thiết bị khác thường được sử dụng để truy cập thông tin. Nó được xây dựng trên tiền đề rằng dữ liệu trong các trang web là hữu ích, nhưng không phải trong mọi trường hợp. Một trong những rào cản lớn nhất của Internet đối với nó là phần lớn dữ liệu được tạo ra bằng cách sử dụng nhiều hình thức và không có cách thống nhất để xuất bản dữ liệu để bất cứ ai cũng có thể quản lý nó. Cách dữ liệu được trình bày bằng cách sử dụng HTML có thể khó xử lý và do đó, web ngữ nghĩa có ý tưởng rằng nếu dữ liệu này có thể được tái định nghĩa, nó hữu ích hơn cho mọi người. Schema.org đã được hình thành bởi một số tổ chức (đặc biệt là Google, Bing và Yahoo) để tăng mức độ siêu dữ liệu. Mục tiêu của việc này là trả lời các câu hỏi từ các nguồn tốt nhất trên web, thay vì phục vụ trang tìm kiếm đầy đủ các liên kết tài liệu. Phần quan trọng nhất của công nghệ web ngữ nghĩa là Khung Mô tả Tài nguyên (RDF). Đây là một khung chung để mô tả tài nguyên. Nó có thể đại diện cho siêu dữ liệu có thể được phân tích cú pháp và xử lý bởi các hệ thống thay vì chỉ hiển thị cho người dùng.

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN _ _ BÁO CÁO BÀI TẬP LỚN MỘT SỐ CÔNG NGHỆ PHÁT TRIỂN PHẦN MỀM Đề tài: NGHIÊN CỨU VỀ WEB NGỮ NGHĨA VÀ ỨNG DỤNG GVHD : ThS Hà Mạnh Đào Nhóm : 16 Lớp : 20221IT6024004 Hà Nội, 2022 TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN _ _ BÁO CÁO BÀI TẬP LỚN MỘT SỐ CÔNG NGHỆ PHÁT TRIỂN PHẦN MỀM Đề tài: NGHIÊN CỨU VỀ WEB NGỮ NGHĨA VÀ ỨNG DỤNG Hà Nội, 2022 LỜI CẢM ƠN Lời đầu tiên, nhóm 16 xin gửi lời cảm ơn chân thành tới thầy Hà Mạnh Đào Trong trình học tập thực đề tài này, chúng em nhận quan tâm giúp đỡ, hướng dẫn tận tình, tâm huyết thầy Những chúng em nhận khơng dừng lại kiến thức mơn học mà nhiều lời khuyên, chia sẻ thực tế từ thầy Chính nhờ phương pháp dạy học thầy mà chúng em có hội khám phá phát huy khả thân Những buổi thuyết trình hội tuyệt vời giúp chúng em rèn luyện tự tin, kỹ giao tiếp, làm việc nhóm Đây hành trang quan trọng giúp chúng em tự tin bước chân vào môi trường làm việc thực tế Để hồn thành đề tài này, nhóm chúng em cố gắng hết sức, nghiên cứu, thảo luận, áp dụng kiến thức học lớp với nguồn tài liệu khác Internet Chúng em mong nhận lời nhận xét, góp ý từ thầy bạn đọc để đề tài hồn thiện Một lần nữa, chúng em xin chân thành cảm ơn! Nhóm sinh viên thực Mục Lục LỜI CẢM ƠN PHẦN I Tìm hiểu Web ngữ nghĩa .6 1.1 Web ngữ nghĩa gì? 1.2 Đặc điểm web ngữ nghĩa .7 1.3 Kiến trúc Semantic Web 1.3.1 Tầng Unicode URI 1.3.2 Tầng XML, NS XMLSchema 1.3.3 Tầng RDF RDFSchema 1.4 Tìm hiểu OWL .10 1.4.1 OWL gì? 10 1.4.2 Các phiên OWL .11 1.5 Các lĩnh vực ứng dụng Semantic Web .11 1.5.1 Lĩnh vực quản lý tri thức .11 1.5.2 Lĩnh vực tìm kiếm thơng tin 12 1.5.3 Lĩnh vực Thương mại điện tử 12 1.5.5 Mạng xã hội 13 PHẦN II Các công nghệ phát triển Web ngữ nghĩa .14 2.1 Giới thiệu Python 14 2.2 Giới thiệu RDF 14 2.2.1 Mô hình RDF 15 2.2.2 Các cách hiển thị RDF 15 2.2.3 Cú pháp RDF/XML 16 2.3 Truy vấn liệu RDF 16 2.3.1 Truy vấn liệu RDF 16 2.3.2 SPARQL 17 2.4 Xử lý mơ hình RDF liên tục 17 2.5 Cài đặt 18 2.5.1 Các bước cài đặt 18 2.5.2 Cài đặt thư viện 19 2.5.3 Source Code 19 PHẦN III Giới thiệu chương trình .26 3.1 Tổng quan ứng dụng 26 3.2 Triển khai cài đặt 26 3.3 Kết chạy chương trình 26 Kết luận 27 Đạt .27 Chưa đạt .27 Thuận lợi .27 Khó khăn .28 Kinh nghiệm rút 28 Hướng phát triển 28 Tài liệu tham khảo 29 PHẦN I Tìm hiểu Web ngữ nghĩa 1.1 Web ngữ nghĩa gì? Semantic Web – trang web ngữ nghĩa tương tự với World Wide Web, tạo Sir Tim Berners-Lee vào năm 1989 Tuy nhiên, thay tập trung vào tài liệu, xây dựng dựa liệu Giống biểu thức sử dụng rộng rãi World Wide Web, web ngữ nghĩa tạo Sir BernersLee, người biết đến với tư cách giám đốc World Wide Web Consortium (W3C) Khái niệm web ngữ nghĩa lần Berners-Lee thảo luận với nhà nghiên cứu James Hendler AI nhà khoa học máy tính Ora Lassila báo khoa học Mỹ năm 2001 Định nghĩa thức W3C web ngữ nghĩa “một khung cộng tác chung cho phép liệu chia sẻ sử dụng lại ranh giới ứng dụng, doanh nghiệp cộng đồng” Web ngữ nghĩa cho phép kết nối thông tin cách sử dụng mạng dễ dàng đọc máy - cho dù máy tính, thiết bị IoT, điện thoại di động thiết bị khác thường sử dụng để truy cập thơng tin Nó xây dựng tiền đề liệu trang web hữu ích, khơng phải trường hợp Một rào cản lớn Internet phần lớn liệu tạo cách sử dụng nhiều hình thức khơng có cách thống để xuất liệu để quản lý Cách liệu trình bày cách sử dụng HTML khó xử lý đó, web ngữ nghĩa có ý tưởng liệu tái định nghĩa, hữu ích cho người Schema.org hình thành số tổ chức (đặc biệt Google, Bing Yahoo) để tăng mức độ siêu liệu Mục tiêu việc trả lời câu hỏi từ nguồn tốt web, thay phục vụ trang tìm kiếm đầy đủ liên kết tài liệu Phần quan trọng công nghệ web ngữ nghĩa Khung Mô tả Tài nguyên (RDF) Đây khung chung để mơ tả tài ngun Nó đại diện cho siêu liệu phân tích cú pháp xử lý hệ thống thay hiển thị cho người dùng 1.2 Đặc điểm web ngữ nghĩa Máy hiểu thơng tin Web: Internet ngày dựa hồn tồn vào nội dung Web hành cho người đọc không dành cho máy hiểu Semantic Web cung cấp ý nghĩa cho máy hiểu Thông tin tìm kiếm nhanh chóng xác hơn: Với Semantic Web, việc tìm kiếm dễ dàng thứ đặt ngữ cảnh Ý tưởng chủ yếu toàn ngữ cảnh mà người sử dụng biết đến Mục tiêu Semantic Web phát triển tiêu chuẩn kỹ thuật để giúp máy hiểu nhiều thơng tin Web hơn, để tìm thơng tin dồi hơn, tích hợp, duyệt liệu tự động hóa thao tác Người dùng khơng nhận thơng tin xác tìm kiếm thơng tin từ máy tính, mà máy tính cịn tích hợp thơng tin từ nhiều nguồn khác nhau, biết so sánh thông tin với Dữ liệu liên kết động: Với Semantic Web, kết hợp thông tin mô tả giàu ngữ nghĩa với nguồn liệu nào.Ví dụ: cách thêm Metadata (dữ liệu liệu) cho tài liệu tạo nó, tìm kiếm tài liệu mà Metadata cho biết tác giả Eric Miller Cũng thế, với Metadata tìm kiếm tài liệu thuộc loại tài liệu nghiên cứu Hỗ trợ công cụ tự động hóa: Cung cấp loại dịch vụ tự động từ nhiều vùng khác nhau: từ gia đình thư viện kỹ thuật số dịch vụ kinh doanh điện tử dịch vụ sức khỏe.v.v Hỗ trợ quản lý tri thức: Ưu điểm lớn Semantic Web liệu cấu trúc hóa Vì vậy, tảng Semantic Web hỗ trợ nhiều cho việc quản lý tri thức Khả biểu diễn luật khả suy diễn tri tạo nên bước đột phá cho hệ thống quản lý tri thức hiệu quả: Tri thức tổ chức không gian khái niệm theo ngữ nghĩa Các công cụ tự động hỗ trợ cho việc bảo trì tri thức nhờ việc kiểm tra khơng qn trích rút tri thức Việc tìm kiếm dựa từ khóa thay việc trả lời câu truy vấn Những tri thức yêu cầu tìm kiếm thu thập, trích rút biểu diễn theo cách thân thiện với người Việc trả lời cho câu truy vấn nhiều tài liệu hỗ trợ 1.3 Kiến trúc Semantic Web Theo kiến trúc Semantic Web phân thành tầng Cụ thể tầng miêu tả sau 1.3.1 Tầng Unicode URI Tầng Unicode URI tầng kiến trúc Semantic Web Đây hạ tầng cho xây dựng Semantic Web, tảng để mã hóa, định vị truyền vận thơng tin Với : Unicode chuẩn mã hóa liệu để vận chuyển thơng tin Unicode chuẩn mã hóa quốc tế, cho phép mã hóa ngơn ngữ URI-Uniform Resource Identifier tảng để xác định vị trí cho tài nguyên Web, việc xác định tài nguyên Web Thực tế tầng hoàn thiện sử dụng Web Các URI miêu tả với giao thức khác : HTTP, FTP, SMTP, … sử dụng rộng rãi Internet Sự xuất tầng cho thấy kế thừa thực Semantic Web Semantic Web thực sự mở rộng Web lại hầu hết đặc điểm thiết kế bên Web mở rộng thêm phần ngữ nghĩa mức bên nhằm tạo thêm khung nhìn cho Web tại, khung nhìn ứng dụng (hay máy tính) 1.3.2 Tầng XML, NS XMLSchema Đây tầng thứ hai kiến trúc phân tầng Semantic Web XML chuẩn liên quan tới nó, cung cấp cho ta đường để diễn đạt cấu trúc thông tin chuẩn thực tế để truyền liệu ứng dụng Do mà XML hỗ trợ rộng rãi công cụ người dùng Đó lý mà XML tồn tầng thứ hai với vai trò làm điểm trung gian dạng biểu diễn giàu ngữ nghĩa dạng liệu thô giàu cấu trúc XML cung cấp cú pháp chung cho biểu diễn liệu môi trường Internet XML Schema cung cấp định nghĩa kiểu liệu cấu trúc cho tài liệu XML Các không gian tên(namespace-NS) sử dụng giải pháp áp dụng cho tài liệu XML Thực tầng thứ hai kế thừa từ mà Web làm Các chuẩn cú pháp XML, không gian tên XML Schema chấp nhận Semantic Web Sự kế thừa sở để tích hợp định nghĩa Semantic Web với chuẩn XML khác 1.3.3 Tầng RDF RDFSchema Ta tạo câu lệnh (statement) để mô tả đối tượng với từ vựng định nghĩa URI, đối tượng tham chiếu đến từ vựng định nghĩa URI Đây lớp mà gán kiểu (type) cho tài nguyên liên kết Và lớp quan trọng kiến trúc Semantic Web - Lớp Ontology: hỗ trợ tiến hóa từ vựng định nghĩa mối liên hệ khái niệm khác Một Ontology (bản thể luận logic) định nghĩa từ vựng mang tính phổ biến & thơng thường, cho phép nhà nghiên cứu chia sẻ thông tin hay nhiều lĩnh vực - Lớp Digital Signature: dùng để xác định chủ thể tài liệu (ví dụ: tác giả hay nhan đề loại tài liệu) - Các lớp Logic, Proof, Trust: Lớp logic cho phép viết luật (rule) lớp proof (thử nghiệm) thi hành luật với lớp trust (chấp nhận) đánh giá nhằm định nên hay không nên chấp nhận vấn đề thử nghiệm 1.4 Tìm hiểu OWL 1.4.1 OWL gì? Ngơn ngữ OWL (The Web Ontology Language) ngôn ngữ gần XML dùng để mô tả hệ sở tri thức OWL ngôn ngữ đánh dấu dùng để xuất chia sẻ liệu Internet thơng qua mơ hình liệu gọi “ontology” Ontology mô tả lĩnh vực (domain) diễn tả đối tượng lĩnh vực mối quan hệ đối tượng OWL phần mở rộng từ vựng RDF (Resource Description Framework - Khung Mô tả Tài nguyên) kế thừa từ ngôn ngữ DAML+OIL Web ontology – dự án hỗ trợ W3C OWL biểu diễn ý nghĩa thuật ngữ từ vựng mối liên hệ thuật ngữ để đảm bảo phù hợp với trình xử lý phần mềm OWL xem kỹ thuật trọng yếu để cài đặt cho Semantic Web tương lai OWL thiết kế đặc biệt để cung cấp cách thức thông dụng việc xử lý nội dung thông tin Web Ngôn ngữ kỳ vọng cho phép hệ thống máy tính đọc thay cho người Vì OWL viết XML, thơng tin OWL dễ dàng trao đổi kiểu hệ thống máy tính khác nhau, sử dụng hệ điều hành ngôn ngữ ứng dụng khác Mục đích OWL cung cấp chuẩn để tạo tảng để quản lý sở hữu, tích hợp mức doanh nghiệp để chia sẻ tái sử dụng liệu Web OWL phát triển có nhiều tiện lợi để biểu diễn 10 lý, RDF kế thừa cú pháp dựa XML Do đó, RDF cung cấp khả tương tác ứng dụng trao đổi thơng tin web mà máy hiểu 2.2.1 Mơ hình RDF Mơ hình liệu RDF gồm ba ñối tượng sau: - Tài ngun (Resource): đối tượng thấy web Các tài ngun ln định danh URI - Thuộc tính (Property): Một thuộc tính khía cạnh, đặc điểm, đặc tính hay mối quan hệ cụ thể dùng để mơ tả tài nguyên - Phát biểu (Statement): Phát biểu RDF cung cấp tài nguyên chủ thể, thuộc tính ñối tượng Mỗi phát biểu ñược biểu diễn theo cấu trúc ba gọi “triple” có ba thành phần bản: Chủ-thể, Thuộc-tính, Đối-tượng (Subject, Predicate, Object) 2.2.2 Các cách hiển thị RDF a) N3 N3 hay Notation3 phá vỡ ñồ thị RDF thành triple riêng nó, triple có chứa chủ thể, thuộc tính đối tượng ñược tách khoảng trống b) Đồ thị RDF Một tập hợp RDF triple tạo thành ñồ thị RDF Tập hợp nút ñồ thị RDF tập chủ thể ñối tượng triple, - 10 - cung ñồ thị thuộc tính RDF triple khái niệm hóa biểu ñồ sau: c) RDF/XML Phương thức thứ ba sử dụng XML để biểu diễn liệu RDF Vì có cú pháp cấu trúc mạnh nên XML tảng tốt cho xử lý tự ñộng tài liệu RDF 15 2.2.3 Cú pháp RDF/XML RDF sử dụng XML mã hóa cú pháp trao đổi nó, cịn gọi cú pháp dựa XML RDF/XML kết hợp cú pháp ngôn ngữ XML khả mô tả tài nguyên thông qua URI RDF Schema RDF Schema (RDFS) mở rộng RDF phép mơ tả phân loại lớp thuộc tính RDFS định nghĩa lớp thuộc tính để mơ tả lớp, thuộc tính tài nguyên khác Lớp RDFS Trong RDFS, lớp nhóm tài nguyên web có liên quan với Chúng ñược xác ñịnh cách sử dụng tập từ vựng RDF rdfs:Class, rdfs:Resource ñịnh nghĩa nút (node) rdf:type, rdfs:subClassOf định nghĩa thuộc tính Thuộc tính RDFS Thuộc tính RDFS quan hệ chủ thể ñối tượng RDF Thuộc tính hay sử dụng rdfs:range, rdfs:domain, rdfs:subClassOf rdfs:subPropertyOf Tương tự mô tả lớp, thuộc tính định nghĩa thẻ rdf:Property Lưu trữ liệu RDF Một vài hệ thống ñược phát triển cho việc lưu trữ truy vấn Chủ thể Đối tượng Thuộc tính - 11 - liệu RDF, ví dụ Sesame RDFSuite 2.3 Truy vấn liệu RDF 2.3.1 Truy vấn liệu RDF Các tài liệu RDF RDF Schema xem xét truy vấn ba cấp ñộ trừu tượng khác nhau: Ở cấp ñộ cú pháp, chúng tài liệu XML 16 Ở cấp ñộ cấu trúc, chúng bao gồm tập triple Ở cấp ñộ ngữ nghĩa, chúng thiết lập nhiều ñồ thị với thành phần ngữ nghĩa ñược ñịnh nghĩa trước 2.3.2 SPARQL SPARQL ngôn ngữ cho phép truy vấn triple từ sở liệu RDF (hoặc từ kho lưu trữ triple) SPARQL truy vấn cách định nghĩa khn mẫu cho triple tương ứng 2.4 Xử lý mơ hình RDF liên tục Cho đến thời điểm này, làm việc với nhớ mơ hình Những mơ hình tạo từ đầu, từ tập tin phổ biến có Các tập tin đặt hệ thống tập tin địa phương, tải từ URL định Mặc dù nhớ mơ hình hữu ích, họ có số nhược điểm Một vài điểm: • Các mơ hình RDF có repopulated từ đầu khởi chạy ứng dụng, địi hỏi thời gian khởi động lâu • Bất kỳ thay đổi thực cho mô hình nhớ bị ứng dụng đóng cửa • Các ứng dụng dựa nhớ mơ hình khơng quy mơ chúng tơi bắt đầu làm việc với mơ hình lớn Một giải pháp tốt để lưu trữ ontology thể mơ hình sở liệu lưu trữ RDF, sau hoạt động mơ hình giống chúng tơi đề cập trước Giải pháp gọi giải pháp mơ hình liên tục, nơi mà mơ hình liên tục minh bạch kiên trì với hỗ trợ lưu trữ Jena vận chuyển với hỗ trợ cho sưu tập hệ thống sở liệu tiêu chuẩn, bao gồm MySQL, PostgreSQL, SQL Server, Oracle Derby Ngoài ra, điều hợp sở liệu Jena sử dụng tiêu chuẩn Java 17 Database Connectivity (JDBC) điều khiển để quản lý sở liệu ba Jena tạo quản lý bố cục bảng riêng hệ thống sở liệu, chi tiết ẩn từ ứng dụng Đối với nhà phát triển chúng tơi, điều có nghĩa chọn sở liệu hệ thống lưu trữ liệu, Jena giấu biến thể SQL cú pháp sở liệu khác cách cung cấp API có liên quan mà sử dụng Ví dụ, gọi HìnhStatements() mơ hình sở liệu lưu, Jena xây dựng truy vấn SQL thích hợp, thực thơng qua sở liệu bản, dịch kết truy vấn vào đối tượng ResultSet ứng dụng chúng tơi thao tác để lấy đối tượng Với giải pháp này, mơ hình RDF chúng tơi lại sở liệu ứng dụng hay không, ứng dụng truy cập vào mơ hình thơng qua API Jena mà khơng cần nạp mơ hình vào nhớ Ngồi ra, điều ứng dụng thay đổi lại mơ hình, thời gian tới ứng dụng bắt đầu, thấy thay đổi, làm từ thời gian qua Chúng ta thấy chi tiết giải pháp phần Chúng cần phải chọn hệ thống quản lý sở liệu Trong trường hợp chúng tôi, với MySQL, chủ yếu thực tế tự có sẵn cho tảng khác 2.5 Cài đặt 2.5.1 Các bước cài đặt Để thiết lập chạy Web ngữ nghĩa sử dụng Python, bạn cần thứ sau:     Python 2.7 Trong cửa sổ Terminal (command prompt Windows), thay đổi dir thành thư mục gốc kho lưu trữ ( TÙY CHỌN ) Virtualenv (pip install virtualenv) ( TÙY CHỌN ) Thiết lập virtualenv thư mục kho lưu trữ (virtualenv ) 18     ( TÙY CHỌN ) Kích hoạt virtualenv ( source bin/activate hệ thống giống linux) Cài đặt gói cần thiết ( pip install -r requirements.txt) Kiểm tra URL điểm cuối cuar Stardog SPARQL TUTORIAL_REPOSITORY biến hai src/tutorial.py src/static/js/tutorial.js Cài đặt Stardog: o Theo mặc định, tập lệnh giả sử sở liệu Stardog có tên 'tutorial' chạy http://localhost:5820/tutorial o Khởi động máy chủ Stardog bạn stardog-admin server start disable-security (đừng quên disable-security) o Để dừng Stardog,chạy stardog-admin server stop o Cơ sở liệu phải bật lý luận lý luận "Giống như" phải đặt thành "Đầy đủ" o Nếu bạn muốn sử dụng tên vị trí khác (tức khơng chạy localhost, port 5820) bạn cần đặt TUTORIAL_REPOSITORY biến src/tutorial.py 2.5.2 Cài đặt thư viện Để chạy chương trình Ta cần phải cài đặt số thư viện Các thư viện cần có để cài đặt chương trình bao gồm :  flask, render_template, url_for, request, jsonify  requests  traceback 2.5.3 Source Code from flask import Flask, render_template, url_for, request, jsonify from SPARQLWrapper import SPARQLWrapper, RDF, JSON import requests import traceback app = Flask( name ) 19 TUTORIAL_REPOSITORY = 'http://localhost:5820/tutorial' @app.route('/') def first_page(): app.logger.debug('You arrived at ' + url_for('first_page')) return render_template('index.html') @app.route('/show',methods=['GET']) def show_message(): app.logger.debug('You arrived at ' + url_for('show_message')) app.logger.debug('I received the following arguments' + str(request.args) ) # Get the message from the GET request, if nothing is found, set a default message message = request.args.get('message', 'No message sent!') return render_template('message.html', message=message) @app.route('/sparql', methods=['GET']) def sparql(): app.logger.debug('You arrived at ' + url_for('sparql')) app.logger.debug('I received the following arguments' + str(request.args) ) 20

Ngày đăng: 21/02/2023, 18:19

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w