Semantics associates meaning with Internet of Things (IoT) data and facilitates the development of intelligent IoT applications and services. However, the big volume of the data generated by IoT devices and resource limitations of these devices have given rise to challenges for applying semantic technologies. In this article, we present Cloud and edge based IoT architectures for semantic reasoning. We report three experiments that demonstrate how edge computing can facilitate IoT systems in terms of data transfer and semantic reasoning. We also analyze how distributing reasoning tasks between the Cloud and edge devices affects system performance.