W3C home > Mailing lists > Public > public-vocabs@w3.org > September 2014

Re: Offer/Demand & potentialAction -> TradeAction/TransferAction

From: ☮ elf Pavlik ☮ <perpetual-tripper@wwelves.org>
Date: Fri, 19 Sep 2014 00:46:05 +0200
Message-ID: <541B60AD.7070006@wwelves.org>
To: W3C Web Schemas Task Force <public-vocabs@w3.org>
CC: "martin.hepp@ebusiness-unibw.org" <martin.hepp@ebusiness-unibw.org>, Vicki Tardif Holland <vtardif@google.com>, Markus Lanthaler <markus.lanthaler@gmx.net>
On 07/02/2014 04:23 PM, martin.hepp@ebusiness-unibw.org wrote:
> As far as I understand, the red line between XYZ-Action and other schema.org elements is that the Action describes the access mechanism to the computational functionality (e.g. REST API) for executing the action, while the other elements describe the action itself. Not sure we already have the proper patterns for linking these two spheres properly.
> Best wishes / Mit freundlichen Grüßen

Vicki's example of *contingentOnOffer* and my reaction to keep it
generic *contigentOn* and later extend its rangeIncludes to Offer ||
Action reminded me of this conversation.

ConsumeAction can also depend on previous TradeAction or TransferAction
so once again observation that *subtypes of TradeAction and
TransferAction match very closely Offer or Demand*. And as you can find
in my examples from original email (copy below) it seems to make sense
for many cases to use:

"@type": ["GiveAction", "Offer"]
"@type": ["ReceiveAction", "Demand"]

"@type": ["LendAction", "Offer"]
"@type": ["BorrowAction", "Demand"]

"@type": ["SellAction", "Offer"]
"@type": ["BuyAction", "Demand"]

and coming back to *contingentOn*

{
  "@type": "ReturnAction",
  "contingentOn": {
    "@type": "BorrowAction"
  }
}

now, how do I express:
"I can Lend this bike if recipient Return it to me"?!?

*contingentOn* Action which happens after (in a future)

{
  "@type": "LendAction",
  "object": {
    "@id": "/assets/bike-123",
    "@type": "Bike",
  }
  "contingentOn": {
    "@type": "ReturnAction",
    "object": {
      "@id": "/assets/bike-123"
    }
  }
}

not before (in a past) as in Vicki's (modified by me slightly):

{
  "@type": "WatchAction",
  "target": "http://www.hulu.com/thedailyshowwithjonstewart",
  "contingentOn": {
    "@type": ["Offer", "BuyAction"]
  }
}

and to make it even more tough construct, how to express: "For me to
Lend this bike to someone again, the person who Borrow(ed) it last, will
need to Return it to me first" @|@



> On 02 Jul 2014, at 15:48, ☮ elf Pavlik ☮ <perpetual-tripper@wwelves.org> wrote:
> 
>> I struggle to understand how (if) Actions can work together with
>> Offer/Demand. In particular TradeAction/TransferAction seem to have some
>> potential to work together with Offer/Demand...
>>
>> Looking at: Thing > Action > TransferAction > GiveAction
>> http://schema.org/GiveAction
>> "The act of transferring ownership of an object to a destination.
>> Reciprocal of TakeAction."
>>
>>
>> For example: https://gist.github.com/elf-pavlik/848d332d2259ffe9199e
>>
>> *Jane Doe gave a Fairphone to elf Pavlik*
>>
>> {
>>  "@id": "https://example.net/jane/actions/12345",
>>  "@type": "GiveAction",
>>  "recipient": {
>>    "@id": "https://wwelves.org/perpetual-tripper",
>>    "@type": "Person",
>>    "name": "elf Pavlik"
>>  },
>>  "agent": {
>>    "@id": "https://example.net/jane",
>>    "@type": "Person",
>>    "name": "Jane Doe"
>>  },
>>  "object": {
>>    "@id": "https://example.net/jane/assets/231231",
>>    "@type": "IndividualProduct",
>>    "model": {
>>      "@id": "http://fairphone.com/v1",
>>      "@type": "ProductModel",
>>      "name": "Fairphone V1"
>>  }
>> }
>>
>> To arrive at to this point in real world scenario, I would need to
>> publish a Demand and/or Jane would need to publish an Offer. At the same
>> time looking at Actions, using *potentialAction* seems an attractive
>> option when publishing list of assets:
>>
>> https://gist.github.com/elf-pavlik/f26562c3c1719bf06273
>> {
>>  "@id": "https://example.net/jane/assets/231231",
>>  "@type": "IndividualProduct",
>>  "model": {
>>    "@id": "http://fairphone.com/v1",
>>    "@type": "ProductModel",
>>    "name": "Fairphone V1"
>>  },
>>  "potentialAction": [
>>    {
>>      "@type": "GiveAction",
>>      "object": "https://example.net/jane/assets/231231"
>>    },
>>    {
>>      "@type": "BorrowAction",
>>      "object": "https://example.net/jane/assets/231231"
>>    },swee
>>    {
>>      "@type": "UseAction",
>>      "object": "https://example.net/jane/assets/231231"
>>    }
>>  ]
>> }
>>
>> I wonder how it could fit with Offer/Demand
>>
>> {
>>  "@id": "https://example.net/jane/listings/5939304",
>>  "@type": "Offer",
>>  "seller": "https://example.net/jane",
>>  "itemOffered": {
>>    "@id": "https://example.net/jane/assets/231231",
>>    "@type": "IndividualProduct",
>>    "model": {
>>      "@id": "http://fairphone.com/v1",
>>      "@type": "ProductModel",
>>      "name": "Fairphone V1"
>>    },
>>  }
>> }
>>
>> schema:TradeAction already enables schema:price (not sure why not
>> schema:priceSpecification ?) which in a way suggests this possibility:
>>
>> {
>>  "@type": ["GiveAction", "Offer"],
>>  "object": {
>>    "@id": "https://example.net/jane/assets/231231",
>>    "@type" "IndividualProduct"
>>  },
>>  "actionStatus": {"@type": "PotentialActionStatus"},
>>  "agent": {
>>    "@type": "Person",
>>    "@id": "https://example.net/jane",
>>    "name": "Jane Doe"
>>  }
>> }
>>
>> I like schema:object here which also fits nicer then schema:itemOffered
>> when used in schema:Demand
>> Similar schema:agent provides generic alternative to schema:seller
>> (which I find somehow confusing when used in Demand!)
>>
>> {
>>  "@type": ["ReceiveAction", "Demand"],
>>  "object": {
>>    "@id": "https://example.net/jane/assets/231231",
>>    "@type" "IndividualProduct"
>>  },
>>  "actionStatus": {"@type": "PotentialActionStatus"},
>>  "agent": {
>>    "@type": "Person",
>>    "@id": "https://wwelves.org/perpetual-tripper",
>>    "name": "elf Pavlik"
>> }
>>
>> Maybe also Offer/Demand could in a way 'mint' Trade/Transfer Actions...
>>
>> I try lately to follow developments in Hydra CG[1], now together with
>> Linked Data Fragments[2]. I see there strong emphasis on Hypermedia
>> Controls[3] and building around Actions looks like a nice fit[4]
>>
>> Any thoughts?
>> :)
>>
>> [1] http://www.hydra-cg.com/
>> [2] http://linkeddatafragments.org/
>> [3] https://sites.google.com/site/restframework/hypermedia-controls
>> [4] http://www.hydra-cg.com/spec/latest/schema.org/
>>
> 
> 
Received on Thursday, 18 September 2014 22:48:21 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:29:44 UTC