schemaorg icon indicating copy to clipboard operation
schemaorg copied to clipboard

Online-only events

Open Aaranged opened this issue 8 years ago • 58 comments

schema.org currently (as far as I know) has no way of indicating that an Event is online-only. The ability to provide this information could be beneficial to data consumers, who would then be able to distinguish such virtual events from brick-and-mortar events and, if they wish, represent them differently in output products.

For example, Google expects a value for location. While this is a Google-specific requirement, in then nonetheless highlights the fact that there's no method by which could inform Google that an Event lacks a physical location.

Online events are ubiquitous and fall under many categories. Some examples:

Possible approaches

  • Add a boolean property like isOnline
  • Add a suitably modeled type that could be used as a value for location
  • Add a Event subtype like OnlineEvent (with possibly subtypes under that) - although an online event might also be a instance of a more specific type already, like BusinessEvent

To this last point see also #298, "applicability of Event to online events e.g. consider Webinar subtype", where @danbri notes that the "Event type was never meant to be so restricted" with regard to the "things with a physical location that you might attend in person".

Issues and considerations

  • An Event often takes a place at a physical location and is live-streamed. Should we take account for that?
  • An online event may have a URL that describes the event (and/or allows users to register for the event), and a different URL where the event is streamed. Does this need to be accounted for, or is url somehow sufficient here (though conceivably a registration URL could be declared using Offer)?
  • Further to the above, an online Event is often archived after the conclusion of an event at yet a different URL.

Aaranged avatar Feb 06 '18 17:02 Aaranged

