ActionHandlers vs "App resources" (was: An updated draft of the schema.org/Action proposal)

Breaking up the thread here to have a more focused conversation.

So, you originally wrote:

============================================================
Kind of. What I was trying to do is to remove the whole ActionHandler
stuff. I don't want there to be "endpoints" which I can use to invoke the
operation. In my world view, operations are executed on the resource. In
other words, operations describe the things you can do with a resource, not
where you can send the resource to. In the optimal case, there wouldn't be
a need to describe Android intent handlers as Android would be able to
recognize the resource and its operations and then figure out which locally
installed app can handle that combination. That's, however, too ambitious
at the moment. Thus we probably need an alternative for the time being. One
option would be (as I mentioned to you in another mail) to separately
describe Web resources and "app resources".

To be a bit clearer: What I have in mind is to link from the Web resource
to the app, similar to how App Indexing for Google Search works:

https://developers.google.com/app-indexing/webmasters/details

So, a simple example would look like this:

{
  "@context": "http://schema.org",
  "@id": "http://example.com/web/resource",
  "operation": ... operations supported by the web resource ...
  ...
  "alternate": {
    "@id": "android-app://com.package/android/resource",
    "@type": "AndroidAppLink",
     ...
     "operation": ... possible but not necessary IMO ...
  }
}

I simply reused App Indexing's "alternate" link relation here but appLink
or perhaps even sameAs could work just as well. Obviously you can further
describe that Android resource.

Does this make it any clearer?
============================================================

Lets explore this a bit more. If I understand you correctly, here is what a
resource (that can be found in different platforms) would look like:

{
  "@context": "http://schema.org",
  "@id": "http://example.com/web/resource",
  "operation": [{
    @type: ViewAction
  }, {
    @type: BuyAction
  }]
  "alternate": [{
    "@id": "android-app://com.package/android/resource",
    "@type": "AndroidAppLink",
  }, {
    "@id": "msApplication://microsoft.build.App/resource?arg1=1,arg2=2,etc",
    "@type": "WindowsAppLink",
  }, {
    "@id": "myapp.com://resource?arg1=1,arg2=2",
    "@type": "iOSAppLink",
  }, {
    "@id": "https://www.googleapis.com/example/v3/examples/resourceid",
    "@type": "ApiAppLink",
  },]
}

Few questions:

1) Microsoft Windows
resources<http://msdn.microsoft.com/en-us/library/ie/hh781489(v=vs.85).aspx>can
only be reached if the user has a "minimum version" of the app
installed. How do you deal with that? Where does the minVersion information
goes?
2) How would you be able to express that you CANNOT BuyAction on the
AndroidAppLink resource (e.g. your mobile app resource isn't as fancy as
your website)?
3) Developers have the ability to specify "how" to execute the HTTP call
(e.g. pick a specific parameter
encoding<https://developers.google.com/gmail/actions/reference/types/HttpActionHandler>).
How do we go about that without the ActionHandler?

Sam

Received on Friday, 14 February 2014 00:48:37 UTC