prefix :
prefix rdfs:
select ?X ?C ?H ?A ?U ?Y
from
where {{ ?X a ?C . ?C rdfs:subClassOf :Animal } union
{ ?Y a ?C . ?C rdfs:subClassOf :Horn }
union {?H a :Horn}
union {?A :hasHorn ?H; a ?C . filter (!isBlank(?C))
?C rdfs:subClassOf :Animal
}
union {?U a :Unicorn}}