[foaf-protocols] [foaf-dev] Graph Diffs, objects and meaning

Reto Bachmann-Gmür reto at gmuer.ch
Sat Apr 17 22:40:21 CEST 2010


Missed the Nathan's diff ontology. It seems the goals are close to my
diff/patch work with eventually led to the graph versioning system gvs
and its related ontology available at
http://jena.svn.sourceforge.net/viewvc/jena/gvs/trunk/rdf/metamodel.rdf

A major issue I don't exactly see how it is addressed by GUO is the
scope of bnode and their meaning in removal instruction.

[ a foaf:Person] means that there is something that is a foaf:Person.
But what does a remove operation with that triple mean? The negation
of the assertion would imply removing all foaf:PersonS, should just
the respective rdf:type statements be removed or the resources with
their context? if their type statement is to be removed we should also
consider properties which have a foaf:Person as domain or range as
their user would contradict the negation of  [ a foaf:Person].

Cheers,
reto



On Sat, Apr 17, 2010 at 2:20 PM, Story Henry <henry.story at bblfish.net> wrote:
> In another thread on this list we came across Nathan's Graph diffing
> ontology http://markmail.org/message/letornjov6wrofmx
>
> It was sidetracking the thread on pinging, so I asked Nathan to bring it
> off list. I am probably a bit improperly bringing this back to the list,
> partly because I spent some time thinking about it in more detail, and because it is
> the kind of error that I think we need to be aware that a lot of people
> are going to make. All of programming in the 20th century has been in one
> way or another OO programming, that avoided engineers confronting the
> problem of belief states.
>
> The semantic web brings this back, in a BIG way. Named Graphs are the key
> element to understanding this. This may lead some pessimists to
> say that this is a fatal flaw, that if engineers cannot understand this, the semweb
> will never get going! The thing is that 4 year old children understand it!
> We have just been moulded in our work into forgetting what we knew as kids.
> I explain this in more detail in "Are OO languages Autistic"
>
>   http://blogs.sun.com/bblfish/entry/are_oo_languages_autistic
>
> So it is really really important to understand that the fundamental distinction
> between objects and graphs, ie between speaking of things, and speaking of meaning.
> This is something that has been the core of debate in philosophy for the past 120
> years. A very lengthy summary of the philosophical debate on this issue can be found
> here
>
>   http://plato.stanford.edu/entries/prop-attitude-reports/
>
> (I am still reading it, the first few sections lay the foundations, which have to be understood)
>
> In any case when making diffs of graphs, we are doing something that requires those same contexts, which
> in the semantic web we have called named graphs.
>
> If you do not make such distinction then you get into errors such as the one described
> below
>
> So we were looking at a diff such as
>
>
> @prefix guo: <http://webr3.org/owl/guo#> .
> @prefix dcterms: <http://purl.org/dc/terms/> .
>
> _:u1 a guo:UpdateInstruction ;
>     guo:target_graph <http://webr3.org> ;
>     guo:target_subject <http://webr3.org/#nathan> ;
>     guo:delete _:d1 ;
>     guo:insert _:i2 .
>
> _:d1 foaf:knows <http://bblfish.net/#hjs> .
>
> _:i2 foaf:knows <http://bblfish.net/people/henry/card#me> .
>
>
> The above would be a request to change the relation of who nathan knew, by replacing
> foaf:knows relations to "http://bblfish.net/people/henry/card#me"
> with "http://bblfish.net/#hjs"
>
> I pointed out that the definition of foaf:knows being
>
> foaf:knows
>   a rdf:Property, owl:ObjectProperty ;
>   rdfs:comment "A person known by this person (indicating some level of reciprocated interaction between the parties)." ;
>   rdfs:domain foaf:Person ;
>   rdfs:isDefinedBy <http://xmlns.com/foaf/0.1/> ;
>   rdfs:label "knows" ;
>   rdfs:range foaf:Person ;
>   vs:term_status "testing" .
>
> Now let us take the example
>
> _:d1 foaf:knows <http://bblfish.net/#hjs> .
>
> So because
>
> foaf:knows rdfs:domain foaf:Person.
>
> it follows that
>
>  _:d1 a foaf:Person.
>
> but Nathan wants it to be
>
>  _:d1 a rdf:Statement
>
> To this Nathan responded off list that
>
> On 17 Apr 2010, at 01:42, Nathan wrote:
>> it's not rdf:Statement
>> _:d1 a rdfs:Resource .
>>
>> so if:
>>  _:d1 foaf:knows <http://bblfish.net/#hjs> .
>> then:
>>  _:d1 a rdfs:Resource, foaf:Person .
>
>
> Ok so to this I respond that _:d1 has to be an rdf:Statement !
>
> You are not trying to delete objects are you? Because then the above would be a demand
> to kill someone :-) (only half kidding)
>
> Let us improve the example a little bit to show why that does not work even more clearly
>
> @prefix guo: <http://webr3.org/owl/guo#> .
> @prefix dcterms: <http://purl.org/dc/terms/> .
>
> graph1:  {
> _:u1 a guo:UpdateInstruction ;
>     guo:target_graph <http://webr3.org> ;
>     guo:target_subject <http://foaf.me/bblfish#me> ;
>     guo:delete _:d1 ;
>     guo:insert _:i2 .
>
> _:d1 owl:sameAs <http://spammer.com/12312412#me> .
>
> _:i2 owl:sameAs <http://bblfish.net/#hjs>;
>     foaf:knows <http://webr3.org/#nathan> .
> }
>
>
> So you want to replace my long web id with my short one, and add that I know Nathan.
>
> But semantically the above graph implies
>
> _:d1 owl:sameAs _:i2 .
>
> So that you should think of your graph as implying the following
> (logic does not add new facts, it just develops what is already there)
>
> @prefix log: <http://www.w3.org/2000/10/swap/log#>.
>
> graph1 log:implies {
>  _:u1 a guo:UpdateInstruction ;
>      guo:target_graph <http://webr3.org> ;
>      guo:target_subject <http://foaf.me/bblfish#me> ;
>      guo:delete _:d1 ;
>      guo:insert _:i2 .
>
>  _:d1 owl:sameAs <http://spammer.com/12312412#me>;
>      foaf:knows <http://webr3.org/#nathan> .
>
>  _:i2 owl:sameAs _:i2 .
> }
>
> So now on your interpretation the above is a request to delete all statements,
> and to insert none.
>
> Similarly the original graph implies
>
> graph1 log:implies {
>  _:u1 a guo:UpdateInstruction ;
>      guo:target_graph <http://webr3.org> ;
>      guo:target_subject <http://foaf.me/bblfish#me> ;
>      guo:delete _:d1 ;
>      guo:insert _:i2 .
>
>  _:d1 owl:sameAs _:d1 .
>
>  _:i2 owl:sameAs <http://spammer.com/12312412#me> ;
>       owl:sameAs <http://bblfish.net/#hjs>;
>       foaf:knows <http://webr3.org/#nathan> .
>
> }
>
> Which means it implies the request according to your interpretation to
> delete no statements and to insert all statements.
>
> But it also implies
>
> graph1 log:implies {
>  _:u1 a guo:UpdateInstruction ;
>      guo:target_graph <http://webr3.org> ;
>      guo:target_subject <http://foaf.me/bblfish#me> ;
>      guo:delete _:d1 ;
>      guo:insert _:i2 .
>
>  _:d1 owl:sameAs <http://spammer.com/12312412#me> ;
>       owl:sameAs <http://bblfish.net/#hjs>;
>       foaf:knows <http://webr3.org/#nathan> .
>
>  _:i2 owl:sameAs <http://spammer.com/12312412#me> ;
>       owl:sameAs <http://bblfish.net/#hjs>;
>       foaf:knows <http://webr3.org/#nathan> .
> }
>
> Which according to your interpretation is a request to update and delete all those relations,
> ie to do nothing. ie, it implies
>
> graph1 log:implies {
>  _:u1 a guo:UpdateInstruction ;
>      guo:target_graph <http://webr3.org> ;
>      guo:target_subject <http://foaf.me/bblfish#me> ;
>      guo:delete _:d1 ;
>      guo:insert _:d1 .
>
>  _:d1 owl:sameAs _:d1 .
> }
>
>
> So it seems that the graph implies everything. When a graph implies everything it
> means that it contains a contradiction.
>
>   Again this is an easy error to fall into, especially when one tries to
> formalize what we do intuitively every day, as one can see by following the discussion
> in philosophy of the past century.
>
>   Keeping this in mind on the other hand should make a lot of problems a lot easier
> to solve. It's just a question of remembering what we all knew when we were 4.
>
>        Henry
>
> _______________________________________________
> foaf-dev mailing list
> foaf-dev at lists.foaf-project.org
> http://lists.foaf-project.org/mailman/listinfo/foaf-dev
>


More information about the foaf-protocols mailing list