Aspect-Oriented Programming enables the isolation and modularisation of crosscutting concerns that are typically implemented in a tangled fashion within the base system. However, the composition of these aspects is not completely orthogonal; with interactions between aspects involving direct and indirect dependencies, and conflicts that can cause runtime inconsistencies when those interactions are not detected. This is particularly true of the dynamic composition and adaptation of aspects within distributed systems; therefore in this paper we propose a semantic composition model to detect and solve these interaction issues at runtime. Our approach can be employed in dynamic AOP middleware, and we evaluate it here within the AO-OpenCom tool. We measure the overhead incurred by the semantic composition model when performing safe dynamic reconfigurations.