If you have compound property names such as RealFriend.address and VirtualFriend.address, it’s a good indication that you should split up the relationship and make the address a standalone resource. Then you can reuse the address property for both cases. Which gives
_:friend1 a :VirtualFriend ; :address [ a :VirtualAddress ; foaf:mbox <> ] . _:friend2 a :PhysicalFriend ; :address [ a :PhysicalAddress ; :street_name “...” ] . and then probably :VirtualAddress rdfs:subClassOf :Address . :PhysicalAddress rdfs:subClassOf :Address . :address rdfs:range :Address . I think that matches your description quite closely. On Thu, 29 Apr 2021 at 20.16, Laura Morales <laure...@mail.com> wrote: > > Can you use subproperties? > > > > One point of RDF is to avoid collisions do data can be merged safely. > > I don't think subproperties are the answer. My problem is that the meaning > of a property is defined within the boundaries of the whole vocabulary, > whereas I'd like the meaning to be defined within the boundaries of its > "neighborhood" context. If it makes sense. > For example I could have two classes, RealFriend.address and > VirtualFriend.address. Here I'd like "address" to mean 2 different things > (physical address, email address) depending on the local context, ie. > RealFriend vs VirtualFriend. Of course I can use multiple vocabularies, or > I can rename them phys_address/email_address; but I hope the example is not > too trivial and that you can understand what I mean. >