I think you combine two differences here, which you can argue separately:
- When should a subclass be used and when should property references be used?
- When should discrimination be presented at the TBox level (subclasses) and when at the ABox level (property values, instances)?
(1) more or less coincides with the old question inheritance or delegation. And the answers are also more or less the same: use inheritance when discrimination is an integral property of the objects represented, when this discrimination property is central to your knowledge model and when the discrimination property does not have an independent reason for existence.
, , / "" (.. ). : , PropertyType, PropertyType, Property. , " ", , .
(2) .
:
- , , , , , (
LuxuryApartment Garden, Villa ..). - , , , , . , .
- , , , , .
, , .
-
Apartment Villa , , . , , Property, Villa, :
(∃ hasPropertyFeature . Garden) ⊑ Villa
hasPropertyType, -
(∃ hasPropertyFeature . Garden) ⊑ (∃ hasPropertyType . "villa"^^xsd:string)
, . , , .. .
Contra
hasPropertyType .
townHouse , TBox townHouse. ( ), - TBox, .
- - , ; . .