Closed saumier closed 5 days ago
@sahalali This is the issue we discussed after the Tuesday standup. I said I would change the context to create a container for @language and copy the frame into the Aggregator repo.
However, I looked into this more carefully and I realized that all the other sites in Footlight Console did not set a language tag for audience. I also noticed that audience was already set in the context to an array using "@container": "@set". This forces an array even if there is only one value.
So I decided to remove the language tag in Console from the audience property and not modify the frame in any way.
You can test again with the same call http://api.artsdata.ca/query?sparql=https://raw.githubusercontent.com/culturecreates/footlight-aggregator/main/sparql/query-events-v3.sparql&frame=event_footlight&format=json&source=http://kg.artsdata.ca/culture-creates/footlight/theplayhouse-ca&limit=5&offset=105
Now the JSON is with an array and no language:
"audience": [
"Everyone"
]
However, this type of data path change (where a string is tagged with a language) could happen again. Can you propose ideas to enhance the code of the aggregator to handle this case more gracefully? One idea is to handle the different literal serializations (@language, en: container, or just a string). Another idea is to report an error for the optional property in question, skip the property and continue loading the event instead of having the event completely fail:
Batch 21 :: (4/5).
Error while adding Event {"uri":"https://theplayhouse.ca/en/schedule-and-tickets/liverpool-4-canadas-tribute-beatles-0"}TypeError: value.toLowerCase is not a function
This fixed the issue. I ran the playhouse aggregator and it is looking good.
However, this type of data path change (where a string is tagged with a language) could happen again. Can you propose ideas to enhance the code of the aggregator to handle this case more gracefully? One idea is to handle the different literal serializations (https://github.com/language, en: container, or just a string). ...
@sahalali How can we prevent the same problem from happening again (see above)?
@saumier I think when we update aggregator to use the new artsdata API that returns JSON model will eliminated these risks. We once discussed about using the Artsdata API eg: https://kg.artsdata.ca/en/entity.jsonld?uri=http%3A%2F%2Fkg.footlight.io%2Fresource%2Ftheatrepatriote-com_passe-partout-2%232026-03-29T153000-0400
The data from Artsdata for theplayhouse.ca does not return keywords in the expected JSON structure. http://api.artsdata.ca/query?sparql=https://raw.githubusercontent.com/culturecreates/footlight-aggregator/main/sparql/query-events-v3.sparql&frame=event_footlight&format=json&source=http://kg.artsdata.ca/culture-creates/footlight/theplayhouse-ca&limit=5&offset=105
Current structure: