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.
>

Reply via email to