Open ajnelson-nist opened 7 months ago
Here is my main question: If a
UcoObject
is aresult
of anAction
, can that object have existed before theAction
's start? My understanding was no: an object being a result of an action implies the object was created at some point in the action's unfolding.
In the December 12th meeting, @sbarnum noted an example using action:result
that does not imply creation of the resulting object: DNS resolution, as an observable:ObservableAction
, returns an IP address as a result. So, I think my previous guess of "no" has met a sufficiently dispelling example.
I still think there is an issue in the authentication example, but the issue now has a different form. The first (in time) action corresponds to the beginning of the event, and the second (in time) action corresponds to the end of the event. Usage of the action:result
predicate does not really capture this.
I think the first and second actions each have different parts of the authentication event as a result. I would prefer, if action:result
must be used, that the first action had the reified instant the authentication event began as a result; and likewise with the second action and the reified instant the authentication event ended. (E.g., if UCO adopted the OWL-Time[^1] ontology and a subclassing pattern suggested by its PROV-O alignment, this would involve use of the properties time:hasBeginning
and time:hasEnd
, and the classes time:Interval
and time:Instant
. But, there is another ontology I'm cross-checking with before bringing that adoption proposal up.) There is otherwise nothing encoding via UCO, outside of free-text annotations, how the beginning of the event and either of the actions relate to one another. That is, I do not think the core:context
or action:result
properties, separate or together, are sufficient to capture time relationships.
I had thought, at the time of posting this Issue, that it was a blocker on releasing 1.3.0. I no longer think so, so I'll remove it as a blocker, but I intend to leave it open until a more specific representation of the original timelining question arises.
[^1]: Disclaimer: Participation by NIST in the creation of the documentation of mentioned software is not intended to imply a recommendation or endorsement by the National Institute of Standards and Technology, nor is it intended to imply that any specific software is necessarily the best available for the purpose.
Bug description
As part of discussion of UCO Issue 541, an example was provided to illustrate an event where a user authenticated to a service. The example, at its current version, is rendered here. I was just trying a timelining exercise with this example, and came across something that looks incongruous.
The example currently has an event
kb:event-d4a5a009-...
, recording two actions as itseventContext
:kb:action-7377c5e6-...
andkb:action-a86738e7-...
. The event and actions have this timeline (where order in sub-lists does not necessarily imply temporal order - they're just sorted by IRI here):2023-07-15T17:59:43.25Z
kb:action-7377c5e6-6b28-4bc7-ad21-6763c070bfcc
kb:event-d4a5a009-7b4d-445d-8d06-9dc85f263b3e
2023-07-15T17:59:45.33Z
kb:action-a86738e7-c890-4615-b3ab-deaccd3bafbb
kb:event-d4a5a009-7b4d-445d-8d06-9dc85f263b3e
(The first action records no end time, and the second records no start time. UCO does not currently have a way of designating whether this means the action was instantaneous, or whether an action is not known to have ended, or not known when it was started. Other ontologies have mechanisms available for representing that these times are believed to exist with unknown time values, but UCO does not have this yet.)
However, the example also has this tie from the second action back to the event:
The first action has no other to the event.
This is a confusing (to me) usage of
uco-action:result
. If the event "results" from the action, should it have existed prior to the action's start? By the recorded timestamps, the event's start is in the same second as the first action's start, and its end is in the same second as the second 'action's end. This doesn't necessarily mean the start instants and end instants are the same instant - that would require us having a reified instant object like OWL-Time'stime:Instant
. In this example, I think the instants happen to be the same because of the parthood (mereological) relationship between the event and actions: The actions are parts of the event.Here is my main question: If a
UcoObject
is aresult
of anAction
, can that object have existed before theAction
's start? My understanding was no: an object being a result of an action implies the object was created at some point in the action's unfolding.If the Ontology Committees agree that the answer is no, then I think the example needs to be revised. I think the example is more consistent if the event is a result of the first action, but is wrong as the result of the second action. Argument for being a result of the first action: The action could be interpreted as the time between a login interface loading and a user deciding to hit an authentication button, particularly if there's typing involved. The authentication event can then be interpreted as the time the button is hit. In some interfaces, the user actions can happen in the same whole-second as currently in the example.
This Issue does not necessarily need to implement a change on UCO before it's closed. But, it is likely to be referenced in a later proposal on reified time object representation, focusing on
action:result
.Steps to reproduce
See linked example snippet and occurrences of
xsd:dateTime
on that example JSON-LD file.