简体   繁体   中英

Is a RDF Triple a RDF Statement?

As the subject of the question asks, are the 2 the same thing? Are they interchangeble? If not, please explain the differences or provide clarification with an example.

To quote from the RDF Concepts specification (RDF 1.1 draft version) :

The core structure of the abstract syntax is a collection of triples, each consisting of a subject, a predicate and an object. … The assertion of an RDF triple says that some relationship, indicated by the predicate, holds between the resources denoted by the subject and object. This statement corresponding to an RDF triple is known as an RDF statement.

In other words: The abstract structure, consisting of subject, predicate and object, is called a “triple”. Triples consist of IRIs, blank nodes and/or literals. Each triple expresses some claim or fact about the world – it says that two things are in some relation to each other. This claim about the world is the “statement” encoded in the triple.

So, strictly speaking there is a difference. But that's a very subtle distinction, and often the terms are just used interchangeably.

Yes, in RDF, a statement is basically the same as a triple (or 3-tuple ).

However, there's another concept called the stating of a statement, in case of which you have to take into consideration the fact that a triple can be stated by different entities (as in people/organizations, not XML entities). In such context, a triple (subject, predicate, object) is not unique and should be described differently, depending on who states it.

The whole subject is somewhat mind-boggling. I recommend reading this summary of a thread from the RDF Interest mailing list (bring a snack). It boils down to the semantic description of RDF itself.

To sum up, it all depends on what you mean by triple . Whether it's an abstract notion or an actual stating of it. If it's the first case, I think it's safe to assume that triple and statement are interchangeable. And most of the time, when using RDF, it IS the first case.

I once ran into something on the Jena mailing list while scratching my head over the Statement-versus-Triple distinction (or analogously the Node-versus-RDFNode distinction) in the Jena Java code, and blogged about it . Here's the gist from the mailing list:

We have found that Model/Statement/RDFNode (the API) works as an application interface but it's not the right thing for storage abstractions and the Graph/Triple/Node (the SPI) works better where the regularity is more valuable. That is, we have split the application-facing design from the sub-system-facing design.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM