Disjunctive Logic Programming with types and objects: The DLP+ System