Details

      Description

      Support a history mechanism using RDR.

      Capture change events and write them back into the graph using RDR:

      # set property s.p = ?foo?
      # add: <:s> <:p> ?foo? .
      # commit
      
      <:s> <:p> ?foo? .
      << <:s> <:p> ?foo? >> <:added> ?t1?^^xsd:dateTime .
      
      # set property s.p = ?bar? .
      # remove: <:s> <:p> ?foo? .
      # add: <:s> <:p> ?bar? .
      # commit
      
      <:s> <:p> ?foo? . (History)
      <:s> <:p> ?bar? .
      << <:s> <:p> ?foo? >> <:added> ?t1?^^xsd:dateTime .
      << <:s> <:p> ?foo? >> <:removed> ?t2?^^xsd:dateTime .
      << <:s> <:p> ?bar? >> <:added> ?t2?^^xsd:dateTime .
      
      # read history of resource <:s>
      select ?s ?p ?o ?action ?time
      where {
        bind(<< ?s ?p ?o >> as ?sid) .
        hint:Prior hint:history true .
        ?sid ?action ?time .
        values (?s) {
          <:s>
        }
      }
      

      1. Instead of removing statements from the indices, downgrade them from Explicit to a new statement type: StatementEnum.History.

      2. By default, exclude History statements from normal reads on the statement indices.

      3. Add a query hint that allow History statements through.

      4. Add a change log listener that writes change events back into the statement indices using RDR.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              michaelschmidt michaelschmidt
              Reporter:
              mikepersonick mikepersonick
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: