Remember that we are using OWL, which has inheritence. Using an owl
hasValue restriction we can have a set of triples specified once, but
with the reasoner have be as if each instance has those triples[1].
BTW, I will anticipate the complaint about the OWL reasoner's
heaviness. Although we are prototyping with OWL, it may very well be
that the constructs we need for this task form a much simpler logic
that is tractable[2], or even fairly trivial to work with. For
instance, it may be that the run time "reasoner" only has to deal with
following subclass, subproperty, and propagating the consequences of
hasValue restrictions, and a full fledged reasoner is only used to
validate the resolution ontology when it is changed.
I am not sure how owl:hasValue can be used here? The owl:hasValue is
intended for a resource, but not the string that IDed the resource
right? For instance, if there is an ontology says the
rabbit:favoriteFood is ex:carrot. It implies every object of
rabbit:favoriteFood is a carrot, but it does not means the property
pointing to the same resource, right? There can be two instances of
carrots, one at http://example.com/foo and the other one at
http://xyz.org/bar. Although both are carrots, but they can have
different weights, colors etc., I am not sure how can owl:hasValue help
here?
As I replied to David in an earlier email, the only reasonable way to do
is to use an ontology to describe the URI's string composition. But the
semantics of a string is different from the semantics of the resource
identified by the string. To make it work, those statement (or
information) must be added somewhere. If it is not added locally (then
you would have to rewrite the URI), then it must be added globally. If
added globally, it is like put another DNS over existing DNS. If this
is the case, shouldn't it be more appropriate done outside of the RDF?
Honestly, the more I think about it, the worse I felt about the approach.
Xiaoshu
Xiaoshu