- From: Danny Ayers <danny.ayers@gmail.com>
- Date: Wed, 26 Oct 2005 02:50:36 +0200
- To: Xavier Noria <fxn@hashref.com>
- Cc: semantic-web@w3.org
On 10/25/05, Xavier Noria <fxn@hashref.com> wrote: > > In RDFS and friends properties do not "belong" to classes, whereas in > OOP normally they do. For instance, if you've got an instance of > foaf:Person you cannot assume there's any assertion about > foaf:interest for him. > > Which is the rationale behind that choice? The rationale is pretty much what Rich said, though to fill in some bits - There's a bit of a conceptual shift from OO classes to their RDFS namesakes, the typing is done rather differently.Personally I tend to think of the latter more as sets, as in really easy set theory (Venn diagrams and the like), and as far as I'm aware the logic is generally consistent with that. When you bring in properties they're something that draws a ring around a couple of sets, an arrow between them. But when it comes to inheritance, it's like adding a dimension, below there's a simple graph (or list of 3-part statements), upwards there's the class/property hierarchies. For some weird mathematical reason it happens that statements like (X subClassOf Y) and (subClassOf type Property) work in such a world, mushing up the the dimensions a bit. But the logic is solid, you can build engines on it. A key bit on the assumptions is that "missing isn't broken" [1], the rationale there being I guess that this kind of a model will work in the Web environment, where you can't be sure in advance how much or how little further info will be available. You will never see a NullPointerException with the RDF model. If you're familiar with relational databases, there's a fairly close correspondence. A property is a table (call it foaf:name) with two columns, subject (e.g. _:person) and object ("Xavier Noria"). The biggest difference here is that in the traditional relational model (i.e. SQL) any statement/row that's not in the table is considered logically false, in the the RDF (open world) model it's just unknown. If you can take all that lot on faith, there's probably another place you should look, the RDFS rules made explicit [2] (derived from the the specs). This viewpoint is down in predicate logic land. If you've ever played with Prolog that's also very close (but like the relational DBs assumes a closed-world model, missing is false). Having said all that, the object-oriented view can be a reasonable approximation. Cheers, Danny. [1] http://rdfweb.org/mt/foaflog/archives/2003/07/24/12.22.48/ [2] http://www.agfa.com/w3c/euler/rdfs-rules.n3 See also: Semantic Web Tutorial Using N3 - http://www.w3.org/2000/10/swap/doc/ Starting Points - http://dannyayers.com/archives/2005/10/03/semantic-web-starting-points/ -- http://dannyayers.com
Received on Wednesday, 26 October 2005 00:50:58 UTC