Skip to content
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

past, present and future activities (e.g. ReadLater, Reading, Read) #93

Closed
elf-pavlik opened this issue Apr 11, 2015 · 27 comments
Closed

Comments

@elf-pavlik
Copy link
Member

I work on transforming W3C mailing lists archive into SIOC based dataset. In next step I will develop basic reader which will understand common affordances, starting with as:Read. I want to use it in past, present and future tense.

  • ReadLater - which creates future activity capturing my intention of reading particular message
  • Reading - which creates present activity capturing that I currently read particular message (similar to opo:currentAction)
  • Read - which creates past activity capturing that I have read particular message some time ago

One can imagine very similar requirements for example in http://mediagoblin.com but for as:Listen and as:Watch

@akuckartz
Copy link

👍

@elf-pavlik
Copy link
Member Author

@elf-pavlik
Copy link
Member Author

PROPOSAL: modeling it similar to schema.org

@jasnell
Copy link
Collaborator

jasnell commented Apr 13, 2015

What's the actual proposal here?

We already have a as:Read activity, and we already have the ability to specify completed, ongoing and future activities through use of the startTime/endTime properties.

@elf-pavlik
Copy link
Member Author

@jasnell how does one set startTime to 'sometimes in next days' ?
also i can miss updating activity and it should stay PotentialActivity instead of just calculating time and inferring status PastActivity from timestamps

@jasnell
Copy link
Collaborator

jasnell commented Apr 14, 2015

Those functions are not yet supported. It's not clear yet if they'd be
useful to implementers. If you'd like to propose adding it, send along a PR
with a description of how it would work.
On Apr 13, 2015 4:11 PM, "☮ elf Pavlik ☮" notifications@github.com wrote:

@jasnell https://github.com/jasnell how does one set startTime to
'sometimes in next days' ?
also i can miss updating activity and it should stay PotentialActivity
instead of just calculating time and inferring status PastActivity from
timestamps


Reply to this email directly or view it on GitHub
#93 (comment)
.

@gobengo
Copy link
Contributor

gobengo commented Apr 14, 2015

"@jasnell how does one set startTime to 'sometimes in next days' ?"

  • Perhaps the value of that relation could be some URI you define that semantically means "ANY time in the future"
  • Or perhaps you could even use a time:Interval as the 'startTime': http://www.w3.org/TR/owl-time

@akuckartz
Copy link

I do not think that it is necessary to be able to express 'sometimes in next days'. A widely installed software offers options like "this week" or "next week" in the user interface and this is technically converted to timestamps.

@elf-pavlik
Copy link
Member Author

I think we drifted into taking 'sometimes in next days' specifics. I see it practical just to mark activity as intended without even trying to assign specific date to it. Similar with current status for ongoing activities which i may simply not know when they will end.

Other approach I can see - instead of using status may simply define additional sub types of an Activity:

  • FutureActivity
  • CurrentActivity
  • PastActivity

Which one could use in combination with specific verbs

 {
    "@type": ["Read", "FutureActivity"],
    ...
}

Since @type pretty much just means inclusion (non exclusive) in certain sets of things, we could just define such 3 generic sets and use rdf:type to express inclusion. We would also need to define them as owl:disjointWith

Once again, I believe we all can think of situation when we really didn't want to set any even most rough start date for something we plan to do in a future, or end date on something we do in a present.

@jasnell
Copy link
Collaborator

jasnell commented Apr 22, 2015

@elf-pavlik that's entirely possible but it's not clear yet how useful it would be. Perhaps experiment with this as an extension and see where it goes?

@elf-pavlik
Copy link
Member Author

After talking with @bblfish we found before, after and interesting path to investigate. It also allows to specify dependencies between activities e.g. "I plan to Hitchhike Berlin -> Paris before I will Attend SocialWG: F2F3"

@bblfish
Copy link

bblfish commented Apr 30, 2015

yes, to do this means you start getting into temporal reasoning, something like interval algebra. You don't want to just have a relation such as past, present or future since then you would not be able to make sense of the meaning of those relations outside of the context of the document. Ie: after merging two graphs say one in the distant past and one in a nearer future, the relation past or present would no longer have any determinate meaning.
It may be worth putting into a note of things we'd like some working group to do for us. Or there may very well already be some interval algebra ontology out there.

@jasnell
Copy link
Collaborator

jasnell commented May 7, 2015

