My opinion on the ActivityPub JSON-LD thing now is that the Fediverse should go all-in on JSON-LD.
Conversation
Notices
-
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 12:05:43 JST Pissed Hippo
-
Embed this notice
Linux Walt (@lnxw37j1) {3EB165E0-5BB1-45D2-9E7D-93B31821F864} (lnxw37j1@gnusocial.jp)'s status on Friday, 27-Sep-2024 12:27:58 JST Linux Walt (@lnxw37j1) {3EB165E0-5BB1-45D2-9E7D-93B31821F864}
I fortunately do not participate in that group, but I did see a's running commentary. I'd give JSON-LD a shot now, where I probably would not have before (because the Rabbit was so deeply opposed back when they were working on Pleroma). a likes this. -
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 12:28:40 JST Pissed Hippo
@lnxw37j1 it's still controversial, even ALL the Pleroma devs vehemently disagree with me. a and Linux Walt (@lnxw37j1) {3EB165E0-5BB1-45D2-9E7D-93B31821F864} like this. -
Embed this notice
feld (feld@friedcheese.us)'s status on Friday, 27-Sep-2024 12:38:37 JST feld
@sun that's steering into the iceberg which is admirable lol Pissed Hippo likes this. -
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 12:47:34 JST Pissed Hippo
@feld Here is my opinion, some of the objections are valid:
- libraries are few and kind of poor quality (that's probably a bad sign even if you can't narrow down the reason)
- most developers don't like it
- it doesn't actually guarantee correctness of the data you're generating or receiving
at the same time:
- it's not as hard as people say
- there are other aspects of activitypub that are also difficult to get right.
advantages as I see it:
- unambiguous canonicalization
- tons of other web standards use it so you're going to run into it again
- you should be required to namespace extensions and JSON-LD is a standard way to mark which vocabulary something is from
- more flexibility in how to shape your data because you always just expand it before processing
-
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 12:47:46 JST a
@sun @lnxw37j1 the main thing that people have against it is that it represents "unnecessary complexity", the whole YAGNI argument. and if all you're interested in doing is passing text around, then sure, it's overkill. but if you want to be able to know things and manage a knowledge graph, then it suddenly becomes useful. admittedly, not many people think of their communications as a knowledge graph, but once you publish them as web resources, it makes sense to treat them as one. especially if you want to query that knowledge graph while also handling extension properties. -
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 12:50:37 JST Pissed Hippo
@a @lnxw37j1 the scene for tools to manage graphs is even worse than JSON-LD programming libraries. every tool being used seems to be a triple store that flattens the JSON-LD object hierarchy and then you have to use framing to re-hydrate it. a likes this. -
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 12:53:42 JST Pissed Hippo
@a @lnxw37j1 I just looked because I wanted to know if there's anything like JSON schema but specifically for JSON-LD and of course there is not. This is all free in XML. -
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 12:59:45 JST a
@sun @lnxw37j1 to be fair, flattened form is really the more natural way to express what is going on, it hides less of reality than other forms. you should generally be working in expanded or flattened form, preferably flattened if you're going to be cross-referencing nodes in multiple places. (just filter the @graph for a matching @id)
-
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 13:01:42 JST a
@sun @lnxw37j1 rdfs (RDF Schema) and owl (Web Ontology Language) are the standard for this kind of stuff -
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 13:03:00 JST a
@sun @lnxw37j1 basically rdfs lets you define the domain and range of properties, give things labels and comments
owl lets you place restrictions like "this property can have at most 1 value" or even more complicated stuff to do with formal logic and set theory -
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 13:03:57 JST a
@sun @lnxw37j1 have a look https://www.w3.org/2002/07/owl# -
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 13:07:05 JST a
@lnxw37j1 @sun this stuff is really killer in academic and life sciences fields -
Embed this notice
feld (feld@friedcheese.us)'s status on Friday, 27-Sep-2024 13:16:13 JST feld
@sun @lnxw37j1 truthfully if you want to steer ActivityPub by blazing the trail go convert the Object Validators in Pleroma to do JSON-LD schema enforcement. You'd be doing it as structs and probably easiest to use Ecto to cast them but then you could do the enforcement without waiting for native JSON library support.
So yeah we'd have to decode before we can validate which some may think is wasteful but this would allow us to even rewrite/normalize broken stuff to be valid like we do with the transmogrifier. And Elixir is pretty fast at the pattern matching so it seems suited to the task. -
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 13:24:33 JST Pissed Hippo
@a @lnxw37j1 is the functionality of owl a superset of rdf functionality (that I'm interested in for validation, I mean) or do you have to use both -
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 13:43:01 JST a
@sun @lnxw37j1 owl defines itself as inheriting from (subclassOf) rdfs stuff, so you can use just owl if you want (with rdfs things sprinkled in like label/comment/domain/range/subClassOf/subPropertyOf), but some more limited ("owl lite" and "owl dl") inferencers will not be able to pick up on equivalences in certain cases. so it matters to them that you need to subclass from owl:Class, because rdfs:Class is not enough
"owl full" doesn't have this issue iirc -
Embed this notice
Pissed Hippo (sun@shitposter.world)'s status on Friday, 27-Sep-2024 13:49:09 JST Pissed Hippo
@a @lnxw37j1 what is the right terminology "owl validation" or something like that, how do I search for this. I need to try to find an Elixir or Erlang lib for it. -
Embed this notice
a (a@fedi.layer02.net)'s status on Friday, 27-Sep-2024 14:21:53 JST a
@sun @lnxw37j1 "owl reasoning"
https://www.w3.org/2001/sw/wiki/OWL/Implementations
there are possibly more but idk if there's erl/ex stuff out there specifically (curse of nonexistent tooling strikes again)
-
Embed this notice