This would be relevant to online courses (or rather CourseInstances. We currently have a courseMode property which can have the value 'online'. I wouldn't mind having an OnlineEvent subtype, and using multiple types in markup for online course instances.

Putting the registration URL in the Offer would be compatible with how we dealt with Courses (though we didn't deal with registration)

With respect to your very last point, the archive recording of an event is a Creative Work; recordedIn and recordedAt can be used to link from the recording to the Event

philbarker avatar Feb 06 '18 18:02 philbarker

This was discussed extensively, and then left hanging, in issue (#406), with the options of either new Event subtype (OnlineEvent ?), which could be used on its own or be added as an additionalType if it was an online instance of say a LiteraryEvent; or adding some form of category property for Event.

I think it may be worth resurrecting that discussion ether on that issue, or here.

RichardWallis avatar Feb 06 '18 18:02 RichardWallis

Of these, I think OnlineEvent is best approach as it allows us to add properties relevant to online events.

If something is both an OnlineEvent and a BusinessEvent, authors should specify both types.

vickitardif avatar Feb 06 '18 20:02 vickitardif

Yeah, let's get better at this. Sounds like rough consensus towards OnlineEvent so far?

@scor @rvguha @tmarshbing @nicolastorzec @tilid any thoughts?

If we do this, let's add more consistency than confusion. That means we will need:

  • to update courses documentation as @philbarker mentioned
  • consider how http://schema.org/BroadcastEvent and http://schema.org/LiveBlogPosting relate
  • check and improve examples, including multiple-typing where appropriate

danbri avatar Feb 06 '18 20:02 danbri

+1 to the seeming consensus surrounding the use of OnlineEvent, especially as per the comment of @vholland it allows us to craft properties specific to online events (and, as she also says, this can be combined with other Event subtypes by employing multi-typed entities).

Aaranged avatar Feb 06 '18 20:02 Aaranged

Quickly:

  • Subclassing would work, though I'm not sure that's the best solution here.

    • Most Event subtypes don't have any specific property and are not disjoint.
    • They are more like (overlapping) tags.
  • Also +1 for cleaning and clarifying Events and associated properties.

    • Some properties (their definition) are confusing (e.g. actor, contributor, performer, director)
    • Some properties don't make fully sense in the subtypes (e.g. doorTime and location)
    • In any way, we should keep events separate from the (multiple) way(s) they are broadcasted.

nicolastorzec avatar Feb 06 '18 21:02 nicolastorzec

Just to bump this, we've identified the same need over here https://github.com/openactive/modelling-opportunity-data/issues/71 and were also going for a subclass, however totally agree with the comment at https://github.com/schemaorg/schemaorg/issues/406#issuecomment-88736600 that there are already a number of subclasses for specific types of event (and we're defining more as part of OpenActive), so perhaps the solution does need to based on properties of Event instead.

nickevansuk avatar Aug 22 '18 19:08 nickevansuk

While I still think something like OnlineEvent could work in order to indicate and event occurs online, reviewing the current classes and subclasses, and considering the comments from @nicolastorzec and @nickevansuk, it struck me that OnlineEvent would be something of an orange in a barrel of apples.

That is, the current Event subclasses are focused on describing the event classes topically - what kind of events they are. With OnlineEvent we'd be describing instead an event's structure - how the event can be accessed.

To reiterate an point I raised in opening this issue, events are not infrequently take place both at a physical location and online, requiring (as per a comment from @vholland) - if OnlineEvent was employed - that both OnlineEvent and some other event type be specified (e.g. a New York City Ballet performance in New York that was also live-streamed would need to be both an OnlineEvent and a DanceEvent).

Which of course is readily expressible as a multi-type entity (MTE), but I've found that working with MTEs can be problematic both in terms of engineering and human classification of resources. A property-based approach suggested by @nickevansuk does seem to me to be more extensible, and would obviate the need to classify a single event of being of two Event types.

Aaranged avatar Aug 22 '18 20:08 Aaranged

Hmm, no, you are not going down the rabbit hole far enough, sorry. A single property won't do. There is too much under the covers that we are forgetting about.

I feel a Type would be better. But a "better Type" for what we are trying to express.

Start with describing WHAT "online" actually means in various contexts. Here's a few...

  1. Since many Thing's can be accessed or reached Online. Some Thing's might be Online on the Internet...but Online also means "Electronic Resource" in other contexts. (a very dated term from the '70s and '80s.)
  2. It is not only about "taking place online", but also about "can be accessed online or electronically".

What if we happened to just create a new type of "OnlineThing" ?
What useful properties would some imaginary OnlineThing have that Thing does not have already ?

open_access - ??? login_needed - Boolean login_type - (intranet, vpn, openssh, oauth, sso, token, user/password) login_url - (this might be direct, or a gateway login first needed) search_url - (different than url...the url that has a search capability) registration_url - ??? what else ???

thadguidry avatar Aug 22 '18 20:08 thadguidry

@thadguidry is right, there are several aspects of an online event, that could not be captured in a single property. Analogous to a [physical] location or place - where, online, it is taking place. [web] address, isAccessibleForFree, publicAccess, are some properties that come to mind to add to those listed.

Possibly we are talking about an "OnlineLocation" as a new expected type for the location property as against an OnlineThing.

Just thinking out loud...

~Richard.

RichardWallis avatar Aug 22 '18 22:08 RichardWallis

+1 for something like OnlineLocation, agree there are more properties to consider and this fits nicely with the idea of describing where it is (online) and not what it is (a running group).

Also bringing in my comment from https://github.com/openactive/modelling-opportunity-data/issues/71#issuecomment-415152506 suggest the use of the word “Virtual” instead of “Online” as it covers more use cases (AR, app-assisted competitions, streaming events). So “VirtualLocation”.

This could be applied to app-assisted running as to live-streaming fitness classes, opera or a business conference.

Why this is not a BroadcastEvent?

One thing I'd note here is that https://schema.org/BroadcastEvent already exists and links to Event via broadcastOfEvent. So it might be considered that an inverse property is all we need here (noting previous issues with @reverse) such as eventBroadcast.

One view is that virtual Events (e.g. Facebook Live events) are distinct from BroadcastEvents in that virtual events don't have a BroadcastService or any location. Although BroadcastEvent could be used more generally, looking at the properties and examples in schema.org it's clear that it has been defined for use in conjunction with a BroadcastService (e.g. a Television Channel):

        {
          "@type": "BroadcastEvent",
          "publishedOn": {
            "@type": "BroadcastService",
            "url": "http://www.bbc.co.uk/bbcone"
          },
          "startDate": "18:15, 22nd of May 2010"
        },

It's also worth noting that BroadcastEvent is still problematic for the same reason as we're discussing, as you could have a BroadcastEvent of a ComedyEvent (Edinburgh Fringe), BusinessEvent (Google I/O), and not necessarily just of a PublicationEvent. However using broadcastOfEvent the original ComedyEvent can be referenced for situations where an original event exists, which should be recommended in the examples.

From looking at the examples on schema.org, it looks more likely that broadcastOfEvent is used to link to the physical event that's being broadcast (e.g. the awards ceremony itself).

Proposal

Suggest extending location's range to include a new type VirtualLocation, and clarifying that:

  • VirtualLocation is for events that are available online across many devices, and can be participated in from anywhere (Facebook Live, live virtual competitions on running apps). This is likely to require properties like login_needed, login_type, login_url etc as per @thadguidry's comment.
  • BroadcastEvent is reserved for TV, Radio, and other media distributed via a https://schema.org/BroadcastService
  • Clarify whether or not BroadcastEvent is also used for an event "screening" where an event is physically happening somewhere and the BroadcastEvent is another way of participating in that event from an alternative physical location (e.g. a live-stream to a theatre, or the Google I/O Extended events that are "hosted by local developers all around the world" to watch the live-stream together). Looking at schema.org it is hard to tell whether this is the current intention of this type, so the description should be more specific here.
  • It should be noted that BroadcastEvent (in the physical sense of the previous bullet point) is not sufficient to indicate the event is also available online from anywhere, so the Google I/O website's live stream would need to be described using VirtualLocation separate to the list of I/O Extended BroadcastEvents which would be listed there for local participation. The properties also reflect this: a BroadcastEvent does not contain any login_url as it's a physical event that you walk into, or a TV you can turn on to a specific channel, you don't need to log in.
  • For the BBC example above, BroadcastEvent could include a VirtualLocation to allow the user to directly access the channel online (e.g. BBC One live via iPlayer), as the example above doesn't include online access details for the live stream.

Alternative Proposal

  • Given the BBC example above, a BroadcastEvent can be used instead of VirtualLocation, and https://schema.org/BroadcastService can be broadened to include more modern "channels" such as Facebook Live, Twitch, YouTube, etc.
  • Not sure if this overloading BroadcastService, and also how this would work for online events such as Google I/O or Les Mills OnDemand where the BroadcastService is whitelabeled.
  • Has the same issues with apples and oranges discussed above.
  • Prefer previous proposal.

Thoughts?

nickevansuk avatar Aug 23 '18 10:08 nickevansuk

+1 to VirtualLocation (aka OnlineLocation aka OnlinePlace aka VirtualPlace).

FWIW this is more-or-less what we've ended up doing at EA in order to satisfy the requirements of our competitive gaming events, which can either take place online or at brick-and-mortar locations, in the case of the former using location called "Online" of type Place (with a boolean property, isOnline set to true).

(It would be simpler to mint VirtualLocation as a subtype of Place, but that clearly wouldn't align with the description of it being "a somewhat fixed, physical extension", and there are also heaps of properties which wouldn't make any sense for this, like geo or smokingAllowed.)

Aaranged avatar Aug 23 '18 12:08 Aaranged

@nickevansuk (Its best to use our mailing list for questions and rebounding... things get mixed up a lot on our issues enough already. Then when things are clear for you, you can come back to an issue and bring your well constructed opinion. Thanks!)

In this issue, I think we are discussing a proposed higher level type to capture common properties for lots of ONLINE things. Some folks are limiting the conversation to just Event subtypes and @RichardWallis is narrowing and guiding towards Location (since ONLINE implies a Place). I am proposing (and @philbarker ) that there are many more ONLINE things, like Tele-medicine, Educational courses, etc. where the Place, or as you suggest VirtualLocation, brings along many other additional properties.

I am NOT OK for using "Location" in the name of the proposed higher level type. It narrows too much for the wide usage that will be needed to capture the common properties of Access, Logins, Search, Participation, Registration, etc.

For your particular case, (and @Aaranged opening use case at the top of this issue) We already have you covered. :)

  • BroadcastEvent description already states it can be used for "online broadcast event", which means FB Live, Twitch, game channel streaming, etc. You just missed it because its generic sounding, but for good reason...any online broadcast event :)

  • Yes, BroadcastEvent can be used for saying that an event is broadcasted for viewership. Yes, it is implied that it can have audience participation or not.

  • Correct, there currently is no property on BroadcastEvent to distinguish between the 2 categories mentioned in its own description... "1. over the air" "2. online broadcast event". But that sub categorization could be handled with sameAs or additionalType or a number of other ways as well.

