Let me talk, following on
@thisismissemEmelia πΈπ»'s post, about JSON-LD from a data engineering and web backend perspective:
It's a nightmare.
First: one of the first things you learn about how to address the OWASP lists is the importance of not just accepting random payloads, but carefully validating them, but with JSON-LD:
1. Basically any field may be absent, present, a URI, a list of objects, a list of URIs of objects, a list containing URIs AND Objects, etc.
2. Fields do not have consistent names. BY DESIGN. You _have_ to parse an object to know what is in it. Parsing the context and then building the map of names is basically an Ξ(n*m) process where the amount of processing time you spend is _under the control of the sender_ by default, and nothing is ever fully defined.
3. Actually fully validating an object to the degree of knowing if it is the same thing as something else requires solving a GI-hard problem if there are blank nodes.
Applying basic type theory to anything done with JSON-LD is an exercise in frustration.
There are certainly use cases for it, but 99% of the time when I've seen it being used it is not for those use cases, but for use cases where we would strongly prefer JSON-Schema and/or OpenAPI definitions for things.