This is likely something that is worth exploring via an extension. It's easy to imagine a simple vocabulary with terms such a before, while or after, whose values indicate events, instances or intervals of various sorts:

{
  "@context": [
    "http://www.w3.org/ns/activitystreams",
    {
      "t": "http://example.org/temporal#"
    }
  ],
  "@type": ["Watch", "t:PendingActivity"],
  "actor": "acct:joe@example.org",
  "object": {
    "@type": "Video",
    "url": "http://example.org/foo.mpg"
  },
  "t:afterTime": "2015-12-12:12:34:56Z"
}
_:b0 a as:Watch, t:PendingActivity ;
  as:actor <acct:joe@example.org> ;
  as:object [
    a as:Video ;
       as:url <http://example.org/foo.mpg>
  ] ;
  t:after "2015-12-12:12:34:56Z"^^xsd:dateTime
{
  "@context": [
    "http://www.w3.org/ns/activitystreams",
    {
      "t": "http://example.org/temporal#"
    }
  ],
  "@type": ["Watch", "t:PendingActivity"],
  "actor": "acct:joe@example.org",
  "object": {
    "@type": "Video",
    "url": "http://example.org/foo.mpg"
  },
  "t:after": {
    "@type": ["Listen", "t:PendingActivity"],
    "actor": "acct:sally@example.org",
    "object": {
      "@type": "Audio", 
      "url": "http://example.org/bar.mp3"
    }
  }
}
_:b0 a as:Watch, t:PendingActivity ;
  as:actor <acct:joe@example.org> ;
  as:object [
    a as:Video ;
       as:url <http://example.org/foo.mpg>
  ] ;
  t:after [
    a as:Listen, t:PendingActivity ;
       as:actor <acct:sally@example.org> ;
       as:object [
         a as:Audio ;
            as:url <http://example.org/bar.mp3>
       ]
  ]

Seems like this kind of mechanism would be useful but I'm not convinced it needs to be in the core vocabulary.

@jasnell
Copy link
Collaborator

jasnell commented May 26, 2015

Closing. If you'd like to propose specific new terms to be added to the vocabulary, please submit a PR and open an issue on the w3c tracker pointing to it.

@elf-pavlik
Copy link
Member Author

@rhiaro I see you use classes Todo, Doing and Done which look similar to proposed by me FutureActivity, CurrentActivity, PastActivity

http://www.essepuntato.it/lode/owlapi/http://vocab.amy.so/blog.owl

@csarven
Copy link
Member

csarven commented Aug 23, 2015

-1 to adding any new terms which has to do with the temporality of activities. Capturing the past/current/future nature of an activity can be done by simply using an existing vocabulary on time/events. In fact, AS is equipped with start/endTime properties to handle this. Qualified relations (which is how activities are modelled with) permits us to do this.

@rhiaro
Copy link
Member

rhiaro commented Aug 23, 2015

@elf-pavlik Todo, Doing and Done are more like named collections of posts; just a way of sorting things.

@elf-pavlik
Copy link
Member Author

@rhiaro I thought that rdfs:Class / owl:Class also provides way for naming a set (collection) of things; which also provides a way to sort/filter things when we query a dataset.

@csarven as:startTime/as:endTime doesn't seem well suit to deal with uncertain dates - sometimes in the future, sometimes in the past, currently. Once again mentioned by @bblfish interval algebra could come handy here.

interval algebra

@jasnell how about your experiment with Interval Vocabulary?

@elf-pavlik
Copy link
Member Author

@csarven could you please provide example of Future/Todo activity? If one sets certain startTime in the future, but will not update it and not start activity, it will result in appearing as Current/Doing activity accidentally not intentionally. Having Future/Todo subclass gives IMO simple pattern to avoid it.

Real world example we can work with: WatchLater used by youtube, vimeo and many other platforms. @cwebber @xray7224

My proposal:

{
  "@context": "http://www.w3.org/ns/activitystreams",
  "@id": "https://graph.wwelves.org/07b8c15c-bbd0-4f7d-8274-092cf63aec1b",
  "@type": ["Watch", "Todo"],
  "actor": "https://wwelves.org/perpetual-tripper",
  "object": "https://youtu.be/3vubqzjL3fs"
}

I would like to encourage everyone to include constructive counter proposal in replies 😄

@silverbucket
Copy link
Contributor

