Luận văn Đối sánh tự động lược đồ XML

Lược đồXML đưa ra khái niệm kiểu trừu tượng và phần tửtrừu tượng. Nhưthường thấy trong mô hình hóa hướng đối tượng, kiểu trừu tượng có thểkhông có thểhiện trực tiếp nhưng có thểcó kiểu con cụthể. Nếu một phần tử được khai báo là kiểu trừu tượng thì trong một tài liệu thểhiện XML mô hình nội dung của phần tử đó có thểkhông phải là của kiểu trừu tượng nhưng là của một trong các kiểu dẫn xuất của kiểu trừu tượng đó. Khái niệm trừu tượng cũng áp dụng cho phần tử.

pdf114 trang | Chia sẻ: lylyngoc | Lượt xem: 2756 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Đối sánh tự động lược đồ XML, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
húng tôi đã kết hợp nhiều phương pháp khác nhau trong lĩnh vực đối sánh lược đồ nhằm đưa ra một kết quả ánh xạ chính xác đến mức có thể. Các phương pháp này bao gồm đối sánh ngôn ngữ, xét tính tương thích kiểu dữ liệu, phân tích phân cấp kiểu người thiết kế và đối sánh cấu trúc. Ngoài ra chúng tôi cũng đã mô tả tiến trình phát hiện các ánh xạ phức hợp và các phép toán chuyển đổi. Các phép toán này chủ yếu được phát hiện bằng cách sử dụng phân cấp kiểu người thiết kế và đối sánh cấu trúc. Trong luận văn này, để đối sánh cấu trúc chúng tôi dựa trên khái niệm ngữ cảnh nút. Có ba loại ngữ cảnh cho một nút đã cho: ngữ cảnh tổ tiên, ngữ cảnh con và ngữ cảnh lá. Từ kết quả đánh giá chất lượng đối sánh có thể thấy rằng sự kết hợp các ngữ cảnh này đã cải thiện được hiệu quả cho pha đối sánh cấu trúc. Trong thời gian tới chúng tôi sẽ xem xét kỹ hơn vấn đề kết hợp kết quả đối sánh tự động với phản hồi người dùng và kiểm thử giải pháp với CSDL lược đồ lớn hơn. Ngoài ra chúng tôi cũng sẽ thử nghiệm việc thay đổi các tham số được sử dụng để xem xét ảnh hưởng của chúng trên kết quả ánh xạ, từ đó chọn được những tham số tốt nhất. Cũng trong chương này chúng tôi đã áp dụng đối sánh lược đồ vào một lĩnh vực ứng dụng khá điển hình, đó là vấn đề chuyển đổi tài liệu có cấu trúc. Chúng tôi đã mô tả các khái niệm cơ bản nhất về tài liệu có cấu trúc cũng như các nghiên cứu điển hình về vấn đề này. Dựa trên các giải thuật đã được đưa ra gần đây, chúng tôi tổng hợp một mô hình cho hệ thống chuyển đổi tự động tài liệu XML. Chúng tôi hy vọng rằng bằng cách áp dụng giải pháp đối sánh lược đồ đã nêu trên vào mô hình này, vấn đề chuyển đổi tự động tài liệu XML sẽ được giải quyết triệt để hơn. Việc thực thi mô hình này là một trong những hướng phát triển tiếp theo của đề tài. Kết luận và hướng phát triển Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 81 Kết luận và hướng phát triển 1. Đóng góp chính của luận văn Trong luận văn này chúng tôi đã xem xét một cách khá toàn diện vấn đề đối sánh lược đồ, tập trung vào vấn đề đối sánh tự động lược đồ XML. Đối sánh lược đồ là một vấn đề đã thu hút nhiều chú ý và đã có nhiều nghiên cứu khác nhau quan tâm đến vấn đề tự động hóa tiến trình đối sánh lược đồ, đặc biệt là lược đồ XML. Mặc dù các nghiên cứu này đã đề cập đến rất nhiều khía cạnh trong vấn đề đối sánh tự động, vẫn còn nhiều vấn đề cần được giải quyết thấu đáo hơn, thậm chí vẫn còn một số vấn đề chưa được đề cập đến. Trong luận văn này, ngoài việc trình bày các khái niệm cơ bản về vấn đề đối sánh lược đồ, chúng tôi đã cố gắng tổng hợp lại các kết quả nghiên cứu mới nhất về đối sánh lược đồ, đặc biệt là lược đồ XML. Tiếp theo chúng tôi đã đưa ra một giải pháp đối sánh toàn diện và hiệu quả hơn. Cuối cùng chúng tôi đã đưa ra một mô hình cho hệ thống chuyển đổi tự động tài liệu XML và hy vọng rằng có thể áp dụng giải pháp đã đưa ra cho mô hình này. Đóng góp đầu tiên của luận văn, được trình bày trong chương 1, là một khảo sát tương đối toàn diện về vấn đề đối sánh lược đồ. Chúng tôi dựa trên các khảo sát của Rahm và Berntein, Zamboulis, Đoàn An Hải, Đỗ Hồng Hải, Shvaiko và Euzenat, Madhavan, Budanisky, v.v.. cũng như một số nghiên cứu gần đây về lĩnh vực này. Dựa trên các khảo sát, chúng tôi đã mô tả một cách khá đầy đủ các kết quả nghiên cứu về vấn đề đối sánh tự động lược đồ XML. Kết luận và hướng phát triển Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 82 Một đóng góp tiếp theo của luận văn, được trình bày trong chương 2, là việc tổng hợp lại các định nghĩa hình thức về vấn đề đối sánh lược đồ cũng như sử dụng một số nghiên cứu trong các lĩnh vực khác nhằm đưa ra các định nghĩa hình thức cho vấn đề đối sánh tự động lược đồ XML một cách đầy đủ hơn. Đặc biệt chúng tôi cũng đã trình bày các định nghĩa hình thức cho đồ thị lược đồ, một mô hình khá hiệu quả để biểu diễn lược đồ XML. Đồ thị lược đồ là một mô hình đã được sử dụng trong rất nhiều hệ thống đối sánh lược đồ. Các định nghĩa hình thức này cho phép xem xét vấn đề đối sánh lược đồ một cách có hệ thống hơn và góp phần quan trọng vào việc đánh giá các giải pháp đối sánh lược đồ đã được đề xuất. Một đóng góp quan trọng của luận văn, được trình bày trong chương 3, là việc đưa ra một giải pháp đối sánh tự động lược đồ XML. Như đã trình bày trong suốt chương 3, giải pháp này dựa trên việc kết hợp một số nghiên cứu riêng lẻ trong đối sánh lược đồ cũng như một số ý tưởng trong các lĩnh vực khác (tích hợp dữ liệu, tìm kiếm và so sánh văn bản, xử lý truy vấn…). Giải pháp này bao gồm các khía cạnh chính sau: - Đo độ tương đồng thuật ngữ của các nút lược đồ dựa trên tên của chúng. Phép đo này sử dụng WordNet làm nguồn từ vựng và sử dụng thuật toán của Hirst và St-Onge để đưa ra các quan hệ ngữ nghĩa thích hợp cho vấn đề đối sánh lược đồ. - Đo độ tương đồng ràng buộc của các nút lược đồ dựa trên các ràng buộc tương ứng của chúng. Ở đây chúng tôi giới hạn trong việc sử dụng kiểu dữ liệu. Để so sánh các kiểu dữ liệu, chúng tôi đã sử dụng phân cấp kiểu lược đồ XML trong đó sự tương thích của hai kiểu phụ thuộc vào vị trí tương ứng của chúng trong phân cấp. - Đo độ tương đồng cấu trúc của các nút lược đồ dựa trên trên sự tương đồng của ngữ cảnh cấu trúc mà chúng xuất hiện. Trong luận văn này chúng Kết luận và hướng phát triển Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 83 tôi đã xem xét các giới hạn của giải pháp hiện hành qua việc nghiên cứu các hệ thống Cupid, SF và XClust, sau đó đưa ra một phương pháp đối sánh cấu trúc mà xét đến đầy đủ các ngữ cảnh của nút trong đồ thị lược đồ. Ở đây chúng tôi đã biểu diễn mỗi ngữ cảnh nút như một đường dẫn và sau đó dựa trên phép đo độ tương tự đường dẫn để so sánh các ngữ cảnh này. Trong luận văn này chúng tôi đã nới lỏng khái niệm đối sánh mạnh thường được sử dụng trong việc giải quyết vấn đề trả lời truy vấn và sử dụng ý tưởng của Carmel về việc so sánh đường dẫn để áp dụng cho vấn đề đối sánh lược đồ. - Đưa ra thuật toán kết hợp tất cả các phép đo tương đồng trên và đưa ra kết quả ánh xạ, các phép toán chuyển đổi và các điều kiện cho việc thực hiện các ánh xạ. Để tạo kết quả ánh xạ này, chúng tôi đã sử dụng ý tưởng về chiến lược phân tích trên-xuống trong lĩnh vực tích hợp dữ liệu. - Khía cạnh cuối cùng là việc đánh giá thực nghiệm cho giải pháp. Chúng tôi đã sử dụng một tập dữ liệu từ ứng dụng thực tế để đánh giá giải pháp đối sánh lược đồ đưa ra. Ngoài ra chúng tôi cũng đã so sánh giải pháp này với các hệ thống Cupid và SF và chỉ ra rằng nó thực hiện tốt hơn các thuật toán này. Đóng góp cuối cùng của luận văn, được trình bày trong phần cuối chương 3, là một khảo sát về vấn đề chuyển đổi tài liệu có cấu trúc và một mô hình cho hệ thống chuyển đổi tự động tài liệu XML mà có khả năng áp dụng được giải pháp đối sánh tự động lược đồ XML nói trên. Trong phần này chúng tôi đã trình bày các khái niệm cơ bản về tài liệu có cấu trúc, vấn đề sử dụng lại cấu trúc cũng như một khái niệm gắn liền với sử dụng lại cấu trúc: chuyển đổi tài liệu có cấu trúc. Tiếp theo chúng tôi đã trình bày vấn đề chuyển đổi tự động tài liệu có cấu trúc, bao gồm các nghiên cứu cơ bản trong lĩnh vực này cũng như vấn đề tạo chương trình XSLT. Dựa trên các nghiên cứu gần đây về lĩnh vực này, chúng tôi đã tổng hợp một mô hình cho phép giải quyết hiệu quả vấn đề chuyển đổi tự động tài liệu XML. Kết luận và hướng phát triển Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 84 2. Hướng phát triển Cho đến đây, ta đã hoàn thành mục tiêu đặt ra ban đầu, đó là tổng kết lại các nghiên cứu đã công bố và đưa ra giải pháp tối ưu hơn cho vấn đề đối sánh lược đồ. Tuy nhiên như đã thấy, vấn đề này vẫn chưa được giải quyết triệt để. Ta vẫn còn có thể mở rộng kết quả này để thu được một giải pháp đối sánh toàn diện hơn. Sau đây là một số hướng phát triển cho đề tài này: * Đối sánh ngôn ngữ và đối sánh dựa trên ràng buộc Về cơ bản, giải pháp của chúng tôi vẫn chỉ quan tâm nhiều đến đối sánh cấu trúc. Vấn đề còn lại là đối sánh ngôn ngữ và đối sánh dựa trên ràng buộc. Trong đối sánh ngôn ngữ, chúng tôi đã sử dụng giải thuật của Hirst và St-Onge nhằm so sánh tên các phần tử cũng như giải pháp của hệ thống Cupid nhằm giải quyết các vấn đề như tên phần tử có tồn tại từ viết tắt, từ rút gọn, các dấu chấm câu, v.v.. Tuy vậy, để khai thác các quan hệ từ đồng nghĩa hoặc tổng quát nghĩa ta còn cần phải sử dụng các từ điển chuyên đề hoặc các từ điển như WordNet. Thêm vào đó, đối sánh thuật ngữ có thể phải sử dụng các từ điển chuyên đề bao gồm tên chung, từ đồng nghĩa, từ viết tắt, v.v.. Có thể dựa vào các nghiên cứu về từ điển chuyên đề để thực hiện công việc này. Ngoài ra cũng có thể sử dụng kết hợp các phương pháp đối sánh xâu thích hợp để bổ sung cho kết quả đối sánh ngôn ngữ. Trong đối sánh dựa trên ràng buộc, chúng tôi đã giới hạn trong việc phân tích sự tương thích kiểu dữ liệu. Tuy vậy, ta có thể thêm vào tập ứng viên đối sánh một số ràng buộc như đơn nhất hay toàn vẹn bằng cách sử dụng các kỹ thuật như được mô tả trong [13]. Hơn nữa, các phân tích về ràng buộc kiểu dữ liệu của chúng tôi cũng bị giới hạn ở một số khía cạnh, chẳng hạn như chúng tôi không xét đối sánh mẫu. Để mở rộng vấn đề này, ta có thể sử dụng các nghiên cứu về biểu thức chính quy và đối sánh mẫu. Kết luận và hướng phát triển Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 85 * Tương tác người dùng hiệu quả Một trong những vấn đề quan trọng nhất của đối sánh lược đồ là tương tác người dùng hiệu quả. Đầu vào người dùng cần phải được đưa vào tại các thời điểm then chốt mà ở đó nó là có ích nhất, không nhất thiết phải là trước và/hay sau đối sánh, điều này làm cho việc hiệu chỉnh sau khi đối sánh dễ dàng hơn vì các phỏng đoán sai lệch mà không có sự xác nhận của người dùng sẽ không được xét đến. Hơn nữa, sự phát triển mạnh mẽ của các hệ thống chia sẻ dữ liệu Web sẽ làm tăng hơn nữa vấn đề tương tác người dùng. Trong thực tế, ngay cả nếu tồn tại một giải pháp đối sánh gần hoàn hảo, người dùng vẫn phải xác nhận tính hợp lệ của một số lượng lớn các kết quả đối sánh được đưa ra. Vấn đề ở đây là làm thế nào để giảm thiểu tương tác người dùng nhưng vẫn tối đa hóa được ảnh hưởng của phản hồi người dùng. * Duy trì ánh xạ Trong các môi trường động như Web, các nguồn dữ liệu có thể thay đổi không chỉ về dữ liệu mà còn cả về lược đồ và ngữ nghĩa. Các thay đổi này phải được phản ánh lại trong ánh xạ. Các ánh xạ gây ra sự không nhất quán do sự thay đổi của lược đồ phải được phát hiện và hiệu chỉnh. Có thể thấy rằng việc duy trì bằng tay các ánh xạ là không khả thi. Điều này đòi hỏi phải phát triển các kỹ thuật thích ứng tự động các ánh xạ khi các lược đồ thay đổi. * Đánh giá hiệu năng Để đánh giá giải pháp đối sánh lược đồ đã đưa ra một cách chính xác hơn, ta cần sử dụng một tập rộng các ứng dụng và dữ liệu. Bên cạnh đó, như [6] đã mô tả, việc định lượng sự giảm bớt can thiệp người dùng trong giải pháp đối sánh là rất quan trọng, do vậy ta cần các phép đo đánh giá được vấn đề này. Cuối cùng, ta cần áp dụng nhiều hơn nữa các nghiên cứu thực nghiệm để chỉ ra ảnh hưởng của các trọng số đã chọn lên tiến trình đối sánh. Danh mục tài liệu tham khảo Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 86 Danh mục tài liệu tham khảo [1] S. Amer-Yahia, S. Cho, D. Srivastava. Tree Pattern Relaxation, EDBT, 2002. [2] A. Budanitsky, G. Hirst. Semantic distance in WordNet: An experimental, application oriented evaluation of five measures, 2003. [3] D. Carmel, N. Efraty, G.M. Landau, Y.S. Maarek, Y. Mass. An Extension of the vector space model for querying XML documents via XML fragments. Second Edition of the XML and IR Workshop, In SIGIR Forum, Volume 36 Number 2, Fall 2002. [4] G. Cobena, S. Abiteboul, A. Marian. Detecting changes in XML Documents. In ICDE, 2002. [5] H.H. Do, S. Melnik, E. Rahm. Comparison of schema matching evaluations. In Proceedings of the second International Workshop on Web Databases, 2002. [6] A.H. Doan. Learning to map between structured representations of data. PhD thesis, University of Washington, 2002. [7] Lexical chains as representations of context for the detection and correction of malapropisms. In: Christiane Fellbaum (editor), WordNet: An electronic lexical database, Cambridge, MA: The MIT Press, 1998. [8] ISO, Information Processing- Text and Office systems- Standard Generalization Markup Language (SGML), (ISO 8879:1986), International Organisation for Standardisation, Geneva, 1986. [9] P. Leinonen. Automating XML Document Structure Transformations. In Proceedings of the ACM Symposium on Document Engineering, France, 2003. [10] G. Linden. Structured document transformations. Report A-1997-2. CS Department of University of Helsinki, Finland, 1997. [11] J. Madhavan, P.A. Bernstein, E. Rahm. Generic schema matching with Cupid. In Proceedings of the International Conference on Very Large Databases (VLDB), 2001. [12] S. Melnik, H. Garcia-Molina, E. Rahm. Similarity Flooding: A versatile Graph Matching Algorithm and its Application to Schema Matching. In Proceedings of the 18th International Conference on Data Engineering, 2002. Danh mục tài liệu tham khảo Võ Sỹ Nam. Luận văn cao học – ngành công nghệ thông tin 87 [13] R. Miller. The Clio Project: managing heterogeneity. ACM SIGMOD Record 30(1): 78-83, 2001. [14] A. G. Miller (1995). WordNet: A lexical Database for English. ACM 38 (11), pages 39-41, 1995. [15] Mong Li Lee, Liang Huai Yang, Wynne Hsu, Xia Yang. XClust: Clustering XML Schemas for Effective Integration, in 11th ACM International Conference on Information and Knowledge Management, McLean, Virginia, November 2002. [16] E. Pietriga, J-Y. Vion-Dury, V. Quint. Vxt: a visual approach to XML transformations. In Proceedings of the ACM Symposium on Document Engineering, 2001. [17] E. Rahm, P.A. Bernstein. A survey of approaches to automatic schema matching. In VLDB Journal, pages 10: 334-350, 2001. [18] N. Routledge, L. Bird, A. Goodchild. UML and XML Schema, ADC, 2002. [19] D. Shasha, J. Wang, K. Zhang, F. Shih. Fast algorithms for the unit cost editing distance between trees. In Journal of Algorithms, pages 581-621, 1990. [20] L. Xu. Source Discovery and Schema Mapping for Data Integration, PhD thesis, 2003. [21] L. Zamboulis. XML Schema Matching & XML Data Migration & Integration: A Step Towards The Semantic Web Vision. Technical Report, 2003. [22] A. Boukottaya, C. Vanoirbeek. Schema Matching for Transforming Structured Documents. In DocEng'05, 2-4, 2005. [23] A. Vernet. XML transformation languages. Có thể xem tại: [24] XML Schema, W3C Recommendation, 2004. Có thể xem tại: [25] XML Schema Part 0: Primer, W3C Recommendation, 2004. Có thể xem tại: [26] XML Schema Part 1: Structures, W3C Recommendation, 2004. Có thể xem tại: [27] XML Schema Part 2: Datatypes, W3C Recommendation 2004. Có thể xem tại: [28] XSL Transformations (XSLT), W3C Recommendation, 2004. Có thể xem tại: Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 88 Phụ lục Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 89 Phụ lục A: Ngôn ngữ đánh dấu mở rộng - XML 1. Tổng quan về XML XML (Extensible Markup Language - ngôn ngữ định dạng mở rộng) [23], là chuẩn đặc tả dữ liệu được sử dụng rộng rãi nhất hiện nay. Có thể thấy rằng XML có quan hệ rất gần gũi với HTML - ngôn ngữ định dạng dùng rộng rãi trong các trang Web hiện nay: cả hai đều dựa trên chuẩn ngôn ngữ định dạng tổng quát SGML (Standard Generalized Markup Language). Điểm khác biệt lớn nhất là các thẻ HTML đã được định nghĩa trước, còn các thẻ XML là do người sử dụng định nghĩa và tùy theo mục đích sử dụng mà có nhiều loại định dạng khác nhau phát sinh từ cách thức chuẩn của XML. Sau đây ta xét một số đặc trưng của XML: - Dễ dàng trao đổi dữ liệu: XML lưu ở dạng text và có thể dễ dàng cấu hình cũng như thay đổi chúng bằng các trình soạn thảo thông thường. XML đã được chuẩn hóa, mọi người đều có thể hiểu và sử dụng nó. Điều này giải quyết được khó khăn của việc chuyển đổi qua lại giữa rất nhiều định dạng dữ liệu hiện nay. - Tùy biến ngôn ngữ định dạng: có thể tạo ra các ngôn ngữ định dạng tùy biến dựa trên XML. Không chỉ vậy, có thể mở rộng chúng, có thể ghi chú thích trong tài liệu. Đây là một trong những khả năng mạnh nhất của XML. - Dữ liệu có cấu trúc và tích hợp: XML không chỉ cho phép lưu dữ liệu vào file XML dựa trên thẻ mà còn tổ chức dữ liệu theo cấu trúc, theo đó các phần tử thẻ tích hợp với nhau tạo nên một cấu trúc dữ liệu phân cấp hoàn chỉnh. Điều này cho phép ta định nghĩa dữ liệu có cấu trúc một cách hết sức thuận lợi. Nhìn chung XML hoàn toàn thích hợp cho việc liên lạc giữa các môđun, các thành phần trong bất kì chương trình ứng dụng nào dù nhỏ hay lớn. 1.1 Khuôn dạng tài liệu XML Các phần của tài liệu XML được gọi là thực thể, nó có thể chứa dữ liệu văn bản hoặc nhị phân nhưng không được cả hai. Một thực thể có thể tham chiếu đến thực thể khác, có thể dùng để phân tích hoặc làm dữ liệu thông thường (không dùng cho mục đích phân tích). Tài liệu XML được bắt đầu bằng chỉ thị . Nếu toàn bộ tài liệu là một thực thể duy nhất không tham chiếu đến các thực thể khác thì thêm chỉ thị standalone = “yes”. Sau đó là các thẻ chứa dữ liệu theo cấu trúc phân cấp. Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 90 - Định dạng và dữ liệu kí tự: tài liệu XML tạo thành từ thành phần định dạng và thành phần dữ liệu kí tự, còn dữ liệu nhị phân chưa có quy định cách đưa vào mà chỉ được tham chiếu đến bằng cách biểu diễn thực thể. Định dạng bao gồm thẻ bắt đầu, thẻ kết thúc, các phần tử thẻ rỗng, các tham chiếu thực thể, tham chiếu ký tự, lời chú thích, phân đoạn CDATA, khai báo kiểu tài liệu và chỉ thị xử lý. Tất cả các dữ liệu còn lại trong tài liệu không phải là định dạng đều được xem là dữ liệu ký tự. - Phần khởi đầu (prolog): bắt đầu ngay từ những dòng đầu của tài liệu, nhìn chung bao gồm các khai báo, chú thích, chỉ thị xử lý, khoảng trắng và khai báo kiểu tư liệu (DTD). Chuẩn XML không yêu cầu khai báo prolog, tuy vậy ta nên dùng nó, ít nhất cũng nên có dòng khai báo phiên bản sử dụng. - Các khai báo: khai báo XML sử dụng phần tử . Có 3 kiểu khai báo thuộc tính: khai báo phiên bản cho biết phiên bản đặc tả XML, khai báo mã hóa cho biết bộ mã đang sử dụng (mặc định là UTF-8, có thể sử dụng mã Unicode, UCS-2, UCS-4…), khai báo thực thể độc lập là “yes” nếu tài liệu không tham chiếu đến các thực thể khác bên ngoài, nếu không là “no”. - Chú thích: bắt đầu bằng . Chú thích không được đặt trước khai báo, không thể dùng chuỗi -- trong đoạn chú thích. Chú thích có thể dùng để loại bỏ một đoạn mã nào đó (trong nội dung chú thích không được chứa chú thích khác). - Chỉ thị xử lý: bắt đầu bằng , nhằm chỉ dẫn cho bộ phân tích cách xử lý tài liệu XML. Ví dụ: - Thẻ và các phần tử (element): thẻ mở có dạng “”, thẻ đóng có dạng “. Thẻ bắt đầu phải có thẻ kết thúc tương ứng. Tên thẻ có quy định chặt chẽ: bắt đầu bằng kí tự, gạch chân (_), dấu hai chấm (:), kế tiếp có thể là kí tự, kí số, gạch chân, gạch nối, dấu chấm, dấu hai chấm (nên tránh dùng) nhưng không được là khoảng trắng. Thẻ phân biệt chữ hoa và chữ thường. Phần tử có thể chỉ có duy nhất một thẻ, tức là phần tử rỗng không kèm theo dữ liệu. Ví dụ: . Phần tử gốc là phần tử chứa tất cả các phần tử và các cặp thẻ khác trong tài liệu. - Thuộc tính: tương tự thuộc tính các thẻ trong HTML, có dạng name=value. Ví dụ: . Nhìn chung nếu có quá nhiều thuộc tính trong thẻ sẽ làm tài liệu khó đọc. Tên thuộc tính theo đúng quy tắc đặt tên thẻ, còn trị gán cho Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 91 thuộc tính là text, do vậy nếu ta gán cho nó một số thì phải đặt trong dấu nháy kép. Nếu chuỗi chứa các ký tự định dạng, ta dùng thực thể thay thế (“'”~”‘”, “"”~”“”). Để mô tả về ngôn ngữ của dữ liệu, ta dùng thuộc tính xml:lang, ví dụ: Hello Hi Một số vấn đề khác cũng quan trọng không kém nhưng do khuôn khổ phần phụ lục này ta sẽ không nêu ra ở đây như khuôn dạng cấu trúc tài liệu XML, phân đoạn CDATA, không gian tên của XML, Infoset v.v.. có thể tham khảo trong [23]. 1.2 Định nghĩa kiểu tư liệu (DTD) và tính hợp lệ của tài liệu XML Định nghĩa kiểu tư liệu - DTD (Document Type Definition) là quy định cách thức lưu giữ dữ liệu của tài liệu XML. Khai báo thường đặt ở phần khởi đầu tài liệu. Có thể định nghĩa lồng nhau các phần tử DTD. Có thể định nghĩa DTD với nội dung hỗn hợp, ví dụ: , hoặc định nghĩa cho các phần tử rỗng, ví dụ: . Ta cũng nên chú thích cho các phần tử định nghĩa DTD (giống như chú thích XML). - Định nghĩa DTD ngoại: sử dụng từ khóa SYSTEM trong chỉ thị khai báo . - Tham chiếu DTD dùng chung: sử dụng từ khóa PUBLIC thay cho SYSTEM. Thực tế ta có thể dùng chung hai loại tham chiếu nội và ngoại trong cùng tài liệu XML vào cùng thời điểm. Một số vấn đề quan trọng khác như không gian tên và các định nghĩa DTD... có thể tham khảo trong [23]. 1.3 Thực thể và thuộc tính DTD của tài liệu XML - Có hai loại thực thể: thực thể tổng quát - dạng & … ; và thực thể tham số - dạng % … ;. Thực thể có thể là nội hoặc ngoại, có thể ở dạng phân tích hoặc không phân tích. - Thuộc tính: sử dụng chỉ thị khai báo để định nghĩa danh sách các thuộc tính sẽ kết hợp với phần tử thẻ DTD nào đó. - Tạo các thực thể tổng quát nội: có thể tạo các định nghĩa tham chiếu cho thực thể lồng nhau, nhưng không được theo kiểu tham chiếu vòng. - Tạo các thực thể tổng quát ngoại: tương tự DTD, có thể sử dụng SYSTEM hoặc PUBLIC cho khai báo thực thể ngoại. Có thể sử dụng định nghĩa FPI. Có thể sử dụng tham chiếu thực thể ngoại để nhúng dữ liệu từ tài liệu khác vào tài liệu gốc. Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 92 - Tham chiếu thực thể tổng quát được định nghĩa trước: ngoài năm loại đã được định nghĩa trước, ta có thể đưa vào các ký tự đặc biệt khác sử dụng mã kí tự. - Tạo các thực thể tham số nội: các tham chiếu thực thể tổng quát không được dùng cho các định nghĩa DTD, do đó ta sử dụng tham chiếu thực thể tham số dạng % … ;. Tuy vậy không thể đưa tham chiếu thực thể tham số nội vào các khai báo DTD khác mà chỉ có thể sử dụng chúng trong phần khai báo DTD chính. - Tạo các thực thể tham số ngoại: các thực thể tham số ngoại có thể dùng ở bất cứ đâu trong khai báo DTD, do đó tránh được các khai báo lặp lại. - Sử dụng INCLUDE và IGNORE: để thêm vào hay bỏ qua các đoạn định nghĩa DTD. Có thể sử dụng chúng kết hợp với các tham số thực thể để tham số hóa các khai báo DTD, khi đó có thể bỏ qua hoặc thêm vào một tập các khai báo DTD chỉ bằng cách thay đổi giá trị của thực thể tham số. Kỹ thuật này giúp tập trung hóa các thực thể cần dùng để tùy biến. Nó đã được sử dụng trong các định nghĩa XHTML 1.1 DTD. Một số vấn đề quan trọng khác như các tính chất của thuộc tính, nhúng dữ liệu phi XML vào tài liệu, nhúng nhiều thực thể phi định dạng vào tài liệu v.v.. có thể tham khảo trong [23]. 2. Xử lý tài liệu XML Để phân tích tài liệu XML ta có thể dùng rất nhiều thư viện lập trình từ các ngôn ngữ khác nhau: XML for Java (XML4J), Microsoft XML Parser, Java Standard Extension for XML, Python XML Parser… Hiện nay, thay cho bộ mã ký tự một byte ASCII truyền thống người ta đang chuyển dần sang bộ mã kí tự hợp nhất hai bytes Unicode. Thậm chí một đặc tả mới về tập kí tự 4 bytes đang hình thành đó là UCS (Universal Character System). 2.1 Xử lý bằng Java Script theo mô hình DOM DOM - mô hình đối tượng tài liệu (Document Object Model) được W3C định nghĩa dưới dạng cây phân cấp bao gồm các nút chứa phần tử, dữ liệu văn bản, thuộc tính… và các nút con. Có tất cả 12 loại nút trong mô hình DOM (xem các tài liệu tham khảo liệt kê cuối bài). W3C cũng định nghĩa nhiều cấp độ cho mô hình DOM, thông dụng nhất hiện nay là cấp độ 1. Cấp độ này tập trung vào sự kết hợp giữa tài liệu HTML và XML. - Có hai cách để nạp tài liệu XML vào trình duyệt bằng JavaScript: hoặc sử dụng lớp đối tượng Microsoft.XMLDOM hoặc dùng phần tử nạp dữ liệu . Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 93 Để lấy về các nút trong tài liệu, trước hết ta lấy về nút gốc bằng phương thức documentElement, sau đó đi qua các nút con bằng các phương thức fistChild, nextChild, previousChild, lastChild, các nút cùng cấp bằng firstSibling, nextSibling, previousSibling, lastSibling, sau đó có thể hiển thị thông tin ra trình duyệt. Đối với cách thứ hai, ta sử dụng thẻ nạp trực tiếp dữ liệu XML vào trang HTML để xử lý bằng JavaScript. Ngoài ra ta có thể dùng trực tiếp tên của các phần tử để lấy ra danh sách các nút bằng phương thức getElementByTagName(“NODE_NAME”). Bên cạnh đó, ta có thể lấy về danh sách các thuộc tính của nút bằng phương thức attributes, sau đó gọi phương thức getNameItem để lấy về tham chiếu đến một nút cụ thể theo tên, cuối cùng ta dùng phương thức value lấy về giá trị thực tế của thuộc tính. - Phân tích toàn bộ tài liệu XML: sử dụng thủ tục đệ quy. Phương thức childNodes dùng để lấy về danh sách các nút con nếu có, sau đó đệ quy duyệt tiếp xuống các phần tử con. Mô hình DOM gồm 12 kiểu nút, ta có thể sử dụng giá trị nodeType để xác định kiểu dữ liệu và thuộc tính nodeValue để trích rút nội dung dữ liệu của nút. Ta cũng có thể dùng sự kiện onreadstatechange kiểm tra trạng thái nạp và hủy dữ liệu XML của trình duyệt. Sự kiện ondataavailable cho biết quá trình nạp dữ liệu dã hoàn tất và dữ liệu đang trong trạng thái sẵn sàng để xử lý. Ta có thể kiểm tra tính hợp lệ của tài liệu XML bằng JavaScript với mô hình tài liệu DOM. Dựa vào đối tượng parseError của dữ liệu nguồn để biết được các thông tin về lỗi. Có thể xem chi tiết hơn trong [23]. - Ngoài khả năng xử lý tài liệu, JavaScript còn có thể thay đổi nội dung cấu trúc tài liệu (dùng các phương thức createElement(), insertBefore(), createTexxtNode(), appendChild()…) 2.2 Xử lý bằng Java theo mô hình DOM Dùng Java có thể xử lý tài liệu XML mà không phụ thuộc vào trình duyệt. Thư viện xử lý phân tích tài liệu XML mà ta sử dụng ở đây là XML4J. Ta sẽ mô tả một vài phương thức xử lý trong gói thư viện này. Giả sử ta đã có một tập tin XML “order.xml” với các thẻ định dạng theo mô hình cây phân cấp (đã xem xét ở các phần trước). Để xử lý được bằng Java, trước hết ta đưa vào thư viện xử lý DOM: Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 94 import org.w3c.dom.*; import org.apache.xerces.parsers.DOMParser; Sau đó quy trình xử lý tương tự như khi sử dụng JavaScript. Để đếm số phần tử trong tài liệu XML, ta dùng phương thức getLength(). Để đọc và hiển thị toàn bộ nội dung tài liệu, ta dùng kĩ thuật đệ quy. Một chương trình như vậy sẽ có các phương thức chính sau: - Xử lý nút trong tài liệu (nút phần tử, nút thuộc tính…): cài đặt phương thức display() để kiểm tra và xử lý một nút dữ liệu của cây tài liệu DOM. Đối với mỗi kiểu nút, ta so khớp kiểu của nút nhận được với hằng được định nghĩa sẵn (có 12 loại nút trong mô hình DOM). Với mỗi nút phần tử, để xử lý thuộc tính, ta dùng phương thức getAttributes(), trả về một mảng danh sách các thuộc tính có trong phần tử. Ta có thể dùng vòng lặp for để duyệt qua từng phần tử thuộc tính. Mỗi phần tử có thể bao gồm danh sách các phần tử con, ta gọi phương thức getChildNodes() để lấy ra danh sách các phần tử con nếu có của phần tử hiện hành. Tiếp đến vòng lặp for được gọi để đi đến từng nút con gọi đệ quy lại phương thức display(). Cách thức xử lý nút phân đoạn CDATA, nút dữ liệu văn bản, nút chỉ thị xử lý, thẻ đóng… hoàn toàn tương tự. Bằng cách xử lý này, ta có thể xây dựng được chương trình tìm kiếm thông tin trong tài liệu XML. Thay vì kết xuất ra màn hình văn bản, ta có thể kết xuất ra màn hình đồ họa, cũng vậy ta có thể ứng dụng XML cho hiển thị đồ họa. - Duyệt đến từng nút cụ thể trong tài liệu: tương tự trong JavaScript, ta có thể sử dụng các phương thức trong Java như getFirstChild(), getNextSibling()… để duyệt đến từng nút trong tài liệu. - Thay đổi nội dung tài liệu: ngoài việc đọc và phân tích nội dung tài liệu, ta có thể thêm hoặc thay đổi cấu trúc dữ liệu đầu vào để tạo ra một cấu trúc tài liệu XML mới. Tương tự JavaScript, trong Java ta dùng các phương thức createElement(), createTexxtNode(), appendChild()… 2.3 Xử lý bằng Java theo mô hình SAX - SAX (Simple API for XML) là mô hình xử lý dữ liệu XML theo hướng sự kiện. Dữ liệu mà ta mong muốn sẽ tự động gửi đến khi một sự kiện phát sinh thay vì phải lấy dữ liệu ra bằng cách lần đến từng nút. Trong mô hình DOM, để chọn kiểu nút cần xử lý, ta dùng các mệnh đề case và so sánh với các hằng đã định nghĩa. Còn trong mô hình SAX, trình phân tích sẽ chịu trách nhiệm đọc và diễn dịch toàn bộ nội dung tài liệu. Khi phát hiện một Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 95 kiểu nút nào đó, sự kiện tương ứng sẽ phát sinh và hàm xử lý sự kiện dành cho nút sẽ được gọi đến. Thư viện XML4J hỗ trợ cả hai mô hình DOM và SAX. Trong chương trình Java sử dụng các khối thư viện: org.xml.sax.*, org.xml.sax.helpers.DefaultHandler, org.apache.xerces.parsers.SAXParser. Sau đó quy trình xử lý bao gồm: khởi tạo bộ phân tích SAX, nạp dữ liệu vào bộ phân tích (tương tự mô hình DOM). Sử dụng các phương thức startElement(), endDocument(), ta có thể xử lý các thẻ trong tập tin, chẳng hạn so sánh xem thẻ đọc được có phải có tên là “NAME” không. startElement() bao gồm một số tham số như địa chỉ nguồn, tên thẻ mở không có tiếp đầu ngữ của không gian tên, tên thẻ đầy đủ, danh sách thuộc tính có trong phần tử thẻ. Một số các phương thức khác như startDocument(), startCDATA(), characters(), processingInstruction() là các phương thức xử lý sự kiện tương ứng với các kiểu nút DOCUMENT_NODE, ELEMENT_NODE, CDATA_SECTION_NODE, TEXT_NODE và PROCESSING_INSTRUCTION_NODE. Cách thức sử dụng các phương thức này cũng tương tự như các phương thức trên. - Để tìm kiếm và lọc ra một phần tử trong tài liệu XML, ta cài đặt điều kiện lọc trong phương thức startElement() thông qua cờ printFlag, tức là chỉ có những phần tử thỏa mãn điều kiện lọc thì cờ printFlag mới được bật (true). - Trong mô hình SAX, khác với DOM, tài liệu không được xem là cấu trúc cây, ta chỉ đến được một nút khi có sự kiện nào đó phát sinh, do đó không thể dùng các phương thức dạng như firstChild()… mà phải tự đánh dấu và tìm ra phần tử dựa vào sự kiện. Khác với DOM, trong mô hình SAX ta không thể đi đến một mục dữ liệu nào đó trực tiếp, do đó để thay đổi cấu trúc dữ liệu XML, chẳng hạn chèn một nút mới, phải dựa vào sự kiện startElement(). 3. XML và các vấn đề khác 3.1 Ràng buộc dữ liệu XML trong IE theo mô hình DSO - Ràng buộc dữ liệu cho phép kết nối dữ liệu trong tài liệu XML vào mô hình ADO của Microsoft. Bằng cách này, có thể xử lý dữ liệu trong tài liệu đơn giản và dễ dàng tương tự như đang làm việc trên hệ CSDL thực sự. Kỹ thuật này cũng cho phép chuyển dữ liệu từ các hệ CSDL vào tài liệu và ngược lại. Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 96 - DSO cung cấp khá đầy đủ các phương thức, thuộc tính và sự kiện để xử lý dữ liệu trong tập recordset. Do khuôn khổ phần phụ lục này, ta sẽ không trình bày vấn đề này ở đây. Chi tiết hơn có thể xem trong [23]. 3.2 Một số khái niệm XML mới: XPath, XLink, XBase, XPointer - XPath là một dạng đường dẫn trong tài liệu XML, tương tự như đường dẫn của hệ thống tập tin. XPath có nhiều ứng dụng quan trọng trong xử lý tài liệu chuyển dịch XSL, đặc tả XPointer… - XLink là một dạng mở rộng của HTML Link, nó có nhiều tùy biến và linh hoạt hơn liên kết HTML như liên kết giản đơn, liên kết mở rộng, định vị, cung liên kết, tài nguyên liên kết, tiêu đề liên kết, tùy biến… - XBase là khái niệm định địa chỉ cơ sở cho tài liệu XML, có thể hiểu nó như là cách định nghĩa địa chỉ gốc giúp thu gọn địa chỉ liên kết. - XPointer là con trỏ chỉ mục giúp chỉ ra chính xác vị trí nút tài liệu, nó xây dựng dựa trên khái niệm XPath. XPointer định nghĩa một vị trí dữ liệu dựa trên điểm trỏ (point). 3.3 Hiển thị tài liệu XML: CSS và XSL - CSS và XSL đều có tác dụng tạo định dạng hiển thị cho trang XML. CSS là một tập mẫu định dạng kiểu cho XML. XSL là một tài liệu tuân theo đúng quy tắc và cú pháp xây dựng tài liệu XML. XSL có các quy định chặt chẽ về kiểu nút theo cấu trúc cây, nhìn chung có cách xử lý tương tự như mô hình DOM hay SAX. Có thể lập trình và biến đổi dữ liệu XML nhờ các thẻ điều khiển mà XSL cung cấp (xem chi tiết trong [23]). 3.4 Ứng dụng XML: XHTML, CDF, RDF, VML, WML, SOAP, AppML... Các ứng dụng XML hiện nay đã phát triển rất phong phú: XHTML - HTML mở rộng, CML - ngôn ngữ định dạng hóa học, MathML - ngôn ngữ định dạng toán học, CDF - khuôn dạng định nghĩa kênh, RDF – khung định nghĩa tài nguyên, SMIL - ngôn ngữ tích hợp đa phương tiện đồng bộ, EBRL - ngôn ngữ định dạng báo cáo, XUL - ngôn ngữ cấu hình giao diện người dùng, VML - ngôn ngữ định dạng vector, WML - ngôn ngữ định dạng mạng không dây, SOAP - giao thức truy cập đối tượng giản lược, v.v.. Đặc biệt AppML được Microsoft hứa hẹn là một trong những mô hình ứng dụng trong tương lai. Có thể tìm hiểu thêm trong [23]. Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 97 Phụ lục B: Lược đồ XML Lược đồ XML được W3C (World Wide Web Consortium) bắt đầu quan tâm từ năm 1998 và phiên bản đầu tiên được công bố chính thức vào 5/2001 [24], [25], [26], với mục đích tạo ra một ngôn ngữ lược đồ có ý nghĩa hơn DTD. Cấu trúc của một tài liệu XML được định nghĩa trong một lược đồ XML dưới dạng các quan hệ phân cấp đã định nghĩa trước giữa các phần tử XML và/hoặc các thuộc tính với các ràng buộc đặc trưng có liên quan (ví dụ như thứ tự và số yếu tố). Trong mục này, ta sẽ đưa ra các tính năng chính cần quan tâm của ngôn ngữ lược đồ XML khi định nghĩa vấn đề đối sánh lược đồ XML. 1. Các kiểu dữ liệu lược đồ XML Một kiểu dữ liệu lược đồ XML (sử dụng thuật ngữ của [26]) là một bộ-3, bao gồm: - Một tập các giá trị phân biệt, gọi là không gian giá trị (miền), - Một tập các biểu diễn từ vựng, gọi là không gian từ vựng, - Một tập các giới hạn kiểu mô tả các thuộc tính của không gian giá trị, các giá trị riêng lẻ hoặc các mục từ vựng. Kiểu trong lược đồ XML có thể là đơn giản hoặc phức hợp. Kiểu đơn giản cho phép nội dung dữ liệu là ký tự nhưng không phải là phần tử con hoặc thuộc tính. Kiểu phức hợp thì cho phép có phần tử con hoặc thuộc tính. Khuyến nghị lược đồ XML định nghĩa 44 kiểu đơn giản nội tại mô tả các kiểu dữ liệu được sử dụng chung. Chúng bao gồm kiểu xâu (string), kiểu số (numerical) (ví dụ float, decimal, integer), kiểu ngày tháng (date) và thời gian (time) (ví dụ date, duration, time). Lược đồ XML cũng cho phép người dùng dẫn xuất ra các kiểu riêng từ các kiểu nội tại bằng cách áp dụng một số giới hạn kiểu, ví dụ như hạn chế phạm vi hợp lệ của các giá trị số bằng cách thiết lập các giá trị lớn nhất/nhỏ nhất và giới hạn chiều dài của giá trị xâu. Lược đồ XML đề nghị hai cách khác để định nghĩa các kiểu đơn giản dẫn xuất: dẫn xuất theo danh sách và dẫn xuất theo hợp. Không gian giá trị của một kiểu dữ liệu danh sách là một tập các dãy chiều dài hữu hạn của các giá trị nguyên tố. Kiểu dữ liệu nguyên tố trong định nghĩa của một kiểu dữ liệu danh sách được xem là itemType của kiểu dữ liệu danh sách đó. 2. Khai báo thuộc tính và phần tử Định nghĩa thuộc tính và định nghĩa phần tử cho phép cả toàn cục hoặc cục bộ. Nếu là toàn cục, chúng được định nghĩa như là con trực tiếp của phần tử , và sau đó có thể được tham chiếu từ các phần tử tùy ý. Nếu là cục bộ, chúng được Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 98 định nghĩa trong một phần tử . Định nghĩa thuộc tính được cho bởi các phần tử chỉ ra tên, kiểu (luôn là kiểu đơn giản), số yếu tố nhỏ nhất (tùy chọn hoặc yêu cầu) và lớn nhất và có thể là một giá trị mặc định hoặc một giá trị cố định. Khai báo phần tử kết hợp tên với định nghĩa kiểu (đơn giản hoặc phức hợp), giá trị mặc định (tùy chọn) và tập các định nghĩa ràng buộc đồng nhất (có thể rỗng). Sự kết hợp có thể là toàn cục hoặc giới hạn phạm vi trong một định nghĩa kiểu phức hợp. 3. Các kiểu phức hợp Ngược lại với kiểu đơn giản, kiểu phức hợp cho phép có các phần tử con hoặc các định nghĩa thuộc tính. Các kiểu dữ liệu này sau đó được sử dụng cho việc định nghĩa kiểu phần tử. Đây là một trong những khác biệt chính của lược đồ với DTD: các phần tử (tức là các thẻ được sử dụng trong tài liệu) có thể khác với các kiểu dữ liệu (định nghĩa như là các kiểu phức hợp). Kiểu dữ liệu phức hợp cũng có thể được dẫn xuất từ các kiểu dữ liệu đã tồn tại bằng cách hạn chế một kiểu dữ liệu phức hợp khác (trong thành phần của nó hoặc trong cấu trúc của nó) hoặc mở rộng một kiểu dữ liệu đơn giản hoặc phức hợp. Định nghĩa kiểu phức hợp bao gồm các thuộc tính sau: - Tên. - Kiểu cơ sở và phương pháp dẫn xuất (nếu là kiểu dẫn xuất). - Khai báo thuộc tính chứa phần tử con như đã mô tả ở trước. - Kiểu nội dung (elementOnly, empty, mixed hoặc kiểu đơn giản). - Mô hình nội dung (trong trường hợp elementOnly): chứa phần tử con (như đã mô tả ở dưới) khai báo cấu trúc của nội dung phần tử. Nội dung phần tử có thể được lồng thêm vào các phần tử , , và cho phép chỉ ra các thuộc tính tương đồng như DTD. 4. Khả năng thay thế phần tử và kiểu Lược đồ XML cung cấp cơ chế nhóm thay thế cho phép các phần tử (kiểu) được thay thế bởi các phần tử (kiểu) khác. Cụ thể hơn, các phần tử có thể được gán cho một nhóm phần tử đặc biệt mà được xem là có khả năng thay thế cho một phần tử có tên đặc biệt gọi là phần tử đầu. Các phần tử trong một nhóm thay thế phải có cùng kiểu như phần tử đầu, hoặc có thể có kiểu dẫn xuất từ kiểu của phần tử đầu. Tương tự như sự thay thế phần tử, lược đồ XML đưa ra khả năng thay thế kiểu, tức là khả năng thay thế nội dung phần tử bằng nội dung khác. Nguyên lý của thay thế kiểu là một kiểu cơ sở có thể được thay thế bởi bất kỳ một kiểu dẫn xuất nào. Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 99 5. Kiểu trừu tượng và phần tử trừu tượng Lược đồ XML đưa ra khái niệm kiểu trừu tượng và phần tử trừu tượng. Như thường thấy trong mô hình hóa hướng đối tượng, kiểu trừu tượng có thể không có thể hiện trực tiếp nhưng có thể có kiểu con cụ thể. Nếu một phần tử được khai báo là kiểu trừu tượng thì trong một tài liệu thể hiện XML mô hình nội dung của phần tử đó có thể không phải là của kiểu trừu tượng nhưng là của một trong các kiểu dẫn xuất của kiểu trừu tượng đó. Khái niệm trừu tượng cũng áp dụng cho phần tử. Nếu một phần tử được khai báo trừu tượng thì trong một tài liệu thể hiện XML phần tử đó có thể không xuất hiện nhưng các phần tử thuộc nhóm thay thế cho phần tử trừu tượng lại có thể xuất hiện tại vị trí của nó. 6. Ràng buộc toàn vẹn Lược đồ XML hỗ trợ ràng buộc toàn vẹn và ràng buộc toàn vẹn tham chiếu đã biết trong mô hình quan hệ: duy nhất, khóa và khóa tham chiếu. Duy nhất/khóa chỉ ra một danh sách thuộc tính phải nhận dạng duy nhất mỗi mục giữa một tập các nút được đánh địa chỉ bằng một bộ chọn (là một biểu diễn XPath được hạn chế). Cơ chế này mạnh hơn khái niệm ID/IDREF trong DTD. Lược đồ XML có nhiều ràng buộc tham chiếu và đồng nhất như: - Nội dung phần tử có thể được định nghĩa là duy nhất. - Các thuộc tính không chỉ mục (non-ID) có thể được khai báo hoặc là duy nhất hoặc là khóa. - Sự kết hợp nội dung phần tử và các thuộc tính có thể được khai báo là duy nhất hoặc khóa, tức là không chỉ duy nhất mà luôn hiện diện và không rỗng. - Lược đồ XML phân biệt giữa duy nhất và khóa. - So sánh giữa các trường khóa tham chiếu và các trường khóa hoặc duy nhất là so sánh bằng nhau về giá trị mà không phải bằng nhau về xâu. Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 100 Phụ lục C: Thuật toán của Hirst và St-Onge 1. Quan hệ từ Kỹ thuật đối sánh thuật ngữ đã đề xuất trong chương 3 sử dụng ba loại quan hệ: quan hệ rất mạnh (extra-strong) giữa một từ và sự nhắc lại nguyên thể của nó, quan hệ mạnh (strong): gồm một trong ba kịch bản đã giải thích trong mục 3.2.2 của chương 3 và quan hệ trung bình (medium), xảy ra khi có một đường dẫn được phép kết nối các synset liên kết với mỗi từ. Các định nghĩa của đường dẫn được phép sử dụng một phân loại các quan hệ synset WordNet thành các liên kết lên, xuống và ngang. Bảng C.1 sau đưa ra các ví dụ về các quan hệ synset WordNet và các hướng tương ứng của chúng. Còn hình C.1 sau các ví dụ về đường dẫn được phép cũng như không được phép. Dựa trên định nghĩa các đường dẫn được phép và lấy chiều dài lớn nhất của đường dẫn được phép bằng 4, ta phân biệt bảy trường hợp như minh họa trong hình C.2. Quan hệ Hướng Also see Horizontal Attribute Horizontal Cause Down Entailment Down Holonymy Down Hypernymy Up Hyponymy Down Meronymy Up Pertinence Horizontal Similarity Horizontal Bảng C.1 Phân loại các quan hệ trong WordNet thành các hướng Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 101 Hình C.1 Đường dẫn được phép và không được phép trong thuật toán của Hirst và St-Onge Hình C.2: Phân loại các quan hệ ngữ nghĩa trong WordNet 0 1 1 1 1 5 5 5 5 5 5 4 4 4 3 3 3 3 7 7 7 2 6 6 6 2 6 6 2 2 6 Các nút trong đồ thị này mô tả các synset của các từ (word). Các quan hệ ngữ nghĩa giữa các từ được chai thành bốn loại: Tương đương (Equivalent): tồn tại một hay nhiều liên kết ngang giữa các synset của các từ (trường hợp 3). Rộng hơn (Broader than): tồn tại một hay nhiều liên kết lên giữa hai synset (trường hợp 1) hoặc các liên kết lên theo sau là các liên kết ngang (trường hợp 5). Liên quan tới (Related-to): tồn tại một liên kết lên theo sau là một liên kết xuống và có thể là các liên kết ngang (hai từ có một từ bao (hypernym) chung) (trường hợp 4). Hẹp hơn (Narrower than): tồn tại một (hoặc nhiều) liên kết xuống giữa hai synset (trường hợp 2) hoặc một liên kết xuống theo sau bởi các liên kết ngang (trường hợp 6 và 7). Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 102 2. Thuật toán đối sánh thuật ngữ // Quan hệ rất mạnh if (word1=word2) return 24; else // Quan hệ mạnh S1=synsetsOf(word1); S2=synsetsOf(word2); foreach s1 in S1 H1=horizontalSynsets(word1); U1=UpwardSynsets(word1); D1=DownwardSynsets(word1); foreach s2 in S2 H2=horizontalSynsets(word2); U2=UpwardSynsets(word2); D2=DownwardSynsets(word2); if s1=s2 then return 16; if (s1 is In(H2) or s2 is In(H1)) return 16; if (s1 is In(U2) or s1 is In(D2)) return 16; if (s2 is In(U1) or s2 is In(D1)) return 16; endif // Quan hệ trung bình listOfWeight=medStrong(0,0,0,s1,S2); return (max(listOfWeight)); MedStrong (state, distance, chdir, from, To) if ((from is In(To) and (distance > 1)) // tìm thấy đường dẫn listOfWeigth.add(8-distance-chdir); return true; endif if (distance >= 5) // đường dẫn quá dài return false; endif if (state = 0) H=horizontalSynsets(from); U=UpwardSynsets(from); D=DownwardSynsets(from); retU=retD=retH=false; foreach u in U retU=retU or medStrong(1,distance+1,0,h, To); // thử đi lên (state =1) foreach d in D retD=retD or medStrong(2,distance+1,0,d, To); // thử đi xuống (state =2) foreach h in H retH=retH or medStrong(3,distance+1,0,d, To); // thử đi ngang (state =3) return (retU or retD or retH); endif if (state = 1) // thay đổi hướng đầu tiên là lên, sau đó có thể chuyển sang lên hoặc ngang H=horizontalSynsets(from); U=UpwardSynsets(from); D=DownwardSynsets(from); retU=retD=retH=false; foreach u in U retU=retU or medStrong(1,distance+1,0,h, To); // thử đi lên (state =1) foreach d in D retD=retD or medStrong(4,distance+1,1,d, To); // thử đi xuống (state =4) foreach h in H retH=retH or medStrong(5,distance+1,1,d, To); // thử đi ngang (state =5) return (retU or retD or retH); endif Phụ lục Võ Sỹ Nam. Luận văn cao học – chuyên ngành công nghệ thông tin 103 if (state = 2) // đi xuống H=horizontalSynsets(from); D=DownwardSynsets(from); retD=retH=false; foreach d in D retD=retD or medStrong(2,distance+1,0,d, To); // thử đi xuống (state =2) foreach h in H retH=retH or medStrong(6,distance+1,0,d, To); // thử đi ngang (state =6) return (retD or retH); endif if (state = 3) // đi ngang H=horizontalSynsets(from); D=DownwardSynsets(from); retD=retH=false; foreach d in D retD=retD or medStrong(7,distance+1,0,d, To); // thử đi xuống (state =7) foreach h in H retH=retH or medStrong(3,distance+1,0,d, To); // thử đi ngang (state =3) return (retD or retH); endif if (state = 4) // đi lên hoặc xuống D=horizontalSynsets(from); retD=false; foreach d in D retD=retD or medStrong(4,distance+1,0,d, To); // thử đi ngang (state =4) return (retD); endif if (state = 5) // đi lên hoặc ngang H=horizontalSynsets(from); D=DownwardSynsets(from); retD=retH=false; foreach d in D retD=retD or medStrong(4,distance+1,2,d, To); // thử đi xuống (state =4) foreach h in H retH=retH or medStrong(5,distance+1,1,d, To); // thử đi ngang (state =5) return (retD or retH); endif if (state = 6) // đi xuống và ngang H=horizontalSynsets(from); retH=false; foreach h in H retH=retH or medStrong(6,distance+1,1,d, To); // thử đi ngang (state =6) return (retH); endif if (state = 7) // đi ngang và xuống D=horizontalSynsets(from); retD=false; foreach d in D retD=retD or medStrong(7,distance+1,1,d, To); // thử đi ngang (state =7) return (retD); endif Danh mục tài liệu tham khảo [1] S. Amer-Yahia, S. Cho, D. Srivastava. Tree Pattern Relaxation, EDBT, 2002. [2] A. Budanitsky, G. Hirst. Semantic distance in WordNet: An experimental, application oriented evaluation of five measures, 2003. [3] D. Carmel, N. Efraty, G.M. Landau, Y.S. Maarek, Y. Mass. An Extension of the vector space model for querying XML documents via XML fragments. Second Edition of the XML and IR Workshop, In SIGIR Forum, Volume 36 Number 2, Fall 2002. [4] G. Cobena, S. Abiteboul, A. Marian. Detecting changes in XML Documents. In ICDE, 2002. [5] H.H. Do, S. Melnik, E. Rahm. Comparison of schema matching evaluations. In Proceedings of the second International Workshop on Web Databases, 2002. [6] A.H. Doan. Learning to map between structured representations of data. PhD thesis, University of Washington, 2002. [7] Lexical chains as representations of context for the detection and correction of malapropisms. In: Christiane Fellbaum (editor), WordNet: An electronic lexical database, Cambridge, MA: The MIT Press, 1998. [8] ISO, Information Processing- Text and Office systems- Standard Generalization Markup Language (SGML), (ISO 8879:1986), International Organisation for Standardisation, Geneva, 1986. [9] P. Leinonen. Automating XML Document Structure Transformations. In Proceedings of the ACM Symposium on Document Engineering, France, 2003. [10] G. Linden. Structured document transformations. Report A-1997-2. CS Department of University of Helsinki, Finland, 1997. [11] J. Madhavan, P.A. Bernstein, E. Rahm. Generic schema matching with Cupid. In Proceedings of the International Conference on Very Large Databases (VLDB), 2001. [12] S. Melnik, H. Garcia-Molina, E. Rahm. Similarity Flooding: A versatile Graph Matching Algorithm and its Application to Schema Matching. In Proceedings of the 18th International Conference on Data Engineering, 2002. [13] R. Miller. The Clio Project: managing heterogeneity. ACM SIGMOD Record 30(1): 78-83, 2001. [14] A. G. Miller (1995). WordNet: A lexical Database for English. ACM 38 (11), pages 39-41, 1995. [15] Mong Li Lee, Liang Huai Yang, Wynne Hsu, Xia Yang. XClust: Clustering XML Schemas for Effective Integration, in 11th ACM International Conference on Information and Knowledge Management, McLean, Virginia, November 2002. [16] E. Pietriga, J-Y. Vion-Dury, V. Quint. Vxt: a visual approach to XML transformations. In Proceedings of the ACM Symposium on Document Engineering, 2001. [17] E. Rahm and P.A. Bernstein. A survey of approaches to automatic schema matching. In VLDB Journal, pages 10: 334-350, 2001. [18] N. Routledge, L. Bird, A. Goodchild. UML and XML Schema, ADC, 2002. [19] D. Shasha, J. Wang, K. Zhang, and F. Shih. Fast algorithms for the unit cost editing distance between trees. In Journal of Algorithms, pages 581-621, 1990. [20] L. Xu. Source Discovery and Schema Mapping for Data Integration, PhD thesis, 2003. [21] L. Zamboulis. XML Schema Matching & XML Data Migration & Integration: A Step Towards The Semantic Web Vision. Technical Report, 2003. [22] A. Boukottaya. Schema Matching for Transforming Structured Documents. In DocEng'05, 2-4, 2005. [23] A. Vernet. XML transformation languages. Có thể xem tại: [24] XML Schema, W3C Recommendation, 2004. Có thể xem tại: [25] XML Schema Part 0: Primer, W3C Recommendation, 2004. Có thể xem tại: [26] XML Schema Part 1: Structures, W3C Recommendation, 2004. Có thể xem tại: [27] XML Schema Part 2: Datatypes, W3C Recommendation 2004. Có thể xem tại: [28] XSL Transformations (XSLT), W3C Recommendation, 2004. Có thể xem tại:

Các file đính kèm theo tài liệu này:

  • pdfLuận văn- Đối sánh tự động lược đồ XML.pdf