On Fri, Nov 29, 2013 at 2:13 PM, Milorad Tosic <[email protected]> wrote:
> " [ :name "John Doe" ]
> [ :name "Jane Doe" ]
>
> don't typically expect that there might just be _one_ thing that has both
> names. "
>
> In this case, to the best of my knowledge, we do not have any means (formal
> or programmatic) to decide about any person in this knowledge base. The only
> way that I am aware of is skolemization, but as we discussed on the list a
> while ago, it suffers from a number of formal drowbacks.
>
> More practically speaking, with the knowledge base given above, I am not
> sure we can write a SPARQL query that would answer the question about the
> number of persons. In fact, it can not answer anything about persons at all?
Remember that in OWL, RDF is a syntax, but it's not the semantics.
OWL talks about individuals in a domain. IRIs are used as
identifiers, but the individuals aren't IRIs. That's why you say,
e.g., that
:a owl:sameAs :b
There are two IRIs that name individuals, but there's just one
individual (assuming that the triple is, of course, *true*). In
SPARQL, you could write a query like
select (count(*) as ?numPeople) where {
?person :name ?name .
}
and you'd get back 2. But SPARQL is querying the RDF, *not* the
domain that OWL is actually talking about. OWL doesn't make the
unique name assumption, so in general you don't have a way of easily
reasoning about how many of something there are. OWL does have the
ability to state that two things are different, or that some number of
things are related to another (cardinality restrictions), so you can
do some kinds of "how many …?" questions, but you're right when you
say that
"I am not sure we can write a SPARQL query that would answer the
question about the number of persons."
Those are inconvenient questions to ask in OWL (and in first-order
logics in general). They're not impossible, but they're rather
inconvenient.
--
Joshua Taylor, http://www.cs.rpi.edu/~tayloj/