IMHO, to have different meanings in RDF, you need two different IRIs. Two meanings in the same IRI is only possible if the "meaning" resides on people's minds.
However, one possible solution would to *store* in RDF: :Alice :phys_address "Some st., no 23, Miami, FL, USA". :Bob :email_address "[email protected]" . Then, in an ontology you could have: :email_address rdfs:subPropertyOf :address . :phys_address rdfs:subPropertyOf :address . Then, with reasoning enabled, you could query: SELECT * WHERE { ?who :address ?where } LIMIT 10 You could also do the other way around, store :address triples and then use rules (just reasoning will soon not be sufficient) to infer the more specific properties. This strategy can also work for implementing the multiple meanings for classes. Note that reasoning in production might not be really pleasant in the speed aspect. You may want to materialize the entailments using an external reasoner and them load the entailed RDF into Jena for querying. I've used vlog <https://github.com/karmaresearch/vlog/> recently with really good performance, but its interface is not friendly. On Thu, Apr 29, 2021 at 3:16 PM 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. > -- Alexis Armin Huf <[email protected]>