@nickevansuk @Aaranged given the above, let us know what other properties or relationships you cannot construct with what we currently have. Give us the use cases themselves. And preferably on our mailing list, as it will likely be a Q/A session for everyone, but its up to you.

thadguidry avatar Aug 23 '18 14:08 thadguidry

@Aaranged - Agreed re: subtype of Place being confusing.

Interestingly a key assumption here is that VirtualLocation might need to contain a whole bunch of new properties. Just to throw something else into the mix, potentialAction might include much of the required detail for accessing a VirtualLocation (if it's not already included in the various url properties within an Event and its Offers).

To take a practical example, describing the virtual events here: https://www.fitswarm.com.

Event actually covers everything that's required, and VirtualLocation ends up looking more like a Service (describing the fitswarm.com platform, which include pricing to join fitswarm e.g. via Offers).

So perhaps we subclass Service to create something equivalent to VirtualLocation which could be the platform which allows you to experience the Event (e.g. online channel, or fitness tracker app, or other device), broader than just BroadcastService?

Example below:

{
    "type": "SportsEvent",
    "name": "Fat burning Yoga",
    "description": "Through my teaching and practice I have experience working with many physical ailments and limitations, anxiety, insomnia, writers block, eating disorders and chronic stress, and have worked with all ages and levels of yoga experience.",
    "duration": "PT1H",
    "eventStatus": "http://schema.org/EventScheduled",
    "startDate": "2018-08-25T07:00:00Z",
    "endDate": "2018-08-25T08:00:00Z",
    "remainingAttendeeCapacity": 20,
    "maximumAttendeeCapacity": 20,
    "url": "https://www.fitswarm.com/class-details/2978/fat-burning-yoga",
    "offers": [
        {
            "type": "Offer"
            "url": "https://www.fitswarm.com/book/2978",
            "price": 8,
            "priceCurrency": "GBP",
        }
    ],
    "organizer": {
        "type": "Person",
        "name": "Kate Lister",
        "url": "http://www.misskatelister.com/yoga/"
    },
    "image": {
        "type": "ImageObject",
        "url": "https://www.fitswarm.com/files/instructors/000/000/666/239x239/1501001532_PfU0l_KLyoga-reachcrop.png"
    },
    "location": {
        "type": "VirtualLocation",
        "name": "FitSwarm",
        "url": "https://www.fitswarm.com/",
        "logo": "https://www.fitswarm.com/files/theme/000/000/001/logo.png"
    }
}

@thadguidry - apologies our messages crossed over, will continue on mailing list in future, just thought I'd post this final thought.

Using BroadcastEvent works to an extent for the simple usecase of online video streaming (with publishedOn and BroadcastService instead of location and VirtualLocation above), but not so much for app-assisted competitions etc. It also still doesn't resolve the apples and oranges issue. I understand multi-type / additionalType is one solution but that seems to have inherent limitations.

nickevansuk avatar Aug 23 '18 15:08 nickevansuk

What has happened on this over the last 12 months? I've just started investigating the use of JSON-LD and found this particular feature lacking (but required). We have many events where the location will be online, and as noted at the start of this issue, Google expects us to supply a location tag on an event.

bmerigan avatar Aug 27 '19 02:08 bmerigan

This really needs more attention, same situation as others describe. Google doesn't recognize VirtualLocation as valid Location type yet :/

lofcz avatar Dec 18 '19 07:12 lofcz

One more vote here to get this in, seems there's quite a bit of consensus already...

jdevalk avatar Jan 20 '20 20:01 jdevalk

Yes please!

jonoalderson avatar Mar 08 '20 17:03 jonoalderson

I had particular problem describing a performer in a music video that was also a scheduled broadcast event.

There is also the case of a performer who may have a residency at a club https://schema.org/Schedule might also be included?

And finally, a lot of these events become perpetual on YouTube or other hosts, so even though the event may be over, it could be useful to have an archive-url property

WeaverStever avatar Mar 08 '20 23:03 WeaverStever

Resurrecting this discussion in light of many events moving to be online in the face of COVID-19.

It looks like we were close to agreeing on VirtualLocation with potentially properties for how to connect to the event.

It seems what remains is whether to make VirtualLocation a subtype of Place. Given how widely Place is used and the existing definition of a "fixed, physical location", perhaps it would be best to extend schema.org/location to expect VirtualLocation in addition to Place.

vickitardif avatar Mar 09 '20 21:03 vickitardif

As this is timely, I have put together PR #2488

vickitardif avatar Mar 13 '20 17:03 vickitardif

Exciting to see this moving! Just to promote my suggestion above: perhaps VirtualLocation should subclass Service rather than Place or Intangible? As every VirtualLocation will in fact be a "Service" where you can access the virtual event (and the service will likely have one or many of an app, website, etc).

Taking this further, perhaps we should just extend location to expect Service?

So the following subclasses of Service can then be used as the location of an Event, for example:

  • BroadcastService
  • RadioBroadcastService
  • CableOrSatelliteService
  • GovernmentService
  • WebAPI

We might then want to add a generic OnlineService to cover things like yogaia.com or a particular live streaming service ? Many virtual events will require a subscription from such a service to access, though some will be pay-per-view...

nickevansuk avatar Mar 16 '20 21:03 nickevansuk

Which direction is this going in? Google has already started jumping on "eventAttendanceMode" (which is what led me here) but I don't want to start the process of adding it to my output if it's going to change to a virtual location.

ScaredyCat avatar Mar 23 '20 09:03 ScaredyCat

Yeah, the 7.0 push and Google's approach feels frustratingly inconsistent with what's been previously discussed here.

jonoalderson avatar Mar 23 '20 09:03 jonoalderson

This issue is being tagged as Stale due to inactivity.

github-actions[bot] avatar Jul 17 '20 01:07 github-actions[bot]

Objecting to this being auto-tagged as stale. I'm still waiting for it to be resolved - not ignored.

bmerigan avatar Jul 17 '20 05:07 bmerigan

Beyond VirtualLocation being introduced in V7.0, can someone summarise where we are at with this.

RichardWallis avatar Jul 17 '20 13:07 RichardWallis

Can this be reopened? I don't understand why this would be closed while this is not resolved and is still being actively discussed by multiple people.

pfrenssen avatar Jul 26 '20 15:07 pfrenssen

When an event is mixed, is there any guideline proposed to best describe the event? https://schema.org/Event allows for one location to be associated with the event which is fine for a fully Online or Offline event. For a mixed event, I imagine we could link the event to two locations, one VirtualLocation and one Place/Physical but I can't find anything on schema.org explicitely describing this.

Seems google just went ahead with this 2-location implementation: https://developers.google.com/search/docs/data-types/event#mixed-online-event

kaore avatar Oct 07 '20 07:10 kaore

I've reopened this as it appears that it was victim to the slightly too aggressive settings on the github-actions bot.

@kaore, as multiple values are possible for all properties in Schema.org the example you reference is a valid interpretation. However, subject to further discussions around this pending term, it would be useful if some examples were posted for both VirtualLocation and and a mixed event.

RichardWallis avatar Oct 07 '20 09:10 RichardWallis