mirror of
https://codeberg.org/fediverse/fep.git
synced 2026-08-05 19:55:46 +00:00
feat: FEP dd4b Quote Posts (#510)
This FEP describes using the `Announce` activity type to implement quote posts in Activity Streams 2.0 and ActivityPub. Reviewed-on: https://codeberg.org/fediverse/fep/pulls/510 Co-authored-by: Evan Prodromou <codeberg@evanprodromou.name> Co-committed-by: Evan Prodromou <codeberg@evanprodromou.name>
This commit is contained in:
committed by
silverpill
parent
a4dcefee2a
commit
68e2994c2e
@@ -0,0 +1,222 @@
|
||||
---
|
||||
slug: "dd4b"
|
||||
authors: Evan Prodromou <evan@socialwebfoundation.org>
|
||||
status: DRAFT
|
||||
dateReceived: 2025-02-21
|
||||
discussionsTo: https://codeberg.org/evanp/fep/issues
|
||||
---
|
||||
# FEP-dd4b: Quote Posts
|
||||
|
||||
## Summary
|
||||
|
||||
This FEP describes the mechanism defined in [Activity Streams 2.0][AS2] and the [Activity Vocabulary][Vocabulary] for making quote posts, that is, [Announce](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-announce) activities with additional commentary.
|
||||
|
||||
## Motivation
|
||||
|
||||
Redistributing content or activities created by other actors is a key activity on the social web. The [Announce](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-announce) activity type is defined in Activity Streams 2.0 ("AS2") to represent this activity. `Announce` is used in ActivityPub to provide sharing functionality; see [7.11 Announce Activity (sharing)](https://www.w3.org/TR/activitypub/#announce-activity-inbox).
|
||||
|
||||
The [Activity](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-activity) object type in AS2 inherits all the properties of the [Object](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-activity) type. This means that **all** activity types have a rich set of properties for representation as first-class content on the social web. The `Announce` type is no exception.
|
||||
|
||||
However, the ActivityPub specification does not describe how to use those properties to provide additional commentary, metadata, and files for the shared content. Called ["quote Tweets"](https://en.wikipedia.org/wiki/Tweet_(social_media)#Quote_tweets), "repost with comment", or ["quote posts"](https://help.instagram.com/279780184399513), this kind of extended sharing gives additional context to shared objects.
|
||||
|
||||
This FEP describes how to use the `content` property to provide this commentary, as well as other properties that may be useful in this context. It is applicable to uses of Activity Streams 2.0 in general; where it applies to ActivityPub, it is noted.
|
||||
|
||||
## Specification
|
||||
|
||||
- The `object` property of an `Announce` activity MUST be a reference to the shared content. It MAY be an AS2 `Object` or a `Link`, either as a JSON object or as a URL.
|
||||
- The `content` property of an `Announce` activity MAY be used to provide additional commentary on the shared content.
|
||||
- The `attachment` property of an `Announce` activity MAY be used to provide additional media content related to the shared content or the commentary.
|
||||
- The `tag` property of an `Announce` activity MAY be used to provide additional metadata, such as [Mention](https://www.w3.org/TR/activitystreams-vocabulary/#dfn-mention) objects or [Hashtag][Miscellany] objects, about the shared content or the commentary.
|
||||
- The `inReplyTo` property of an `Announce` activity MAY be used to connect an `Announce` activity to another object as a reply. The replied-to object MAY be the shared content, but this is unusual; it MAY also be part of a separate conversation.
|
||||
- An `Announce` activity with an `inReplyTo` property SHOULD be included in the `replies` collection of the object being replied to.
|
||||
- `Announce` activities SHOULD be counted as part of the `shares` collection of the shared content, regardless of any additional properties, as defined in [7.11 Announce Activity (sharing)](https://www.w3.org/TR/activitypub/#announce-activity-inbox).
|
||||
|
||||
## Examples
|
||||
|
||||
### Basic Quote Post
|
||||
|
||||
This represents a simple quote post, where the actor is sharing a note from another actor with commentary.
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/activities/aaabbbccc",
|
||||
"type": "Announce",
|
||||
"actor": "https://example.com/users/evan",
|
||||
"to": "https://example.com/users/evan/followers",
|
||||
"object": {
|
||||
"id": "https://example.com/notes/1234",
|
||||
"type": "Note",
|
||||
"attributedTo": "https://example.com/users/franklin"
|
||||
},
|
||||
"content": "I think that this is a good point and should be shared."
|
||||
}
|
||||
```
|
||||
|
||||
### Quote Post with Attachment
|
||||
|
||||
This represents a quote post with an attachment, where the actor is sharing a note from another actor with commentary and an image.
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/activities/dddeeefff",
|
||||
"type": "Announce",
|
||||
"actor": "https://example.com/users/evan",
|
||||
"to": "https://example.com/users/evan/followers",
|
||||
"object": {
|
||||
"id": "https://example.com/notes/1234",
|
||||
"type": "Note",
|
||||
"attributedTo": "https://example.com/users/franklin"
|
||||
},
|
||||
"content": "The author describes the rock formations of Crete; here's an example from my recent visit.",
|
||||
"attachment": {
|
||||
"type": "Link",
|
||||
"mediaType": "image/jpeg",
|
||||
"url": "https://example.com/images/1234.jpg"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Quote Post with Hashtag
|
||||
|
||||
This represents a quote post with a hashtag, where the actor is sharing a note from another actor with commentary and a hashtag.
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/activities/ghhiijjkk",
|
||||
"type": "Announce",
|
||||
"actor": "https://example.com/users/evan",
|
||||
"to": "https://example.com/users/evan/followers",
|
||||
"object": {
|
||||
"id": "https://example.com/notes/1234",
|
||||
"type": "Note",
|
||||
"attributedTo": "https://example.com/users/franklin"
|
||||
},
|
||||
"content": "Great description of Cretan geology; saving it for my next trip. <a href='https://example.com/tags/evanstriptocrete'>#evanstriptocrete</a>",
|
||||
"tag": {
|
||||
"type": "Hashtag",
|
||||
"href": "https://example.com/tags/evanstriptocrete",
|
||||
"name": "evanstriptocrete"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Quote Post with Mention
|
||||
|
||||
This represents a quote post with a mention, where the actor is sharing a note from another actor with commentary and a mention.
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/activities/lllmmnnoo",
|
||||
"type": "Announce",
|
||||
"actor": "https://example.com/users/evan",
|
||||
"to": ["https://example.com/users/evan/followers", "https://example.com/users/jeff"],
|
||||
"object": {
|
||||
"id": "https://example.com/notes/1234",
|
||||
"type": "Note",
|
||||
"attributedTo": "https://example.com/users/franklin"
|
||||
},
|
||||
"content": "<a href='https://example.com/users/jeff'>@jeff</a> you might like this Cretan geology article.",
|
||||
"tag": {
|
||||
"type": "Mention",
|
||||
"href": "https://example.com/users/jeff",
|
||||
"name": "jeff"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The author of the quoted material can also be mentioned.
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/activities/pppqqqrrr",
|
||||
"type": "Announce",
|
||||
"actor": "https://example.com/users/evan",
|
||||
"to": ["https://example.com/users/evan/followers", "https://example.com/users/franklin"],
|
||||
"object": {
|
||||
"id": "https://example.com/notes/1234",
|
||||
"type": "Note",
|
||||
"attributedTo": "https://example.com/users/franklin"
|
||||
},
|
||||
"content": "<a href='https://example.com/users/franklin'>@franklin</a> wrote this great Cretan geology article.",
|
||||
"tag": {
|
||||
"type": "Mention",
|
||||
"href": "https://example.com/users/franklin",
|
||||
"name": "franklin"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Quote Post as Reply
|
||||
|
||||
A quote post can be used as a reply, often to share evidence or information from another source.
|
||||
|
||||
```json
|
||||
{
|
||||
"@context": "https://www.w3.org/ns/activitystreams",
|
||||
"id": "https://example.com/activities/rrrsssttt",
|
||||
"type": "Note",
|
||||
"actor": "https://example.com/users/jeff",
|
||||
"to": "https://example.com/users/jeff/followers",
|
||||
"content": "Does anyone know where I can find a good article on Cretan geology?",
|
||||
"replies": {
|
||||
"id": "https://example.com/activities/rrrsssttt/replies",
|
||||
"type": "Collection",
|
||||
"totalItems": 1,
|
||||
"items": [
|
||||
{
|
||||
"id": "https://example.com/activities/lllmmnnoo",
|
||||
"type": "Announce",
|
||||
"actor": "https://example.com/users/evan",
|
||||
"object": {
|
||||
"id": "https://example.com/notes/1234",
|
||||
"type": "Note",
|
||||
"attributedTo": "https://example.com/users/franklin"
|
||||
},
|
||||
"content": "<a href='https://example.com/users/jeff'>@jeff</a> you might like this Cretan geology article.",
|
||||
"tag": {
|
||||
"type": "Mention",
|
||||
"href": "https://example.com/users/jeff",
|
||||
"name": "jeff"
|
||||
},
|
||||
"inReplyTo": "https://example.com/activities/rrrsssttt"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## User interface guidance
|
||||
|
||||
A common representation of quote posts is to include the `object` of the `Announce` as an embedded card or other representation, with the `content` of the `Announce` object as introductory text.
|
||||
|
||||

|
||||
|
||||
## Security considerations
|
||||
|
||||
For all `Announce` activities, it's important to consider how much of the shared content to expose to the recipient of the `Announce` activity. Using an URL as a reference, or including a limited set of metadata as in the examples in this FEP, allows the publishing server for the shared content to control access to the content. See [Inclusion of the shared object](https://www.w3.org/wiki/ActivityPub/Primer/Announce_activity#Inclusion_of_the_shared_object) in the [ActivityPub Primer][Primer] for more information.
|
||||
|
||||
## References
|
||||
|
||||
- James Snell, Evan Prodromou, et al. [Activity Streams 2.0][AS2]. W3C Recommendation. 8 May 2018.
|
||||
- James Snell, Evan Prodromou, et al. [Activity Streams Vocabulary][Vocabulary]. W3C Recommendation. 8 May 2018.
|
||||
- Christine Lemmer-Webber, Jessica Tallon, et al. [ActivityPub][ActivityPub]. W3C Recommendation. 23 January 2018.
|
||||
- Evan Prodromou. [ActivityPub Miscellaneous Terms][Miscellany]. W3C Social Web Community Group Draft Report. 3 October 2024.
|
||||
- W3C members and contributors. [ActivityPub Primer][Primer]. W3C Wiki. 2023 and later.
|
||||
|
||||
[ActivityPub]: https://www.w3.org/TR/activitypub/
|
||||
[AS2]: https://www.w3.org/TR/activitystreams-core/
|
||||
[Vocabulary]: https://www.w3.org/TR/activitystreams-vocabulary/
|
||||
[Miscellany]: https://swicg.github.io/miscellany/
|
||||
[Primer]: https://www.w3.org/wiki/ActivityPub/Primer
|
||||
|
||||
## Copyright
|
||||
|
||||
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
|
||||
|
||||
To the extent possible under law, the authors of this Fediverse Enhancement Proposal have waived all copyright and related or neighboring rights to this work.
|
||||
@@ -0,0 +1,144 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/24.7.8 Chrome/128.0.6613.36 Electron/32.0.1 Safari/537.36" version="24.7.8">
|
||||
<diagram name="Page-1" id="epeHU_GuXWhuZM6-Jwps">
|
||||
<mxGraphModel dx="1266" dy="667" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-1" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="80" width="570" height="360" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-2" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="140" y="100" width="60" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-3" value="Sharing author" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="210" y="100" width="120" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-6" value="<h1 style="margin-top: 0px;"><i><br></i></h1><p><i>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</i></p>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="220" y="120" width="390" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-4" value="sharer@example.com" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="260" y="130" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-5" value="14 Feb 2025" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="580" y="100" width="80" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-7" value="" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="220" y="220" width="420" height="170" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-8" value="" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="230" y="230" width="60" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-9" value="Original author" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="300" y="230" width="90" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-12" value="<h1 style="margin-top: 0px;"><i><br></i></h1><p><i>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</i></p>" style="text;html=1;whiteSpace=wrap;overflow=hidden;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="235" y="270" width="390" height="120" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-10" value="original@example.org" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="330" y="260" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-11" value="10 Feb 2025" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="550" y="230" width="80" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-13" value="Replies (3)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="220" y="360" width="70" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-14" value="Likes (1)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="300" y="360" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-15" value="Shares (1)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="380" y="360" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-16" value="Replies (1)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="140" y="400" width="70" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-17" value="Likes (2)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="220" y="400" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-18" value="Shares (0)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="300" y="400" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-19" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="150" y="110" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-20" value="" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="240" width="40" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-23" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-22" target="Ahd9KyH9aZ40LfpxCRtS-2">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-22" value="icon of actor of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1" parent="1">
|
||||
<mxGeometry x="20" y="20" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-25" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-24" target="Ahd9KyH9aZ40LfpxCRtS-3">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-24" value="name of actor of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="210" y="10" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-27" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-26" target="Ahd9KyH9aZ40LfpxCRtS-5">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-26" value="published of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="580" y="20" width="80" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-29" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;entryX=1;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-28" target="Ahd9KyH9aZ40LfpxCRtS-4">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-28" value="webfinger of actor of Announce (derived)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="20" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-33" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-32" target="Ahd9KyH9aZ40LfpxCRtS-6">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-32" value="content of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="20" y="170" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-35" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-34" target="Ahd9KyH9aZ40LfpxCRtS-8">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-34" value="icon of attributedTo of object of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="10" y="230" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-37" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-36" target="Ahd9KyH9aZ40LfpxCRtS-11">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-36" value="published of object of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="710" y="200" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-39" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-38" target="Ahd9KyH9aZ40LfpxCRtS-9">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-38" value="name of attributedTo of object of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="710" y="140" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-41" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-40">
|
||||
<mxGeometry relative="1" as="geometry">
|
||||
<mxPoint x="430" y="275" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-40" value="webfinger of attributedTo of object of Announce (derived)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="710" y="260" width="110" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-43" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-42" target="Ahd9KyH9aZ40LfpxCRtS-12">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-42" value="content of object of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="720" y="310" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-45" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-44" target="Ahd9KyH9aZ40LfpxCRtS-15">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-44" value="replies, likes and shares of object of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="720" y="380" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-47" style="edgeStyle=none;shape=connector;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=default;align=center;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;endArrow=classic;" edge="1" parent="1" source="Ahd9KyH9aZ40LfpxCRtS-46" target="Ahd9KyH9aZ40LfpxCRtS-16">
|
||||
<mxGeometry relative="1" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="Ahd9KyH9aZ40LfpxCRtS-46" value="replies, likes and shares of Announce" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Helvetica;fontSize=11;fontColor=default;labelBackgroundColor=default;" vertex="1" parent="1">
|
||||
<mxGeometry x="10" y="380" width="60" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 95 KiB |
Reference in New Issue
Block a user