Hi Holger,
Yep. Peter is, as ever concise, in his expression of the situation, but
he does not have users and existing code to worry about! :-)
"Resource" isn't quite right though "resource" in web arch is used
various different ways by different groups anyway.
RDF was originally describing things on the web. Literals aren't on the
web. (Shock, horror!) RDF then become describing the real world. We
can discuss whether "numbers" are part of the real world. Well, "we"
can; I'll skip that bit.
"RDF term" is the union of IRIs, bnodes and literals (I x B x L). "RDF
term" was invented in the SPARQL 1.0 WG because RDF did not have the
terminology to for I x B x L.
This is now in the RDF 1.1 spec. It's been imported into RDF 1.1 Ditto
"Dataset".
In Jena, there is RDFNode.
Actually, the API layer is different - the Graph layer is closer, but
generalises, the RDF abstract data model. The generalization is
necessary: inference and query can get literals in property locations
for example. And then there are variables.
A relative recent effect is:
https://github.com/commons-rdf/commons-rdf
and that does not have a nice name for I x B. "BlankNodeOrIRI". RDF 1.1
should have defined a good word, if there is one.
"TheThingsThatCanBeSubjects" really is no good.
The Jena RDF API Resource also has differences from like IRI x BNodes
because there are concepts like "get property of" so a Resource is a
pair of (graph, rdf term) else you can't find triples with that subject.
commons-rdf can't express that - it could be another API on top of Jena
core (Graph/Triple/Node). This can't be a replacement for the existing
API. It is going to be a bit laborious to code against if you have to
pass graph and term around all the time. (I've mocked up an
implementation - it's pretty easy ; using it is yukky to my Jena eye.)
There simply aren't enough different words for every nuance, and
meanings change. Library code is harder to change.
Andy
On 20/12/14 04:11, Holger Knublauch wrote:
According to the official W3C spec [1] the term "Resource" is used for
things in the universe of discourse (or real world). In W3C lingo, such
resources are denoted by IRIs, literals and blank nodes. This is
reflected by the RDF Schema spec, which has root classes
rdfs:Resource
rdfs:Literal
rdfs:Class
rdf:Property
Now looking at the Jena (and Sesame) Model API, the term "Resource" is
used for "URI or blank node":
RDFNode
Literal (have label, datatype)
Resource (have URI or bnode ID)
Property
basically assuming that we have an RDF schema such as
rdfs:Node
rdfs:Literal
rdfs:Resource
rdf:Property
which makes sense to me (from a programmer's point of view). Yet, in the
RDF Shapes group this topic is currently widely discussed, and some
people state that the Jena developer made a "stupid" [2] mistake. Do any
of you remember why the current interfaces were named like this so that
we now have this mismatch?
Thanks
Holger
[1] http://www.w3.org/TR/rdf11-concepts/
[2]
http://lists.w3.org/Archives/Public/public-data-shapes-wg/2014Dec/0185.html