I'm learning about semantic web, and I'm trying to have a clear understanding of the possibilities and limitations of such a technology, and so far it looks very interesting !!
I was wondering about a use case, but not sure if it is possible to model it with RDF and if it still make sense in regards of the RDF and OWL principles. Is it possible to use a statement as the object of another statement? Here is a basic schema:
And pseudo triples:
A hasValue B.
C hasValue <A hasValue B>.
My goal here is not to describe that "C has the value B" but that "C has the value that A has".
From what I understood the issue here is that statements are not resources so they do not have IRIs hence they cannot be used as objects in statements. RDF seems to allow the description of the statement as a resource (https://www.w3.org/TR/rdf-schema/#ch_statement). If my understanding of this is correct, here is what it would look like:
rel a rdf:Statement;
rdf:subject A;
rdf:predicate hasValue;
rdf:object B.
C hasValue rel.
This does not seem to be convenient: either all the relationships are modeled as statement resources (so they can potentially be later be used as an object in another statement), either they are declared literally (as in my pseudo triples above) but they should be switched to a statement resource later.
Finally, beyond the description in RDF, is it possible to use OWL to define an ontology that would support this kind of situation?
Edit 19/11/2020:
I'm adding some details to provide a better description of what I would like to achieve.
In the example above I want A to have a value B, and C to have the same value as A. As the statement describing the value of C is not directly using B as an object, I know that the final value of B will have to be inferred from multiple statements.
What I would like to achieve is to be able to later edit the statement about the value of A, but still want C to have the same value as A (its value would be inferred again).
Here is a better example (I hope) of what I have in mind:
- With the following statements, I would like to able to infer that the value of C is B:
rel a rdf:Statement;
rdf:subject A;
rdf:predicate hasValue;
rdf:object B.
C hasValue rel.
- Then if I edit the statement that defines the value of A as following, I would like that inferring the value of C give a different result (B1):
rel rdf:object B1.
Is it something that can be achieved with RDF?
Many thanks!