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 <[email protected]> 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.
>