W3C home > Mailing lists > Public > public-rdf-dawg@w3.org > July to September 2006

ISSUE: Inconsistent graphs (and illformed literals)

From: Bijan Parsia <bparsia@cs.man.ac.uk>
Date: Wed, 16 Aug 2006 14:37:05 +0100
Message-Id: <69432026-6B60-4DA9-9286-37D80FD873EB@cs.man.ac.uk>
To: RDF Data Access Working Group <public-rdf-dawg@w3.org>

I hope this is an easy point to resolve.

In <http://lists.w3.org/Archives/Public/public-rdf-dawg/2006JulSep/ 
0101>, I pointed out this phrase:

See <http://www.w3.org/TR/rdf-mt/#RDFINTERP>

""""""An ill-typed literal does not in itself constitute an
inconsistency, but a graph which entails that an ill-typed literal
has rdf:type rdfs:Literal, or that an ill-typed XML literal has
rdf:type rdf:XMLLiteral, would be inconsistent.""""""

However, RDF does not allow us to express such inconsistency, since  
we can neither have a literal in a subject position, nor can we  
equate a URI with a particular literal, nor can we fix the range of a  
BNode to illtyped literals (though in RDFS we can). (At least, I  
couldn't think of how to write an RDF-inconsistent graph...Pat?)

And of course datatyped interpretations allow for more inconsistency.  
OWL, of course, allows for much more.

Simple interpretations (and I believe RDF interpretations) never  
result in inconsistency.

Hmm. Do I have an example of an inconsistent RDFS without D  
Entailment graph? I guess it doesn't matter since we sanction D  
entailment. RDF + D entailment + our sanctioned datatypes can  
definitely have inconsistent graphs:

	:x rdf:type xsd:positiveInteger.
	:x rdf:type xsd:negativeInteger.

(See <http://www.w3.org/TR/rdf-mt/#DTYPEINTERP> for example of other  
inconsistent, typically RDFS, graphs.)

(Ooh, there is some trickiness when dealing with illtyped literals  
and the comparison operators. For example, is isLiteral 
("adfadf"^^xsd:integer) true? I think not by D-Entailment, since it's  
a illformed literal and

	 """The condition also requires that an ill-typed literal, where the  
literal string is not in the lexical space of the datatype, not  
denote any literal value. Intuitively, such a name does not denote  
any value, but in order to avoid the semantic complexities which  
arise from empty names, the semantics requires such a typed literal  
to denote an 'arbitrary' non-literal value. """"

So it denotes a *non*-literal value, thus it isn't a literal, thus  
the isLiteral is false! Tricky to get around this if literals are  
supposed to "give" their values from the graph.)

Personally, I think inconsistent graphs by RDF, datatype, or RDF/ 
Datatype, or RDFS or RDFS/Datatype interpretations are rather rare.  
But it's worth settling the corner case.

Inconsistent graphs entail everything, thus entail all answers.  
That's obviously silly.

There are two additional choices:

	1) An inconsistent graph returns no answers
	2) A query on an inconsistent graph returns an error, oh,  
"inconsistent graph".

I personally prefer the latter.

Note, just as an aside, I think this shows that the original idea of  
just doing graph matching and then doing graph matching against  
"virtual graphs" is not, by itself, a sufficient way of  
specification, even aside from the other problems it has with scaling  
to OWL. There are other side conditions that one must check.

Oh, there is a third choice, though I tend not to take it seriously:
	3) An inconsistent graph returns the set of answers that graph  
matching against a graph generated by forward chaining application of  
the entailment rules + some hacking to avoid BNode proliferation.

3 can be used as a way to detect contradictions, since there is a  
(large, disjuncitve) query that should test for datatype clashs. But  
clearly this particular incompleteness isn't sanctioned by the  
semantics, and we have to be *very* careful about specifying the  
rules and how they are applied to assure interoperability.

It wouldn't be that hard to come up with a paraconsistent reading of  
all this so as to get some version of 3 (i.e., "useful answers" out  
of the graph). For example, we could sanction all answers following  
from every maximal consistent subgraph of the inconsistent graph. It  
would still be good to distinguish between some answers that don't  
follow because the triples *aren't there* and some answers not  
following because they depend on *inconsistent* triples.

Received on Wednesday, 16 August 2006 13:37:33 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:00:51 UTC