Probabilistic logic programming