-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Must an InvestigativeAction
always have a ProvenanceRecord
among its outputs?
#136
Comments
A local-to-CASE-Corpora shape requires `InvestigativeAction`s to have `ProvenanceRecord`s as outputs. (See `/shapes/local.ttl`, `sh-case-corpora-local:InvestigativeAction-shape`.) That shape used a SHACL mechanism that was not active in this repository's testing until pySHACL Issue 213 was closed. This patch adds a `ProvenanceRecord` as output to the last non-subaction that had the phone as input. Review of the results of this SPARQL query indicate the device is not used in further actions, so this `ProvenanceRecord` has no further impact on the graph today. ```sparql SELECT ?nAction ?lDescription WHERE { ?nAction uco-action:object kb:device-ea732801-7d0e-46ac-a028-69b782c97a46 ; . OPTIONAL { ?nAction uco-core:description ?lDescription ; . } } ORDER BY ?nAction ``` There is some open question on how to tie the subactions' outputs to the parent action's `ProvenanceRecord`; that thread is on CASE Issue 136. A follow-on patch will regenerate Make-managed files. References: * RDFLib/pySHACL#213 * casework/CASE#136 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
Part of the design discussions around InvestigativeAction and why it was created as something distinct from just Action was that it was paired with ProvenanceRecord to form the mechanism for tracking provenance of objects through an investigative process.
A ProvenanceRecord would never contain/reference objects that are/were inputs to the InvestigativeAction that produced the ProvenanceRecord. It would only contain objects resulting from the InvestigativeAction. InvestigativeAction1 could have ProvenanceRecord1 in its results and objects referenced within ProvenanceRecord1 (that resulted from InvestigativeAction1) could be used as inputs to InvestigativeAction2 in a way that lets you chain inputs to actions to results which may be inputs to other actions.
subaction was considered as part of the discussion. I find it a bit hard to interpret and comment on the example graph since neither action-1 or action-2 specify the core:name of the action (what is the action being performed).
Given that InvestigativeAction is defined as "An investigative action is something that may be done or performed within the context of an investigation, typically to examine or analyze evidence or other data." it seems logical that any subaction of an InvestigativeAction should likely also be an InvestigativeAction.
That would completely depend on what the actual actions were here which is not clearly specified.
Again, I think that depends on the nature of the actual action in action-1 which is not specified.
As described in the above comments, yes it would be in kb:provenance-record-o1 because action-2 should be an InvestigativeAction with its own ProvenanceRecord (let's call it kb:provenance-record-o2). kb:provenance-record-o2 would contain kb:ocr-text-results-file-1 and kb:provenance-record-o1 would contain both kb:provenance-record-o2 and kb:ocr-text-results-file-1. |
This new shape stemmed from discussion on CASE Issue 136. As a matter of preserving backwards compatibility, this patch introduces the shape requiring `ProvenanceRecord`s with a `sh:Warning`-level severity. In CASE 2.0.0, this requirement will be strengthened into a `sh:Violation`. A separate proposal will be filed with UCO to test the minimum qualified cardinality OWL structure. A draft of that syntax review system was used to test this patch. This patch adds a version floor for pySHACL to ensure an update in qualified value shape handling is included, which is necessary for the new property shape to function when using pySHACL. Disclaimer: References: * RDFLib/pySHACL#213 * #136 * #146 Signed-off-by: Alex Nelson <alexander.nelson@nist.gov>
The CASE Ontology Committee had discussed in the past whether
InvestigativeAction
s would always have aProvenanceRecord
among their outputs. I recall, informally, we had said yes, this is a requirement. However, we had not encoded this in SHACL or OWL.I have found a few logistical issues with requiring a
ProvenanceRecord
as output. While I don't think these are necessarily counter-arguments, they seem to need clarification if we move towards encoding the generated-ProvenanceRecord
expectation.ProvenanceRecord
must have at least one member. This is a requirement inherited fromuco-core:ContextualCompilation
,ProvenanceRecord
's superclass. By my understanding of what CASE had not formally encoded, thatProvenanceRecord
should have members that are either (1) inputs to theInvestigativeAction
, or (2) other results of theInvestigativeAction
.uco-action:subaction
was considered as part of the discussion, because it had not been exercised in CASE-Examples or the CASE website.1 It is not quite clear how that property is supposed to be used withInvestigativeAction
, namely whether any sub-action of anInvestigativeAction
is also anInvestigativeAction
. The answer to that question might complicate requiring aProvenanceRecord
as output.Let's take this example graph, which renders an action that takes a JPEG file as input and uses a (made-up) tool, "ExampleJpegAnalyzer," to analyze the JPEG's contents in a couple ways. The tool unconditionally calls multiple independent, tool-internal functions as part of its execution,
look_up_location
,ocr
and others. Theocr
function yields a file. This graph omits some triples for the sake of discussion.Question 1: Is
kb:action-2
aInvestigativeAction
? If so, and if allInvestigativeAction
s need to generate aProvenanceRecord
, how do the members of itsProvenanceRecord
relate to the parent action'sProvenanceRecord
?Question 2: What are the members of the output
ProvenanceRecord
,kb:provenance-record-o1
?Question 2.1: Is
kb:jpeg-i1
a member, recording that it was seen and/or handled?Question 2.2: Is
kb:ocr-text-results-file-1
inkb:provenance-record-o1
? Is the answer to this influenced by whetherkb:action-2
is or is not aInvestigativeAction
?I intend to take responses to these questions and propose OWL and SHACL encodings to capture the consensus.
Footnotes
To date,
subaction
still has not been exercised in either of those repositories. It is exercised in CASE-Corpora, and a recent update in testing infrastructure triggered a data validation error in a sketch of mine, which led to this Question post. ↩The text was updated successfully, but these errors were encountered: