I want to make a reified 'statement about a statement', say I have userX memberOf groupY and want to make a statement about that (say, that they joined on May 11).
So, I have something like:
statementX a rdf:statement
statementX subject userX
statementX predicate memberOf
statementX object groupY
statementX since "2022-05-11T11:32:52"^^xsd:dateTime
My question is, is it worthwhile subclassing rdf:statement? Say UserGroupStatement rdf:subClassOf rdf:statement, then statementX a UserGroupStatement.
Does that make sense, is it something people do? Or do people just use rdf:statement, or create their own joining classes? What would be the pros and cons?
In my thinking, it would at least allow me to model that a certain type of statement has certain properties, e.g. that a UserGroupStatement has a 'since' property (domain UserGroupStatement, range xsd:datetime). But then I can see that it doesn't help me specify anything else, because the subject/predicate/object of the UserGroupStatement could still be any Resource. Or for modelling purposes should I just make a new statement-like linking object, and forget about rdf:statement altogether?