- From: Timothy Lebo <lebot@rpi.edu>
- Date: Fri, 16 Sep 2011 18:48:55 -0400
- To: Stian Soiland-Reyes <soiland-reyes@cs.manchester.ac.uk>
- Cc: public-prov-wg@w3.org
On Sep 16, 2011, at 10:06 AM, Stian Soiland-Reyes wrote: > On Fri, Sep 16, 2011 at 11:32, Khalid Belhajjame > <Khalid.Belhajjame@cs.man.ac.uk> wrote: > >>> a) Are characterizing attributes meant to also (implicitly or >>> explicitly) apply directly to the entity? >> I think implicitly. Let's say that instead of having a "blank node" that is >> associated to entity with "characterizedBy", and to which we can associate >> the chatacterizing properties of the entity, "CharacterizingAttributes" >> allows having an explicit node, to which we can attach such attributes. > > OK, I get that the characterization resource is not necessarily a > blank node (and not something we can restrict in OWL anyway). (blank nodes are rdfs:Resources unnamed by URIs; when you see a bnode, it is "just as good" as a URI according to the semantics. bnodes only become limiting in practice when they ALWAYS avoid being described AFTER they were originally stated) > > > What I meant was that if you have: > > :entity :characterizedBy :entityAttrs > > :entityAttrs dc:creator "Khalid"; > :colour :blue . Why are these characterizing entities NOT on the Entity itself? Entity is _already_ providing us the indirection that we need to distinguish between EVERYBODY'S description of the car IN ALL ETERNITY and _our_ description as we are observing it for our time period and context. > > would it then also be true that: > > :entity dc:creator "Khalid"; > :colour :blue . > ? ^^^ this is what we should be asserting to begin with. We're missing the prov:wasComplementOf to cite the "invariant" car: > :entity dc:creator "Khalid"; prov:wasComplementOf <http://toyota.com/id/vin/484570q48948dhd> . vehicle:vin "484570q48948dhd"; wgs:lat 45; wgs:long 100; > :colour :blue . > ? ^^^ when we're saying that colo[u]r of the car is blue, we're only saying it within the context of this Entity. (I'm ignoring the dc:creator b/c that should probably be asserted using PROV :-) When I run into an Entity and I see that it is (was) :blue, I ask, "WHAT was :blue?" The first cut answer is "the thing with vehicle:vin "484570q48948dhd" at <45,100>. (THIS is done by asking for all of :entity's prov:characterizingProperties - or could also be simply done by asking for all RDF properties) One of the SPECIAL characterizingProperties is prov:wasComplementOf, which is pointing at a URI of the "invariant" car in my driveway. Digging up the wasComplementOf value answers a second cut answer to "WHAT is blue?" > > > That is the semantic I get from reading the model document, but in OWL > this would be quite tricky to enforce or guide. Someone might easily > state: > > :entity :colour :red . > > and contradict the :characterizedBy - what is now the colour of the > :entity? (assuming that :colour is a functional property) > > > > >>> b) Are nested object properties included in the characterisation (like >>> a filter), or just auxiliary attributes? >> Any data or object property can be associated with CharacetrizingAttributes. > > Fine. But can the properties of those objects, are they included in > the characterization attributes, or just happen to be properties of an > entity that happens to be used in the characterization? > > This is the Luc-in-Southampton-problem: > > :car a prov:Entity ; > prov:characterizedBy :carCharacter. > > :carCharacter :owner <http://example.com/luc> ; > :colour blue . ^^^ again, too much indirection; we have it already with Entity: :car a prov:Entity; :owner :luc; prov:wasComplementOf toyota:vin98549865hddh . :owner rdfs:subPropertyOf prov:characterizingProperty . # Though, why can't we just look at ALL RDF properties as characterizing entities? > > <http://example.com/luc> foaf:based_near :Southampton . > > > now - if <http://example.com/luc> (who is not declared as an > prov:Entity here) :luc a foaf:Person here. > moves to Oxford, would he then still be the owner of > the :car by this characterization? yes or no. nothing has said anything either way. (open world) > > > I think it would simplify things if the characterisation properties is > only one level down. One level down, or simply directly on the :Entity? Simply on the prov:Entity allows any level of "down" because it's just domain-specific OWL axioms. > What about properties implied through class > membership and inference? > > Say :colour implies the class :Coloured, as a subclass of :Surfaced > with a requirement of :surface property having owl:someValuesFrom > :Surface , then :surface would by inferencing also be included in > :carCharacter. This can of course be powerful way to express complex > characterisations hierarchies, but I am of the opinion that this > primarily complicates things. > > However even with reasoning it is fairly easy to ask in SPARQL for > > SELECT ?attribute, ?value WHERE { > ?entity prov:characterizedBy ?char . > ?char ?attribute ?value . > } or even easier: SELECT ?attribute ?value WHERE { ?entity a prov:Entity; ?attribute ?value . } or, if we go with this "RDF properties are too general" view, SELECT ?attribute ?value WHERE { ?entity a prov:Entity; ?attribute ?value . ?attribute rdfs:subPropertyOf prov:characterizingProperty . # but why? let's just use what RDF already gave us. } > > (this ignores ?entity ?attribute ?value) > > >>> :car :characterizedBy :colour, :owner . >> Yes, I guess that will work as well. > > And here we (should) also have then :car :colour :blue etc. directly > on the entity. > > This proposal specifically defines that only those property types > listed, and only directly (not their object's properties), are > included in the characterisation. (To do deeper characterization, > perhaps the objects referred to can be made prov:Entity and have their > own characterisations). > > OWL-wise I guess also sub-properties of these are included - but this > is still much less complicated than supporting properties inherited by > class membership, inverse properties, etc. So eve is *not* part of the > characterization here (but it could in theory be reasoned to be so in > the first example). > > In SPARQL this is almost identical to above: > > SELECT ?attribute, ?value WHERE { > ?entity prov:characterizedBy ?attribute . > ?entity ?attribute ?value . > } > > > As a side note, one thing this proposal does not capture is partial > characterization, if the property might have multiple values, but only > a few of those are part of characterizing the entity. For instance: > > :car :owner :luc, :lucsFriend > > now we can't say that the entity is characterised by being owned by > luc and any other owner it just did say that. :lucsFriend could be :luc or <http://tw.rpi.edu/instances/TimLebo> . > - :lucsFriend would implicitly be part of the > characterization of the entity. Agreed. But how does that prevent what you think we can't say ("being owned by luc and any other owner")? > Remember these attribute values could > come from anywhere due to the open world assumption, although I do > guess we are assuming scoping by named graphs/resources to capture > what an asserter has included in the provenance. I don't think we need to assume named graph scoping. We have the indirection with prov:Entity already and these entities are being grouped by Accounts - so they can float around in the Big Graph and nothing will break. > > >>> :car :characterizedBy [ :colour, :owner ] . > > *Caugh*, here is the corrected version, as N3 syntax for lists is (): > > :car prov:characterizedBy ( :colour, :owner ) . Oh my. Reinventing OWL on top of reinventing RDF? > > > This one is unfortunately tricky in SPARQL as rdf:List are really > unpacked linked nodes and we don't know the position of the attribute. (Although I disagree with the premies) Why would order matter? > > > >> This also should work. One question Stian, at the level of the OWL ontology, >> will we need to define any class and/or object properties to allow for this >> third option? > > Yes, with some trickery this might work: > > Or just prov:characterizingProperty (or not and just using RDF properties). -Tim Lebo > prov:characterizedBy a owl:ObjectProperty, owl:FunctionalProperty ; > rdfs:domain prov:Entity ; > rdfs:range prov:CharacterizedBy . > > prov:CharacterizedProperty a owl:Class ; > rdfs:subClassOf rdf:Property . > > > prov:CharacterizedBy a owl:Class ; > rdfs:subClassOf > rdf:List, > [ > a owl:Restriction; > owl:onProperty rdf:first; > owl:allValuesFrom prov:CharacterizedProperty > ], > [ > a owl:Restriction; > owl:onProperty rdf:last; > owl:allValuesFrom [ > owl:unionOf ( prov:CharacterizedBy rdf:nil) > ] > ] > > > -- > Stian Soiland-Reyes, myGrid team > School of Computer Science > The University of Manchester > >
Received on Friday, 16 September 2011 22:49:44 UTC