Re: Terminology: How to call "IRI or blank node"?

On 12/21/14, 1:12 AM, Peter F. Patel-Schneider wrote:
>
> It appears that you are asking for the class whose instances are all 
> resources excluding literal values.  The expressive power required for 
> this class goes well beyond the bounds of RDFS.

This is quite surprising... to have a language that includes rdfs:range 
but no mechanism to say that all values of a property need to be nodes 
that can have further properties ("objects" in OO speak). This concept 
is fundamental, because it includes everything that can be a subject, 
i.e. have properties of their own.

>
> This new class cannot be the superclass of all classes.  It is not a 
> superclass of the class that is the fixed meaning of rdfs:Resource, of 
> course, and it is also not a superclass of class that is the fixed 
> meaning of rdfs:Literal or of any of the datatype classes.  Making 
> this class a superclass of all classes would break RDFS.

I think we need to break RDFS anyway, don't we? RDFS is fundamentally 
not suited for closed world constraint checking, see the semantics of 
rdfs:domain and range, the lack of an enforceable identification 
mechanism for blank nodes and other weird design decisions that were 
made with good intentions, but different use cases in mind.

>
> It would also not be the case that the meaning of all IRIs and blank 
> nodes would belong to this new classes.  In RDF the meaning of an IRI 
> or a blank node can be a literal value.

Based on my current understanding, I think we should simply make the 
following pragmatic assumptions:

- if a property has no valueType/range, then it can have IRIs, bnodes or 
literals
- if a property has valueType=rdfs:Resource then it can have IRIs and bnodes
- if a property has valueType=rdfs:Literal then it can have a literal of 
any datatype.

This is how it's currently implemented in the systems that I know of 
(and certainly the tools that I helped developed, and I went through the 
code for form generation in many iterations). We just cannot introduce 
another named class for "IRI or bnode" because it breaks the superclass 
relationships of all existing ontologies. And I want to continue to be 
able to use something like

     ?type rdfs:subClassOf* ?valueType .
     ?instance rdf:type ?type .

to find all possible values of a given value type.

Anything else seems just not practical given that the foundations of 
RDFS are what they are, whether we like them or not.

Having said this, I am of course OK with avoiding the term "Resource" in 
the prose of the specs - rdfs:Resource as above is just used as a URI 
even if it does not fully align with the philosophically inspired 
meaning of "Resource" in the RDF specs.

Holger

Received on Saturday, 20 December 2014 22:49:13 UTC