Offer Modelling #3
-
OfferIn an Offer (Offer class) there are several properties, such as availablity, which are optional and are often not available from the source website. There is also no standard for indicating that an event requires registration, meaning that the person must register for a free event. An event requiring registration is usually free but can also be paid such as the workshops offered on the Culture Outaouais calendar which first require registration and are paid only after the workshop is confirmed to have enough participants. Also see culturecreates/artsdata-data-model#80 Questions
|
Beta Was this translation helpful? Give feedback.
Replies: 9 comments 23 replies
-
Q1: yes they can be optional. As a side question, the current La Vitrine database has a field for |
Beta Was this translation helpful? Give feedback.
-
@christianroy Je crois que la confusion entre availabilityStarts et validFrom vient de deux causes :
"validFrom" is quite similar to "available": it has a broad domain and the definition refers to the item, that is the Offer. The label may not sound intuitive to a performing arts brain, but the definition leaves no doubt: "validFrom" is to be used to designate the date when tickets go on sale. "availabilityStarts" is unlikely to serve much purpose in the performing arts setting. Since the service is the event itself, the value of "availabilityStarts" should always be the same as the event start time (or door time), which is already documented with the "startDate" property (or "doorTime"). There are a few uncommon scenarios, where "availabilityStarts" could serve a need in the performing arts setting:
Besides these few odd cases, I don't see "availabilityStarts" being used very often in the performing arts. "validFrom", on the other hand, may become a necessity for an increasingly frequent Artsdata use case: a third-party data provider seeking to mint an Artsdata ID before the tickets go on sale. In this scenario, the platform would want to ensure that the event information isn't consumed by search engines via Artsdata until the tickets actually go on sale. They might therefore want to submit their event information along with a "validFrom" date. This use case may not even exist yet, but it is bound to become more frequent as Artsdata partners become aware of the availability (and the value) of Artsdata IDs for events. |
Beta Was this translation helpful? Give feedback.
-
Q2: What should be done when there is no Offer url? Footlight CMS has an approach to handle this by adding a url to a type AggregateOffer. For example, when a buy button url is needed for the UI of an application, and there is no url in an individual schema:Offer, Footlight CMS creates a type of Offer called "Aggregate Offer" (class schema:AggregateOffer) which contains a url that represents a general url to buy any of the offers. |
Beta Was this translation helpful? Give feedback.
-
Q3: How are free events marked? Footlight CMS has an approach to handle this by adding an schema:additionalType to AggregateOffer. The types are: Free, Paid, Registration. |
Beta Was this translation helpful? Give feedback.
-
Here is a consolidation of the thread thus far. Mandatory properties
Optional properties
Rules:
Case 1: l'événement est payant avec plusieurs prixEvent is Paid even though one of the Offers has a price of 0 for kids, so each Offer has an additionalType of Paid.
Case 2: l'événement est payant mais le prix est manquante (pay at the door)
Case 3: l'événement est gratuit (accès libre)
Case 4: l'événement est gratuit (sous réserve de s'inscrire)
Case 5: l'événement est payant avec de l'info general sur le billetterie
|
Beta Was this translation helpful? Give feedback.
-
@christianroy @saumier : Nous n'avons pas d'enjeu de ce côté en UI puisque le prix est une information secondaire. Ce qui nous importe, c'est d'avoir une façon de déterminer (boolean) si oui ou non l'offre est gratuite. Ce n'est pas la propriété Price dans notre modèle qui le détermine. On regardera Christian, mais pour moi aussi c'est LGTM! |
Beta Was this translation helpful? Give feedback.
-
An event has offers modelled using schema:Offer and schema:AggregateOffer. When an event has a single Offer then schema:Offer MAY be used. If there are several offers, then schema:AggregateOffer MUST be used with an array of Offer or AggregateOffer nested inside. How are free events marked?Free events MUST have a price: 0 in the Offer or AggregateOffer directly linked to the Event. How are events marked when they require registration?A controlled vocabulary is introduced to clarify the type of Offer or AggregateOffer that require registration:
Properties
Rules:
Case 1: l'événement est payant avec plusieurs prixEvent is Paid even though one of the Offers has a price of 0 for kids. Also, the individual offer urls are different and there is no good aggregate url so the event's webpage url is used instead.
Case 2: l'événement est payant mais le prix est manquante (pay at the door)This is assumed to be a paid event because the price is not 0.
Case 3: l'événement est gratuit (accès libre)
Case 4: l'événement est gratuit (sous réserve de s'inscrire)
Case 5: l'événement est payant avec de l'info general sur le billetterieIn this case the url is the same for all offers and can be used in the AggregateOffer.
|
Beta Was this translation helpful? Give feedback.
-
I could make this change for LaVitrine but I am not sure about the semantics and it will introduce another difference from Artsdata which is not great. The properties of Offer and AggregateOffer are almost the same. I hesitate because most of the existing data on websites use just Offer. But I think there is a solution. If the url and price, needed to display on the webpage, can consistently be found by looking at the Offer directly connected to the Event (without going to the nested Offers) then a developer can consistently display price/price range and url using the same "path" and it does not matter if the type is called Offer or AggregateOffer. Since AggregateOffer is a sub-class of Offer, all the Offer properties apply. I think we achieve the consistency for a developer without compromising on the semantics.
Good idea. I'll make this change and it will help with the consistency for developers, and not break the semantics. Here is another revision of the rules... including @GenFab28 suggestions and a new rule about aggregated websites for the same Event. Free Offer Rules:
Registration Offer Rules:
Buy URL Rules:
|
Beta Was this translation helpful? Give feedback.
-
An event (single representation) has offers modelled using When an event has a single offer then Formal model in SHACLFor the formal model please consult this SHACL file. Properties (informative)Offers can have the following schema.org properties:
In addition, AggregateOffer (sub-class of Offer) can also include:
Buy url (informative)
How are free events marked? (informative)
How are paid events marked? (informative)
How are events marked when they require registration? (informative)
ExamplesCase 1: l'événement est payant avec plusieurs prixEvent is Paid even though one of the Offers has a price of 0 for kids. Also, the individual offer urls are different and there is no good aggregate url so the event's webpage url is used instead.
Case 2: l'événement est payant mais le prix est manquante (pay at the door)This is assumed to be a paid event because the price is not 0.
Case 3: l'événement est gratuit (accès libre)
Case 4: l'événement est gratuit (sous réserve de s'inscrire)
Case 5: l'événement est payant avec de l'info general sur le billetterieIn this case the url is the same for all offers and can be used in the AggregateOffer.
Case 6: l'événement est payant avec plusieurs échelles des prixIn this case the nested offers are type AggregateOffer.
|
Beta Was this translation helpful? Give feedback.
An event (single representation) has offers modelled using
schema:Offer
and/orschema:AggregateOffer
.When an event has a single offer then
schema:Offer
MAY be used. If there are several offers for the same event, then a singleschema:AggregateOffer
MUST be used and include the other offers nested inside the aggregate offer.Formal model in SHACL
For the formal model please consult this SHACL file.
Properties (informative)
Offers can have the following schema.org properties:
In addition, AggregateOffer (sub-class of Offer) can also include:
Buy url (informative)