So, an interesting issue came up in the #Fedify repo that I've been thinking about: [#629].
-
So, an interesting issue came up in the #Fedify repo that I've been thinking about: #629.
You know how every #fediverse server uses
schema:PropertyValuein actorattachmentfor profile metadata fields (like “Website”, “GitHub”, etc.)? Turns out, strict #AS2 validators like browser.pub reject it, because the AS2 spec saysattachmentshould only containObjectorLink—andPropertyValueis a schema.org type, not an Activity Streams 2.0 type.The thing is, we can't just drop the type like we did with
Endpoints(#576), because Mastodon and others rely on seeing"type": "PropertyValue"to render profile fields. But at the same time, it's technically not spec-compliant.I'm leaning towards writing a #FEP to formalize this existing practice rather than trying to invent a new type (like
toot:PropertyValueextendingObject), which would be a nightmare to migrate across the whole fediverse.What do you all think? Has anyone else run into this? Would love to hear thoughts from implementers and spec folks.
#fedidev #ActivityPub #ActivityStreams #ActivityStreams2 #AS2 #PropertyValue
-
R relay@relay.an.exchange shared this topic
-
Something to cc @trwnh and @evan on. And @steve who wrote an ontology for the `toot` namespace (is this elsewhere defined differently?) ..
activitypub-ontology/toot.ttl at main · steve-bate/activitypub-ontology
This ontology is an unofficial version of an ActivityPub OWL ontology for experimentation and exploration purposes. It's based on an old Activity Streams ontology that was abandoned in favor of JSON-LD in ActivityPub. I also created a separate ontology for Mastodon (toot) extensions. - activitypub-ontology/toot.ttl at main · steve-bate/activitypub-ontology
GitHub (github.com)
Options:
- Break spec compliance with a pragmatic FEP hack. Acknowledging that the installed base creates the protocol and/or app (as the delineation is unclear) specs on-the-fly i.e. by means of follow the leader post-facto interoperability.
- Create a type that extends `Object`. What is the best-practice here? In what ways is this done already?
- Go multi-type, type property as a set. There are examples in AS2 specs, but it is unclear to me and I think never clearly defined how this works. Plus multi-type isn't widely supported on fedi either atm, I think.
For last option see e.g. Example 103 in AS2 Vocab spec:
`"type": ["Activity", "http://www.verbs.example/Check"]`
In this example btw, the "result" property, defined as Object or Link is of type "http://www.types.example/flightstatus"
-
Something to cc @trwnh and @evan on. And @steve who wrote an ontology for the `toot` namespace (is this elsewhere defined differently?) ..
activitypub-ontology/toot.ttl at main · steve-bate/activitypub-ontology
This ontology is an unofficial version of an ActivityPub OWL ontology for experimentation and exploration purposes. It's based on an old Activity Streams ontology that was abandoned in favor of JSON-LD in ActivityPub. I also created a separate ontology for Mastodon (toot) extensions. - activitypub-ontology/toot.ttl at main · steve-bate/activitypub-ontology
GitHub (github.com)
Options:
- Break spec compliance with a pragmatic FEP hack. Acknowledging that the installed base creates the protocol and/or app (as the delineation is unclear) specs on-the-fly i.e. by means of follow the leader post-facto interoperability.
- Create a type that extends `Object`. What is the best-practice here? In what ways is this done already?
- Go multi-type, type property as a set. There are examples in AS2 specs, but it is unclear to me and I think never clearly defined how this works. Plus multi-type isn't widely supported on fedi either atm, I think.
For last option see e.g. Example 103 in AS2 Vocab spec:
`"type": ["Activity", "http://www.verbs.example/Check"]`
In this example btw, the "result" property, defined as Object or Link is of type "http://www.types.example/flightstatus"
@hongminhee @trwnh @evan @steve
Regarding the option to create a spec-breaking FEP.. this is only one occurrence, of something that is a more general issue of protocol extensibility best practices to follow.
-
@hongminhee @trwnh @evan @steve
Regarding the option to create a spec-breaking FEP.. this is only one occurrence, of something that is a more general issue of protocol extensibility best practices to follow.
@smallcircles @hongminhee @evan @steve browser.pub is incorrect here -- having a range of Object or Link doesn't mean that schema PropertyValue is not allowed. it means that the value is inferred to be an Object or a Link *in addition to* a PropertyValue. there is no problem as long as there are no conflicting statements being made.
cc @js
-
R relay@relay.mycrowd.ca shared this topic
-
@smallcircles @hongminhee @evan @steve browser.pub is incorrect here -- having a range of Object or Link doesn't mean that schema PropertyValue is not allowed. it means that the value is inferred to be an Object or a Link *in addition to* a PropertyValue. there is no problem as long as there are no conflicting statements being made.
cc @js
@smallcircles @hongminhee @evan @steve @js also, https://w3id.org/fep/fb2a exists for Actor metadata, and https://w3id.org/fep/e229 describes best practices for extensibility (although that one needs an update per the discussion thread)
-
@hongminhee +1 for formalizing the existing practice in a FEP.
PropertyValueis covered in FEP-fb2a, but it proposes an alternative representation which implementers must support: -
Yup do as @trwnh@mastodon.social and @silverpill@mitra.social say and implement fb2a.
It is supported by NodeBB and WordPress already.