I have documents represented by RDF triples and some users can add relationships between those documents. The way I plan to record those relationships is following: (subset of RDF/XML code)
<rdf:Description rdf:about="SOURCEDocId">
<kb:tocMember rdf:resource="TARGETDocId"/>
</rdf:Description>
<rdf:Description rdf:about="TARGETDocId">
<kb:isInToc rdf:resource="SOURCEDocId"/>
</rdf:Description>
(relationships are established in a Table Of Content, so tocMember and isInToc names).
But I now need to store the UserId who created this relationship. One heretic way could be to add an attrubute, something as:
<rdf:Description rdf:about="SOURCEDocId">
<kb:tocMember xml:createdBy="USERId" rdf:resource="TARGETDocId"/>
</rdf:Description>
<rdf:Description rdf:about="TARGETDocId">
<kb:isInToc xml:createdBy="USERId" rdf:resource="SOURCEDocId"/>
</rdf:Description>
I am not sure this will be accepted by RDF triplestores and also this information cannot be used in SPARQL requests. There is also the possibility to create a link entity and qualify it but this is a mess for a very small requirement to implement. So a better way?