Bernhard, Yes, I understand that this is how rdfs:domain and rdfs:range are interpreted. I agree that the "knowledge addition" of RDFS and OWL is a great strength.
I would rephrase your interpretation to: "you can use foaf:holdsAccount." "if something has a foaf:holdsAccount property then you MUST interpret it as foaf:Agent, and the value of this property MUST be interpreted as foaf:OnlineAccount". Of course, MUST is only if you choose to employ RDFS reasoners. Anything goes in non-inference,RDF-as-a-datastore land. Unfortunately, I want to employ an RDFS reasoner AND use the foaf:holdsAccount to point to /non/Online Accounts. I can't use it because my /non/online Accounts WILL be interpreted as foaf:OnlineAccounts, which I want to be satisfiably false (but is provably true). To fix this, we'd have to: - ( foaf:holdsAccount rdfs:range foaf:OnlineAccount . ) + ( foaf:holdsAccount rdfs:range ns:Account . foaf:OnlineAccount rdfs:subClassOf ns:Account . ) So, returning to my general question about asserting the domain and range of a property. Is it prematurely limiting if the first-party developers inadvertently set the range to a /subclass/ of a class that a third-party developer thinks is a reasonable range? Thanks for your consideration! Regards, Tim Lebo ps - I'm trying to collect design patterns for OWL at http://www.twine.com/twine/12dff54dt-1wj/owl-the-web-ontology-language-design-patterns On Sat, Jun 27, 2009 at 4:00 AM, Bernhard Schandl < [email protected]> wrote: > foaf:holdsAccount rdfs:domain foaf:Agent; rdfs:range foaf:OnlineAccount . >>> >>> Is constraining a property with BOTH a domain and range a good design >>> pattern? It seems rather short-sighted with respect to reuse and >>> extension. >>> >> > Domain and range are no restrictions in that sense; rather they extend the > possible (!) interpretations of resources. Hence you don't say, "you can use foaf:holdsAccount only with foaf:Agent and foaf:OnlineAccount", > but rather, "if something has a foaf:holdsAccount property then you can > interpret it as foaf:Agent, and the value of this property can be > interpreted as foaf:OnlineAccount". > > > IMO this is one of the greatest strengths of modelling with RDF(S) and OWL.
