Feasbility of object relationships with same name

Hi,

I have a question about ontology development using the so:domainIncludes and so:rangeIncludes. Would the following reuse of the has_type object property lead to problems in querying?

@prefix : <tag:stardog:api:> .

## Class definitions
:application a owl:Class ;
   rdfs:label "Application" .

:application_type a owl:Class ;
   rdfs:label "Application Type" .

:business a owl:Class ;
   rdfs:label "Business" .

:address a owl:Class ;
   rdfs:label "Address" .

:address_type a owl:Class ;
   rdfs:label "Address Type" .

## Object property definitions
:has_address a owl:ObjectProperty ;
   rdfs:label "has address" ;
   so:domainIncludes :business ;
   so:rangeIncludes :address .

:submitted a owl:ObjectProperty ;
   rdfs:label "submitted" ;
   so:domainIncludes :business ;
   so:rangeIncludes :application .   

:has_type a owl:ObjectProperty ;
   rdfs:label "has type" ;
   so:domainIncludes :address ;
   so:rangeIncludes :address_type .

:has_type a owl:ObjectProperty ;
   rdfs:label "has type" ;
   so:domainIncludes :application ;
   so:rangeIncludes :application_type .

From another post with @pavel , I learned of the disjunction (so:) vs conjunction (rdfs:) difference between these ways of defining domain and range. And here since so: is disjunction, I would assume that this definition is appropriate / useful. Is this an accurate conclusion?

Ultimately, my goal here is to minimize ontology complexity to make it easy for users to use the same predicate to access classes of similar meaning. Any thoughts, suggestions?