I've read the definition of a data-driven game engine, in several places, and one item usually mentioned is the game rules: separating them from the logic of the engine. What is meant by a "game rule"? How could it be considered data?
A data-driven game engine is one that successfully separates game-specific logic (what you call "game rules") such as weapon types, HUD layouts, keybindings, etc. from the engine's core functionality. This is achieved by having scripts or code outside of the engine that call upon the engine's functionality to build the gameplay. An example would be a game-specific HUD element that is implemented by calling upon the game engine's Sprite/2D graphic functionality. The reason data-driven engine architecture is important is because it allows the same game engine/code base to be used to support multiple game types, without having to strip out or modify core components. Below are a few articles I think you may find helpful in understanding data-driven game engine design:
The only way a game rule can be data is if it's an external script. But this method has its drawbacks like simplified cheating.
P.S. It's the first time I hear that a data driven game engine has a solid definition. Anything that includes the word "driven" is usually just a bunch of buzzwords glued together.