Releases: casework/CASE-Implementation-PROV-O
Releases · casework/CASE-Implementation-PROV-O
0.12.0
New features:
case-utils
0.16.0 is now adopted.
0.11.0
New features:
case-utils
0.15.0 is now adopted.
0.10.0
This is a maintenance release, primarily issued to bump adoption of case-utils
to 0.14.0 and incorporate a behavior change in handling SHACL Qualified Shapes.
The newest tested version of Python is now 3.12.
0.9.1
This is a maintenance release, not revising any user user-facing features or interfaces.
- "Supply chain" review was scheduled for nightly refreshes. This is now done instead as a pre-release check for this repository.
- The CASE-Examples repository now uses
case-prov
, so the dependency this repository had on CASE-Examples became circular, and is now removed.
0.9.0
New features:
case-utils 0.13.0
is now adopted.
Requirement updates:
- The minimal required Python version is now 3.9.
Maintenance updates:
- CASE example data is now brought in through direct submodule tracking of CASE-Examples and the CASE website repository.
0.8.0
New features:
case-utils
0.11.0 is now adopted.- OWL-Time is now incorporated into the inferencing logic of
case_prov_rdf
andcase_prov_dot
, following the non-normative PROV-O alignment suggestions of OWL-Time Section 5.7. Thecase-prov
README documents the illustration and inference effects.- To have time objects (
time:Interval
s and their boundarytime:Instant
s) be visibly displayed, rather than only invisibly influencing layout, pass--display-time-links
tocase_prov_dot
.
- To have time objects (
- Timestamps used on
case-investigation:InvestigativeAction
s now have a visual timeline behavior incase_prov_dot
.- Those timestamps can also be used for timelining analysis from
time:Instant
s inferred bycase_prov_rdf
. For example, an investigative action that has auco-observable:File
as a result induces atime:Instant
representing the instant the file was created, which might or might not eventually receive a timestamp in an analyst's workflow, but the timestamp is asserted to betime:before
the endingtime:Instant
of the investigative action. - A caveat on timestamp ordering: Only timestamps with a timezone will be cast into
time:inXSDDateTimeStamp
. (At the time of the 2022-11-15 OWL-Time draft,time:inXSDDateTime
is deprecated.) This is left to the user as a UCO data preparation responsibility.time:Instant
s will still be inferred and topologically linked for timestamps without timezones. - Another caveat on timestamp ordering: Currently, only timestamps with a timezone (i.e. ending with either
+00:00
orZ
) will influence timeline sorting bycase_prov_dot
. Help is welcome to implement general timezone sorting in a futurecase-prov
release.
- Those timestamps can also be used for timelining analysis from
- On an investigative action, a
uco-action:endTime
timestamp is treated as a designation the action has an end. In general, an investigative action is not assumed to have an end, though all investigative actions are assumed to have a beginning. case_prov_dot
andcase_prov_dot
now have some generated effects that can be influenced from UUID randomization. A flag--use-deterministic-uuid
s is now provided for these commands.- Using the inherence functions from
case-utils
0.11.0,prov:Influence
s (Association
,Attribution
, etc.) andprov:InstantaneousEvent
s (Generation
,Start
, etc.) are now handled in Python code rather than SPARQLCONSTRUCT
queries. This is to avoid generating blank nodes, and to also incorporate run-time requests to use non-deterministic UUIDs or not (whether through inherence incase_utils.inherent_uuid
, or the "demo" nonrandom UUIDs fromcase_utils.local_uuid
). - (Also a bug fix.) Node labels from
case_prov_dot
are no longer limited to a single label string (e.g. if there were twordfs:comment
s, only one would display). - Node labels from
case_prov_dot
now preserve the annotating predicate as part of the label's line ordering. case_prov_rdf
now carries forwarduco-core:description
rather than casting its contents to anrdfs:comment
.case_prov_rdf
now carries forwarduco-core:name
, andcase_prov_dot
now displays it, for UCO nodes inferred to beprov:Activity
s,prov:Agent
s, orprov:Entity
s.
Maintenance updates:
- Documentation for modules now includes doctests (inlined code samples) for functions.
case_prov
is now type-reviewed withmypy --strict
.- The project's home page link from PyPI has been fixed.
case_prov_dot
's code flow has been nearly totally reordered and inline-documented.
0.7.0
New features:
- case-utils 0.10.0 is now adopted.
case-prov
now reviews data using CASE ontology version 1.2.0.- Python 3.8 is now the earlist version of Python reviewed.
Maintenance updates:
pre-commit
module versions are now reviewed nightly.- Some type signatures have been revised to accommodate a recent update in RDFLib.
0.6.0
New features:
case-utils 0.9.0
is now adopted.case-prov
now reviews data using CASE ontology version 1.1.0.- Node IRIs are now shortened using prefixes defined in the graph (e.g. with
@prefix
statements in Turtle, and@context
dictionary members in JSON-LD). This was previously done using a hard-coded prefix, but now uses theqname
built into RDFLib'sNamespaceManager
. - The mappings for the CASE properties
investigation:wasDerivedFrom
andinvestigation:wasInformedBy
now also generate class assertions for the subject and object of each triple -prov:Entity
andprov:Activity
, respectively.
Test updates:
- Python 3.11 is now the latest version of Python reviewed.
- The examples review now includes synchronization code to ensure new tests added to CASE-Examples or the CASE website are reviewed as part of
case-prov
CI. - Examples' PROV-O mappings have been regenerated to reflect many node IRI updates throughout CASE-Examples and the CASE website.
pre-commit
has been refreshed.case_prov_*
Python tools now use the RDFLibPROV
DefinedNamespace
to catch concept IRI typos.
0.5.0
New features:
case-utils
0.7.0 is now adopted.case-prov
now reviews data using CASE ontology version 1.0.0.
0.4.0
New features:
case_prov_check
has been added to review graphs mapped from CASE to PROV-O.- Breaks in the chain of custody are treated as
sh:Warning
-severity violations (i.e. will raise a validation error, but can be accepted for passing validation with--allow-warnings
). - Incorrect usage of PROV concepts, according to OWL disjoint-class statements, is now checked and treated as a
sh:Violation
-severity violation (i.e. will raise a validation error).
- Breaks in the chain of custody are treated as