Re: social-ISSUE-14 (elf-pavlik): as:Link adds a lot of complexity, if we keep it we need to clarify consequences of using it instead of as:Object [Activity Streams 2.0]

On 02/23/2015 02:19 PM, Social Web Working Group Issue Tracker wrote:
> social-ISSUE-14 (elf-pavlik): as:Link adds a lot of complexity, if we keep it we need to clarify consequences of using it instead of as:Object [Activity Streams 2.0]
> 
> http://www.w3.org/Social/track/issues/14
> 
> Raised by: Pavlik elf
> On product: Activity Streams 2.0

Hi Evan,

During last telecon you mentioned something about using as:Link for
other purposes than MediaObject. Could you please document other
examples when you see this construct needed?


Searching current drafts for "Link" (including "")

http://www.w3.org/TR/activitystreams-core/

11 occurences, with 10 in examples

9 for "mediaType": "image/jpeg" (MediaObject)

"object": {
    "@type": "Link",
    "href": "http://example.org/posts/1"
}

http://www.w3.org/TR/activitystreams-vocabulary/

24 occurences, with 23 in examples

4 for "mediaType": "image/jpeg" (MediaObject)
4 for "mediaType": "audio/mp3" (MediaObject)
2 for "mediaType": "video/mkv" (MediaObject)
2 for "mediaType": "application/pdf" (MediaObject ?)

5 for "mediaType": "text/html"

Than again we have somehow similar examples to the one in core spec

"current": {
    "@type": "Link",
    "displayName": "Most Recent Items",
    "href": "http://example.org/collection"
  }

"first": {
    "@type": "Link",
    "displayName": "First Page",
    "href": "http://example.org/collection"
  }

"last": {
    "@type": "Link",
    "displayName": "Last Page",
    "href": "http://example.org/collection"
  }

Which I see *VERY PROBLEMATIC*, please try to put them in JSON-LD
Playground: http://tinyurl.com/pq5jsb4

We can see that value of "as:last" has *blank node* - no @id, because of
using as:Link which uses "href". In this case I see no reason why not
use straight forward http://www.w3.org/TR/json-ld/#embedding

I see it as one of examples where as:Link makes processing more
complicated. Some people will use as:Link and others will use as:Object.
While using as:Object + embedding makes processing straight forward,
allowing as:Link almost everywhere instead of as:Object forces
publishers to choose which one they want to use and consumers to always
expect both cases.

So far I only see it used in useful way for MediaObject. Pretty much all
the other examples IMO show an anti pattern. To make it even more
visible, one could publish such funky data:


"first": {
    "@type": "Link",
    "displayName": "First Page",
    "href": "http://example.org/collection",
    "rel": "first"
  }

"last": {
    "@type": "Link",
    "displayName": "Last Page",
    "href": "http://example.org/collection",
    "rel": "last"
  }

Please notice duplication of *first* and *last*. I expect more
interesting findings once I get to automating testing of RDFa examples
in vocabulary spec...

This example from the core spec looks to me even more problematic:

{
  "@context": "http://www.w3.org/ns/activitystreams",
  "@id": "http://example.org/foo",
  "@type": "Share",
  "displayName": "A Test",
  "actor": {
    "@type": "Person",
    "@id": "http://example.org/~sally",
    "displayName": "Sally"
  },
  "object": {
    "@type": "Link",
    "href": "http://example.org/posts/1"
  }
}

While we have perfectly clear URI for the object of this activity. When
we use standards JSON-LD processing we end up with pretty problematic
*blank node* instead. Which you can see on JSON-LD playground
http://tinyurl.com/pp28qww


Cheers!

Received on Friday, 27 March 2015 17:58:15 UTC