Hi,
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).
Clearly.
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 . )
Instead of changing the original FOAF ontology (which only the owners
of the FOAF namespace can do), I would suggest that you add another
property for your application and define it as super-property of
foaf:holdsAccount,
foaf:holdsAccount rdfs:subPropertyOf ex:holdsAccount .
and use ex:holdsAccount instead of foaf:holdsAccount. However whenever
you encounter a foaf:holdsAccount you can treat it as instance of
ex:holdsAccount.
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?
If you do not allow ontology developers to define restrictions on the
classes and properties they define, then we end up with plain
collections of terms, but without the possibility to derive useful
conclusions from the data. However to build meaningful applications we
need constraints on the data, and if you do not need these constraints
you have two options: either do not use inference, or define your own
(unrestricted) vocabulary and link it to the .
Best, Bernhard