i'm not 100% sure about this but i am starting to think that the way #jsonld context declarations propagate by default is generally an anti-pattern
the problem is when you cross a semantic boundary, which happens most often due to naively dereferencing and embedding an entire resource ("inlining", "hydration"). it's especially likely to be an issue when you are using one or more protected contexts (where terms can't be redefined later).
1/?
(Der Umstieg klappt, der ICE515 wartete dann doch noch die Minute länger, die allen den Umstieg ermöglichte).
Liebe @db_info, sorgt doch bitte dafür, dass App, Personal und Anzeigen über dasselbe System zeitgleich und synchron informiert werden. Vielleicht mal MQ nutzen?)
Rauchverbot in Frankreich: Neues Gesetz an Stränden bald gültig
Verschärftes Rauchverbot: An Stränden in Frankreich darf in Kürze nicht mehr gequalmt werden. Doch es gibt diverse Ausnahmen - so sind E-Zigaretten vom Gesetz nicht betroffen.ZDFheute
Eine Auswertung des Netzzusammenbruchs in Spanien kommt zu dem Ergebnis, daß der Ausbau der Erneuerbaren Energien auch ein Ausbau der Fähigkeiten zur Spannungsregelung und der Netzbalanzierung erfordert.
"Händelsen visar att en hög andel fri energi i elproduktionen kräver ett lika modernt och välplanerat elnät, där spänningsreglering och balansering sker med hög beredskap. Investeringar i batterilager, synkrona omriktare och snabb återkoppling från elnätsoperatören blir allt viktigare."
growsverige.se/2025/06/23/det-…
Det gigantiska elavbrottet i Spanien orsakades av systemfel, inte något energislag - Grow Sverige
Vad händer Spaniens omfattande elavbrott den 28 april orsakades inte av ett fel i solenergin, utan av brist på synkrona kraftverk som skulle stabilisera spänningen i nätet. Regeringens utredning avvisar påståenden om att fri energi låg bakom.rikard (Grow Sverige)
Torturen der besonderen Art auf dem Bodensee-«Erotikschiff»
Latex, Leder und viel nackte Haut: Hunderte Fetisch-Fans zieht es wieder auf das ausverkaufte «Erotikschiff» am Bodensee. Ist auf dem Torture Ship alles erlaubt?DieBayern.de News (DieBayern.de)
Ich sehe einen guten Grund, kommerziell abgefülltes Wasser zu kaufen: selber hygienisch und haltbar Wasser bevorraten nach BBK-Empfehlung ist schwierig.
(Hier in München oder in meiner Heimatstadt im Schwarzwald auf jeden Fall)
#medieval #MedievalArt
Today in 1969, 56 years ago: in New York the Stonewall riots are unleashed, a series of altercations in favor of the rights of transgender and homosexual people that took place around the Stonewall Inn bar.
Vergleich mit dem letzten Wahlergebnis vom 23.02.2025: CDU/CSU: −0,5, AfD: +3,2, SPD: −0,4, Grüne: −0,6, Linke: +0,2, BSW: ±0, FDP: −1,3.
Länderspiegel - Hammer der Woche aus Northeim
Eine Brücke über die A7 bei Northeim ist gesperrt, weil die Durchfahrtshöhe zu niedrig ist. Sie wurde bei Sanierungsarbeiten einfach vergessen.ZDFheute
Ungarn: Göring-Eckardt fordert Überstellung von Maja T. nach Deutschland
Katrin Göring-Eckhardt hat die linke Aktivistin Maja T. im Budapester Gefängnis besucht. Sie forderte ein rechtsstaatliches Verfahren – und sieht deutsche Verantwortung.
Today in 1919, 106 years ago: the Treaty of Versailles is signed in France, by which France annexes the regions of Alsace and Lorraine, along with cities such as Strasbourg and Metz.
Heinz-Dieter Luehmann 🕊 mag das.
Calisti 🏳️🌈🦇 (2254 @ WHY) hat dies geteilt.
infinite love ⴳ
Als Antwort auf infinite love ⴳ • • •say you have a generic property whose range is relatively unbounded -- a grab-bag where anything goes. something like how `attachment` or `tag` are used in #activitystreams. using multiple contexts at the top-level introduces a potential conflict in terms. you could reconcile any conflicts with a custom context, but that prevents reuse / understanding a more well-known context.
unfortunately, due to context propagation, terms defined earlier on can "leak" into the naively merged subgraph.
2/?
infinite love ⴳ
Als Antwort auf infinite love ⴳ • • •let's demo this with a simple case. say you want to `tag` something that is a `Movie` described by schema.org. the `Movie` declares that it has an `actor` who performed in it.
this is redefining the term `actor` as defined at the top-level by #activitystreams -- where `actor` means who performed an `Activity`, not who performed in a `Movie`.
if the activitystreams context was protected, then this would be a fatal error for any #jsonld validator. you cannot be sure which `actor` was meant!
3/?
infinite love ⴳ
Als Antwort auf infinite love ⴳ • • •we have *some* tools to deal with this in #jsonld. we can "type-scope" so that an Activity.actor uses a certain definition, and a Movie.actor uses a certain definition, but this requires us to say ahead-of-time that `Movie` will always mean a schema.org `Movie`. it also won't help us redefine protected terms, since "type-scoped" terms don't override protection. only "property-scoped" terms do. but we can't use "property-scoped" terms because that requires an explicit semantic range.
4/?
infinite love ⴳ
Als Antwort auf infinite love ⴳ • • •in "property-scoped" terms, we would have to say that `tag.*.actor` *always* means either Activity.actor or Movie.actor. in effect, we are saying that every `tag` MUST be an Activity, or MUST be a Movie. in other words, our semantic range is no longer unbounded.
now, remember this problem only happened because we naively merged in a JSON resource into another JSON resource, leading to a conflict between the two contexts. what's a better way to handle graph merges while maintaining context?
5/?
Jens Finkhäuser
Als Antwort auf infinite love ⴳ • • •JSON namespaces keep rearing their head. This expired draft has one: datatracker.ietf.org/doc/id/dr…
But the same underlying problem is also being discussed as part of datatracker.ietf.org/doc/draft…
JavaScript Object Notation (JSON) Namespaces
datatracker.ietf.orginfinite love ⴳ
Als Antwort auf Jens Finkhäuser • • •infinite love ⴳ
Als Antwort auf infinite love ⴳ • • •Jens Finkhäuser
Als Antwort auf infinite love ⴳ • • •It's a sort of solved problem, because apparently JSON-LD context come with issues that a simple namespacing scheme would avoid. Plus, you don't need the LD part.
I'm going back and forth with LD in this context (pun intended). It seems to solve issues only on the condition you mention, that it needs LD processors.
It's something I don't mind, particularly, but the fact that this thread exists seems to say that perhaps it's best to embrace that some folk don't want to bother with it.
Jens Finkhäuser
Als Antwort auf Jens Finkhäuser • • •So when you have tech that brings benefits with "bother", you can kind of understand why it's not adopted as widely as one might like.
This has long history in tech, and is sometimes instrumentalized. Early SGML based HTML was fairly permissive, then XML based XHTML came along. That was, actually, pretty good - it cut through a bunch of issues by just being a tad stricter. With XHTML 2.0, it was finished, but Google pushed hard for HTML5, because the more permissive nature of it meant...
Jens Finkhäuser
Als Antwort auf Jens Finkhäuser • • •... it felt like less of a bother. It also meant implementation complexity went back to SGML levels, and now only Google has the resources to develop a browser engine.
SOAP was a different beast. It was permissive in a way that let vendor extensions proliferate, but the way it happened was that, essentially, SOAP from one vendor was incompatible with that from another. Frustrated, the community proposed XML-RPC, which is also permissive, but embraced simplicity at the same time.
...
Jens Finkhäuser
Als Antwort auf Jens Finkhäuser • • •Then JSON came along, making working with JS a lot easier, but the fundamental model of sending JSON around is very, very similar to how XML-RPC handled it.
JSON-LD provides much the same "feel" as SOAP. Yes, there's more clarity in it. But it comes at a complexity cost that also allows for abuse. And in that sense, the XHTML/HTML5 story is the same ad the SOAP story, is the same (almost) as the JSON-LD story:
Clarity (avoiding ambiguity) is what people wish for, complexity is not.
...
Jens Finkhäuser
Als Antwort auf Jens Finkhäuser • • •Arguably, that specific combination does not exist yet, so people keep proposing namespaces as a simple yet effective alternative.
FWIW there's a related issue with the back and forth between "use schemata to generate code" vs. "use code to generate schemata".
Schema first approaches provide clarity. But code generation means that schema changes overwrite code, which you may have modified. So that's unpleasant to deal with. In the past, frameworks often suggested an indirection ...
Jens Finkhäuser
Als Antwort auf Jens Finkhäuser • • •... layer, which avoids that issue, but then you have two layers to maintain compatibility between. Not fun.
OoenAPI started out solving that, it was schema first, but didn't generate code. Instead it let you tag your schema in a way that an API framework could use to map between your implementation and the schema. It still requires adjustment, but it's less disruptive.
Now modern API frameworks have gone the opposite direction again and generate schemata from code, which shifts the...
Jens Finkhäuser
Als Antwort auf Jens Finkhäuser • • •... maintenance burden onto the consumer of the API. Personally, I think that is very stupid: schemata are contracts, and unilaterally breaking them invites pain. But here we are.
Nonetheless, even though this detour has strayed a bit from the OT, the point remains that devs seek clarity *and* simplicity (which provides for its own kind of clarity), and that's a difficult balance to strike.
But if you don't, chances are it'll get worse before it gets better.
Nik | Klampfradler 🎸🚲
Als Antwort auf infinite love ⴳ • • •infinite love ⴳ
Als Antwort auf Nik | Klampfradler 🎸🚲 • • •@nik it's not what *i'm* doing; this is what most of fedi does. AS2 has the dubious "advantage" of letting you "ignore the LD", but you can easily make mistakes in your ignorance.
i can be smart and do a proper RDF graph merge, but i was formulating a way for "plain JSON" people to effectively do a graph merge while being graph-unaware, through the equivalent JSON operations (without triggering errors due to redefining protected terms)
Nik | Klampfradler 🎸🚲
Als Antwort auf infinite love ⴳ • • •I know. And my point is: If you can't handle RDF, stop developing for ActivityPub.
(Yes, the spec should clearly state that RDF is obligatory, and we should make better tools and libraries to support people who can't wrap their heada around RDF.)
infinite love ⴳ
Als Antwort auf Nik | Klampfradler 🎸🚲 • • •Nik | Klampfradler 🎸🚲
Als Antwort auf infinite love ⴳ • • •I did not say it *is* obligatory. I said it *should be* obligatory.
The fediverse is by no means open today. It's a zoo of proprietary solutions not caring about open standards, and that's mostly due to this flaw in ActivityStreams.