Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between rdf:resource and rdfs:Resource?

In RDF 1.1 XML Syntax documentation rdf:resource is used as a shortened form when defining Empty Property Elements:

When a predicate arc in an RDF graph points to an object node which has no further predicate arcs, which appears in RDF/XML as an empty node element (or ) this form can be shortened. This is done by using the IRI of the object node as the value of an XML attribute rdf:resource on the containing property element and making the property element empty.

In RDF Schema 1.1 rdfs:Resource is defined as a class:

All things described by RDF are called resources, and are instances of the class rdfs:Resource. This is the class of everything. All other classes are subclasses of this class. rdfs:Resource is an instance of rdfs:Class.

How are the two related? Does an rdf:resource value always belong to rdfs:Resource class and the other way around?

like image 322
giulio Avatar asked Jul 07 '19 17:07

giulio


People also ask

What is the difference between RDF and Rdfs?

RDF in general is a method of conceptual data modelling. RDFS provides a mechanism for describing groups of related resources (RDF), and the relation between them. Example of these properties are classes, sub-classes, range and domains. So in essence, RDFS is a semantic extension of RDF.

What does Rdfs stand for?

RDF Schema (Resource Description Framework Schema, variously abbreviated as RDFS, RDF(S), RDF-S, or RDF/S) is a set of classes with certain properties using the RDF extensible knowledge representation data model, providing basic elements for the description of ontologies.

What is the difference between XML and RDF?

The main difference: XML is a syntax while RDF is a data model. RDF has several syntaxes (Turtle, N3, etc) and XML is one of those (known as RDF/XML). Actually, RDF/XML is the only W3C standard syntax for RDF (Currently, there is Last Call on Turtle, a new W3C standard syntax for RDF).


1 Answers

They are not related, at all. They just happen to share a name because they both have something to do with resources.

The term "resource" is central to the RDF data model (it's Resource Description Framework, after all). A resource in RDF is, very generally speaking, anything that can be identified by a URI (there's heaps of technical details regarding how things like blank nodes and literals fall under this definition, but for simplicity's sake we'll ignore that here).

rdf:resource is just a syntax element in the RDF/XML syntax, namely an attribute to identify the resource that is the property value. For example, here's a simple RDF model (1 triple), in RDF/XML:

<rdf:Description rdf:about="http://example.org/Bob">
    <foaf:address rdf:resource="http://example.org/address1"/>
</rdf:Description>

Here, http://example.org/Bob is the subject resource, and foaf:address is a property of that subject (used to link the subject resource to a value). The property value in this case is also a resource (http://example.org/address1), so in the RDF/XML syntax we use rdf:resource attribute to link it. If you were to write the same RDF model in a different syntax though (for example, Turtle), you wouldn't see rdf:resource appear at all:

<http://example.org/Bob> foaf:address <http://example.org/address1> .

In RDF Schema, the class rdfs:Resource is the class of all resources. It is a concept, not a syntax-specific mechanism. Since pretty much anything in RDF is a resource, it is the 'top-level' class of things. All things are resources, so if you introduce a new class, for example "Person", it will (automatically) be a subclass of rdfs:Resource.

<http://example.org/Bob> rdf:type <http://example.org/Person> . 
<http://example.org/Bob> rdf:type rdfs:Resource . 

Note that the second triple is a logical consequence of the first triple. Therefore, in practice, the fact that bob is a Resource is almost never explicitly written down in RDF models - if needed, it can be inferred.

like image 115
Jeen Broekstra Avatar answered Sep 18 '22 12:09

Jeen Broekstra