It would seem to me that the absence of a date of any type implies something which has not actually happened. This can be interpreted as a todo. I think adding an additional todo type is quite complicated and confusing, because it infers special behavior from one type to another.

It would be easier to sort a todo list by filtering all your AS objects to show those which have no date yet.

@elf-pavlik
Copy link
Member Author

@silverbucket I understand your reasoning but IMO it doesn't fit Open World Assumption (back to #15). So when you have an Activity with no dates, you can't tell if it didn't start yet or you just just miss a piece of information. Using additional type Todo removes this ambiguity and makes this information explicit. We could add to AS2.0 validator checking for contradictions if Todo type used together with date in the past.

Side note: Type/Class names start by convention with capital letter so Todo not todo, same applies to everything else used for value of @type

@silverbucket
Copy link
Contributor

I don't understand how it does or does not fit the Open World Assumption. When an object doesn't have a date, you are either assuming it describes something that already happened, something that has not yet happened, or something where whether it was carried out or not is unknown.

By just stacking on more @types it seems like another convention that adds ambiguity rather than removing it. Since, if we don't have a date, we still can't assume we know whether it ever happened or not.

Are there other examples of multiple types where it's meaning is already defined clearly?

@elf-pavlik
Copy link
Member Author

What do you do if you watched or read something in a past but don't know when you did it? Once can simply omit the date to honestly represent unknown. If you start reasoning that it means 'sometimes in the future' you start forcing people to make 'sometimes in the past' explicit. As I understand Open World Assumption, if one encounters object of type Activity with no startDate and no endDate than one can't classify it as Past/Present/Future (Done/Doing/Todo).

Are there other examples of multiple types where it's meaning is already defined clearly?

Any object can have any number of types, where certain type one can consider as *a set of things and giving some thing that type marks it as included in that set. I also recommend keeping in mind what @csarven explains about Anyone can say anything about anything

@csarven
Copy link
Member

csarven commented Aug 25, 2015

re: #93 (comment)

Surely you've looked at http://www.w3.org/TR/owl-time/

@csarven
Copy link
Member

csarven commented Aug 25, 2015

re: #93 (comment)

If you have information for the time dimension, it is an event/activity. If you don't have it, it is just a list of stuff.

If one does not update their activity status that is their problem. This is a data quality issue and we don't escape that problem in any shape or form, and that's certainly not subject to WatchLater/ToDo items.

"Watch"ing has a specific meaning to YouTube which is probably in agreement with our common understanding of "watching", nevertheless, when you leave it to the machines, it is an open field.

The proposal (with example) you make is still unclear even if you put "Watch" and "Todo" in there. What does it say exactly? An actor will get around to "watch" a webpage? You see, you as a human have prior knowledge to infer that something with the youtube domain and with the classes that you've picked, it means that you will get around to watch the main video that's on that URL. For a machine to "get" that, you describe much further.

@silverbucket
Copy link
Contributor

What do you do if you watched or read something in a past but don't know when you did it?

By definition that case has a date attached, which is "before now". You don't have to know the exact time something happened, but you do have to know it happened before the time in which the object was created. That should be explicit because otherwise the object has no meaning (every time you see it, it'll always mean that maybe it happened before you are seeing it at the very moment, and so on into the future - which means it's constantly changing meaning). In my opinion, this leaves way more ambiguity and confusion than if we have the opposite assumption - that anything without the corresponding date property which defines the time it was created, hasn't been acted upon yet - i.e. it's merely a hypothetical future activity. That remains consistent onward into the future.

@elf-pavlik
Copy link
Member Author

@elf-pavlik:

I would like to encourage everyone to include constructive counter proposal in replies

@csarven

Surely you've looked at http://www.w3.org/TR/owl-time/

Could you please imagine write alternative to example below using OWL Time? I'll also change Todo to FutureActivity just to emphasize that even if I will look at it in 20 years from now, it still will belong to the set of activities to eventually happen at some unknown time in the future.

{
  "@context": "http://www.w3.org/ns/activitystreams",
  "@id": "https://graph.wwelves.org/07b8c15c-bbd0-4f7d-8274-092cf63aec1b",
  "@type": ["Watch", "FutureActivity"],
  "actor": "https://wwelves.org/perpetual-tripper",
  "object": {
    "@id": "https://youtu.be/3vubqzjL3fs",
    "@type": "Video"
  }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants