{'fraction_non_alphanumeric': 0.018147086914995225, 'fraction_numerical': 0.0, 'mean_word_length': 5.275449101796407, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Fine-grained parallel XML filtering for content-based publish/subscribe systems

Current XML-based publish/subscribe systems only support coarse-grained message filtering: a message is either forwarded to a subscriber in its entirety or not at all. Fine-grained filtering of message elements is not supported. Such filtering capabilities can be used by subscribers to further detail their subscriptions or by message brokers to enforce fine-grained access control policies. This paper presents an XML filtering engine that enables fine-grained, parallel filtering of XML streams. It uses a novel subscription model based on the concept of nested filters and supports the efficient evaluation of constraints on node sets. We detail the data structures and algorithms used by the system to evaluate filters while parsing an XML stream and to reconstruct client-specific message versions. Experimental results show that the system can efficiently handle thousands of subscriptions and scales well with the number of active parallel filtering threads.