An XPath 3.1 expression to return the result you are looking for would be
[map:merge(?message?*?eventData?optionalParameters =>
map:for-each(
function($k,$v){if (matches($k, '^data_') then map{$k : $v} else ()}
))]
CLICK HERE to find out more related problems solutions.