I am a newbie to OWL, and I have defined a node using OWL DL, as
<Declaration>
<Class IRI="#node"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#leftChild"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#parent"/>
</Declaration>
<Declaration>
<ObjectProperty IRI="#rightChild"/>
</Declaration>
<InverseObjectProperties>
<ObjectProperty IRI="#parent"/>
<ObjectProperty IRI="#leftChild"/>
</InverseObjectProperties>
<InverseObjectProperties>
<ObjectProperty IRI="#parent"/>
<ObjectProperty IRI="#rightChild"/>
</InverseObjectProperties>
<FunctionalObjectProperty>
<ObjectProperty IRI="#leftChild"/>
</FunctionalObjectProperty>
<FunctionalObjectProperty>
<ObjectProperty IRI="#parent"/>
</FunctionalObjectProperty>
<FunctionalObjectProperty>
<ObjectProperty IRI="#rightChild"/>
</FunctionalObjectProperty>
<ObjectPropertyDomain>
<ObjectProperty IRI="#leftChild"/>
<Class IRI="#node"/>
</ObjectPropertyDomain>
<ObjectPropertyDomain>
<ObjectProperty IRI="#parent"/>
<Class IRI="#node"/>
</ObjectPropertyDomain>
<ObjectPropertyDomain>
<ObjectProperty IRI="#rightChild"/>
<Class IRI="#node"/>
</ObjectPropertyDomain>
<ObjectPropertyRange>
<ObjectProperty IRI="#leftChild"/>
<Class IRI="#node"/>
</ObjectPropertyRange>
<ObjectPropertyRange>
<ObjectProperty IRI="#parent"/>
<Class IRI="#node"/>
</ObjectPropertyRange>
<ObjectPropertyRange>
<ObjectProperty IRI="#rightChild"/>
<Class IRI="#node"/>
</ObjectPropertyRange>
`
and I would like to define concepts as root, branch ad leaves, so as to infer and segregate nodes as root, branches and leaves,as root will have no parent, branch having a parent ad atleast one child, and leaves having only parent and no child, or orphan nodes having no parent ad no child.