Smart Communities of Intelligent Software Agents for Collaborating and Semantically Interoperable Micro-Grids