What I find interesting is the opportunity for an evolvable API to match a user's needs.
If we can capture a user activity stream, then my service ought to be able to publish its capability in terms that users can understand and search for.
Let's say I am a RESTBucks and I want to sell some branded coffee.
A customer wants to buy some coffee. Her user-agent (SIRI) sends a query out for services that can sell coffee in the immediate vicinity:
{buy} {coffee} {close to my current location} // {verb}, {object}, {target}
but it could also have been:
{*} {coffee} {close to my current location} // which may include consuming on premises for instance…
Queries come back, user finally decides that paying $5 for a cup of RESTBucks is what she wants, so she decides to go to the shop and buy it there. (there was another RESTkin donuts coffee at $2.50… but … )
Story goes out: Eileen bought coffee at RESTBucks in Columbia, MD
Another customer specified a different verb (degustate) or a specialized product (frappuccino), as the owner of RESTBucks I could tune my ontology to match that or have my users ask for my products by name… (evolvability). There is some kind of decoupling here.
So how would those queries be expressed for discoverability? SPARQL, FQL?
or simple triplets?
How would a service expose those potential activities? How much information would need to be encapsulated to make this work automagically? Is it a matter of simply adding a few optional constraints (cost, duration…)?
Activity execution then becomes a simple POST.
Activity search may be a simple GET.
If we all use the same ontology, we ought to be able to do something like this. If you use a different ontology, I should be able to query it and see if I can match somehow…
This is not an easy problem but I am sure we can make some progress towards it.
Thanks again.
Pat.