valueflows

valueflows docs
git clone https://s.sonu.ch/~srfsh/valueflows.git
Log | Files | Refs | README

commit 8ac03f473e6164330576113c49d30b48082c2354
parent 62f34b13295f170508a17b11d9e37a1faa6a64e8
Author: Bob Haugen <bob.haugen@gmail.com>
Date:   Sat,  3 Aug 2019 08:49:29 -0500

Merge pull request #503 from valueflows/proposal2

structure of proposal
Diffstat:
Mdocs/introduction/flows.md | 10+++++-----
Aexamples/multi-lateral-proposal.yaml | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aexamples/simple-proposals.yaml | 262+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mrelease-doc-in-process/all_vf.TTL | 78+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
4 files changed, 459 insertions(+), 6 deletions(-)

diff --git a/docs/introduction/flows.md b/docs/introduction/flows.md @@ -1,9 +1,9 @@ # Flows -Flows come as fundamental construct in ValueFlows ontology. When put in chronological order, they form a progression: +Flows are a fundamental construct in the ValueFlows ontology. When put in chronological order, they form a progression: 1. Intents which can lead to Commitments -2. Commitments which can lead to Economic Events +2. Commitments which can lead to Economic Events (or Intents can lead directly to Economic Events) ## Intent @@ -12,12 +12,12 @@ Intents describe potential future events which have not been agreed to by other ## Commitment -Commitments describe potential future events which the involved agents already agreed to pursue. Commitments can be considered contractual promises from one agent to another. Commitments are "mirrors" of economic events, and Economic Events can fulfull Commitments. Commitments can satisfy Intents. +Commitments describe potential future events which the involved agents have already agreed to pursue. Commitments can be considered contractual promises from one agent to another. Commitments are "mirrors" of economic events, and Economic Events can fulfull Commitments. Commitments can satisfy Intents. ## Economic Events -Economic Events describes past events, something observed, never some potential future event. They can fulfill Commitments or satisfy Intents (when there is no Commitment). +Economic Events describe past events, something observed, never some potential future event. They can fulfill Commitments or satisfy Intents (when there is no Commitment). ## Claims @@ -38,7 +38,7 @@ Often agents will start their plans independently and record their initial inten ## Granularity -Intents, Commitments, and Economic Events can occur at any granularity that is needed or for which data can be obtained. So they primarily are used for all operational needs, but can also be used at higher levels for analytical and high level planning needs for communities or regions, for example. +Intents, Commitments, and Economic Events can occur at any granularity that is needed or for which data can be obtained. So they primarily are used for all operational needs, but can also be used at higher levels for budgeting for organizations, analytical and high level planning needs for communities or regions, etc. ![Intent-Commitment-Event](https://rawgit.com/valueflows/valueflows/master/release-doc-in-process/i-c-e.png) diff --git a/examples/multi-lateral-proposal.yaml b/examples/multi-lateral-proposal.yaml @@ -0,0 +1,115 @@ +# Example: Multi-lateral proposal and intents +# Not ready to use yet !! + +'@context': + - https://git.io/vf-examples-jsonld-context + - alice: https://alice.example/ + +'@id': rgh:valueflows/valueflows/master/examples/multi-lateral-proposal.yaml +'@graph': + + - '@id': alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 + '@type': Proposal + name: 2019 offers and wants to trade + hasBeginning: 2019-01-01T00:00:00-5:00 + hasEnd: 2019-12-31T00:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': alice:27be5cab-d740-4194-9298-1661a69d9d95 + '@type': Intent + name: Housing + skos:note: One bedroom apartment to rent + action: transfer + receiver: https://alice.example/ + resourceClassifiedAs: wd:Q1247867 # housing + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 # the proposal + publishes: alice:27be5cab-d740-4194-9298-1661a69d9d95 # the intent + reciprocal: false + intentLogic: or + + - '@id': alice:40df0092-5455-4507-83fc-7f3d64538163 + '@type': Intent + name: Community garden + skos:note: Access to space in a community garden + action: transfer + receiver: https://alice.example/ + resourceClassifiedAs: wd:Q251958 # community garden + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 # the proposal + publishes: alice:40df0092-5455-4507-83fc-7f3d645381635 # the intent + reciprocal: false + intentLogic: or + + - '@id': alice:f12fc3b7-1033-4da0-85fd-a378b4cfb36f + '@type': Intent + name: CSA vegetable box + skos:note: CSA vegetable box weekly in season + action: transfer + receiver: https://alice.example/ + resourceClassifiedAs: wd:Q427249 # community supported agriculture + totalQuantity: + qudt:unit: unit:Number + qudt:numericValue: 20 + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 # the proposal + publishes: alice:f12fc3b7-1033-4da0-85fd-a378b4cfb36f # the intent + reciprocal: false + intentLogic: or + + - '@id': alice:40bb78fe-28df-41a6-b698-525fa9d411d6 + '@type': Intent + name: Child clothing + skos:note: Clothing for child, age 10 + action: transfer + receiver: https://alice.example/ + resourceClassifiedAs: wd:Q11460 # clothing + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 # the proposal + publishes: alice:40bb78fe-28df-41a6-b698-525fa9d411d6 # the intent + reciprocal: false + intentLogic: or + + - '@id': alice:7a63ea10-b1c3-441a-9a08-fb8630c02614 + '@type': Intent + name: Elder care + skos:note: Elder care in your home + action: work + provider: https://alice.example/ + resourceClassifiedAs: wd:Q15297473 # care giving + totalQuantity: + qudt:unit: unit:Hour + qudt:numericValue: 1000 + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 # the proposal + publishes: alice:7a63ea10-b1c3-441a-9a08-fb8630c02614 # the intent + reciprocal: false + intentLogic: or + + - '@id': alice:2402b57c-1c45-423a-acb2-f50961c97d65 + '@type': Intent + name: Child clothing + skos:note: Clothing for children, ages 0 to 6 + action: transfer + provider: https://alice.example/ + resourceClassifiedAs: wd:Q11460 # clothing + totalQuantity: + qudt:unit: unit:Number + qudt:numericValue: 50 + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:6b5bc786-b9ed-4189-b34f-5ef7d10f1f86 # the proposal + publishes: alice:2402b57c-1c45-423a-acb2-f50961c97d65 # the intent + reciprocal: false + intentLogic: or diff --git a/examples/simple-proposals.yaml b/examples/simple-proposals.yaml @@ -0,0 +1,262 @@ +# Example: Simple proposals and intents + +'@context': + - https://git.io/vf-examples-jsonld-context + - alice: https://alice.example/ + bob: https://bob.example/ + carol: https://carol.example/ + timebank: https://timebank.example/ + fablab: https://fablab.example/ + farm: https://farm.example/ + map: https://mapping.service/ + +'@id': rgh:valueflows/valueflows/master/examples/simple-proposals.yaml +'@graph': + + # One offer with expected reciprocity + + - '@id': alice:8791913c-0152-4c32-bb3f-f25d61df736c + '@type': Proposal + name: Used bike + hasBeginning: 2019-03-01T00:00:00-5:00 + hasEnd: 2019-03-31T00:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': alice:02b39a30-3e04-4305-9656-7f261aa63c84 + '@type': Intent + name: Old adult Schwinn one speed bike + skos:note: Pedals fine, not good for hills, has basket, brakes are a bit dodgy + action: transfer + provider: https://alice.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q11442 # bicycle + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:8791913c-0152-4c32-bb3f-f25d61df736c # the proposal + publishes: alice:02b39a30-3e04-4305-9656-7f261aa63c84 # the intent + reciprocal: false + + - '@id': alice:e72f7d1d-4f0a-4518-a44c-96658cafda95 + '@type': Intent + name: Payment + action: transfer + receiver: https://alice.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q4917 # US Dollar + flowQuantity: + qudt:unit: unit:Number + qudt:numericValue: 15 + + - '@id': alice:f325a950-5737-488d-b122-8f21114d0eb0 + '@type': ProposedIntent + publishedIn: alice:8791913c-0152-4c32-bb3f-f25d61df736c # the proposal + publishes: alice:e72f7d1d-4f0a-4518-a44c-96658cafda95 # the intent + reciprocal: true + + # Timebank request, reciprocity defined in the timebank agreement (hour credits) + + - '@id': bob:23799c14-c368-4653-a584-83bf9ae8b82a + '@type': Proposal + name: Seeking plumbing help + hasBeginning: 2019-04-01T00:00:00-5:00 + hasEnd: 2019-04-05T00:00:00-5:00 + inScopeOf: https://timebank.example/ + under: https://timebank.example/member-agreement/ + + - '@id': bob:e18c808c-929a-450d-9d0d-3b3f531bc126 + '@type': Intent + name: Plumbing help please + skos:note: Need someone with plumbing skills to fix leaky faucet and plugged drain asap + action: work + receiver: https://bob.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q252924 # plumber + + - '@id': bob:5d2fe7da-b91b-4dab-91d9-68db80c1feb7 + '@type': ProposedIntent + publishedIn: bob:23799c14-c368-4653-a584-83bf9ae8b82a # the proposal + publishes: bob:e18c808c-929a-450d-9d0d-3b3f531bc126 # the intent + + # Trade: barter + + - '@id': carol:6405b8ad-0ac2-4d58-abdb-0808903c78ad + '@type': Proposal + name: Cider press for cider + hasBeginning: 2018-10-01T00:00:00-5:00 + hasEnd: 2018-10-15T00:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': carol:e02e3f6b-420a-4ba8-89b0-909d7363ce07 + '@type': Intent + name: Cider press + skos:note: I can pick up or come to your place, will clean up. + action: use + receiver: https://carol.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q1111 # cider press (fictional) + flowQuantity: + qudt:unit: unit:Hour + qudt:numericValue: 6 + + - '@id': carol:9f112621-3f13-4f48-a3e2-fd2ca99493cd + '@type': ProposedIntent + publishedIn: carol:6405b8ad-0ac2-4d58-abdb-0808903c78ad # the proposal + publishes: carol:e02e3f6b-420a-4ba8-89b0-909d7363ce07 # the intent + reciprocal: false + + - '@id': carol:b52a5815-fae9-43bf-be95-833b95dc0adb + '@type': Intent + name: Cider + skos:note: Fresh cider from the pressing + action: transfer + provider: https://carol.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q5977438 # apple cider + flowQuantity: + qudt:unit: unit:Gallon + qudt:numericValue: 3 + + - '@id': carol:9bd19194-a36d-4a1f-896b-8082887962cb + '@type': ProposedIntent + publishedIn: carol:6405b8ad-0ac2-4d58-abdb-0808903c78ad # the proposal + publishes: carol:b52a5815-fae9-43bf-be95-833b95dc0adb7 # the intent + reciprocal: true + + # Plan a process, broadcast request for worker with certain skills to collaborate + + - '@id': fablab:ad56a7ed-be3c-4937-a3fb-0f156bcd2c47 + '@type': Process + name: Develop soil moisture sensor + inScopeOf: https://fablab.example/ + + - '@id': fablab:60f4204e-b8d2-4026-8577-102c3f82c0af + '@type': Intent + inputOf: fablab:ad56a7ed-be3c-4937-a3fb-0f156bcd2c47 + name: Help with R&D for the sensor + skos:note: Will need to be at the lab all day both days. + action: work + receiver: https://fablab.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q2474620 # electrochemical engineering + flowQuantity: + qudt:unit: unit:Hour + qudt:numericValue: 16 + hasBeginning: 2019-04-12T08:00:00-5:00 + hasEnd: 2019-04-13T17:00:00-5:00 + + - '@id': fablab:33e8933b-ff73-4a01-964a-ca7a98893083 + '@type': Proposal + name: Electrochemical engineering skills + hasBeginning: 2019-04-01T08:00:00-5:00 + hasEnd: 2019-04-11T17:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': fablab:b90b0b77-09a2-42e2-8bd4-e9ae2c1c6172 + '@type': ProposedIntent + publishedIn: fablab:33e8933b-ff73-4a01-964a-ca7a98893083 # the proposal + publishes: fablab:60f4204e-b8d2-4026-8577-102c3f82c0af # the intent + reciprocal: false + + - '@id': fablab:583e83d9-a46d-44ff-bd71-88513a1d83c0 + '@type': Intent + name: Payment + skos:note: Payment when the unit is manufactured and sold + action: transfer + provider: https://fablab.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q4917 # US Dollar + under: https://fablab.example/soil-sensor-project/value-equation/ + + - '@id': fablab:d4d2fd71-34f2-41c3-b1c5-19ad5ed2da59b + '@type': ProposedIntent + publishedIn: fablab:33e8933b-ff73-4a01-964a-ca7a98893083 # the proposal + publishes: fablab:583e83d9-a46d-44ff-bd71-88513a1d83c0 # the intent + reciprocal: true + + # Intent as part of 2 proposals + + - '@id': alice:8e5fe80d-a769-4bd5-89e5-2136d33eab9f + '@type': Proposal + name: Free used bike # alice did not get any responses to her proposal above, so decided to offer the bike for free + hasBeginning: 2019-04-01T00:00:00-5:00 + hasEnd: 2019-05-01T00:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': alice:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: alice:8e5fe80d-a769-4bd5-89e5-2136d33eab9f # the proposal + publishes: alice:02b39a30-3e04-4305-9656-7f261aa63c84 # the intent (this is the same intent alice originally published) + + # Price list + + - '@id': farm:da7bfa38-a1b2-4f6f-a896-b9bf1ec8807a + '@type': Proposal + hasBeginning: 2019-03-01T00:00:00-5:00 + hasEnd: 2019-03-31T00:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': farm:c7897c39-7f05-4a5d-a487-80e130a24345 + '@type': Intent + name: Carrots case 25# + action: transfer + provider: https://farm.example/ + resourceClassifiedAs: wd:Q81 # carrot + resourceSpecifiedAs: farm:2402b57c-1c45-423a-acb2-f50961c97d65 # 25 pound case organic carrots seconds + unitQuantity: + qudt:unit: unit:Number + qudt:numericValue: 1 + + - '@id': farm:a8236bbb-81e0-422d-9861-56d2417db0fb + '@type': ProposedIntent + publishedIn: farm:da7bfa38-a1b2-4f6f-a896-b9bf1ec8807a # the proposal + publishes: farm:c7897c39-7f05-4a5d-a487-80e130a24345 # the intent + reciprocal: false + + - '@id': farm:0f563083-7f05-4a5d-a487-80e130a24345 + '@type': Intent + name: Payment + action: transfer + receiver: https://farm.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q4917 # US Dollar + unitQuantity: + qudt:unit: unit:Number + qudt:numericValue: 18 + + - '@id': farm:f325a950-5737-488d-b122-8f21114d0eb0 + '@type': ProposedIntent + publishedIn: farm:da7bfa38-a1b2-4f6f-a896-b9bf1ec8807a # the proposal + publishes: farm:0f563083-7f05-4a5d-a487-80e130a24345 # the intent + reciprocal: true + + - '@id': farm:f47064eb-7120-4b31-b882-770165901fe6 + '@type': Proposal + hasBeginning: 2019-03-01T00:00:00-5:00 + hasEnd: 2019-03-31T00:00:00-5:00 + eligibleLocation: map:566a2c01-96f8-4b3c-adcf-f197eced3092 # Madison, WI + + - '@id': farm:54b814ee-62dc-40c1-bb96-f8582aa4f771 + '@type': Intent + name: Beets case 25# + action: transfer + provider: https://farm.example/ + resourceClassifiedAs: wd:Q165437 # beet root + resourceSpecifiedAs: farm:8baa8ff7-9c1e-4586-ae7b-79d620a3cac9 # 25 pound case organic beets + unitQuantity: + qudt:unit: unit:Number + qudt:numericValue: 1 + + - '@id': farm:98c2bfeb-9c70-4801-896c-4646b975a7d9 + '@type': ProposedIntent + publishedIn: farm:f47064eb-7120-4b31-b882-770165901fe6 # the proposal + publishes: farm:54b814ee-62dc-40c1-bb96-f8582aa4f771 # the intent + reciprocal: false + + - '@id': farm:21f361a6-2375-46bb-b192-c21b5ba833bf + '@type': Intent + name: Payment + action: transfer + receiver: https://farm.example/ + resourceClassifiedAs: https://www.wikidata.org/wiki/Q4917 # US Dollar + unitQuantity: + qudt:unit: unit:Number + qudt:numericValue: 32 + + - '@id': farm:b75d8f6a-e2df-4e52-b36d-1a22a66f4ead + '@type': ProposedIntent + publishedIn: farm:f47064eb-7120-4b31-b882-770165901fe6 # the proposal + publishes: farm:21f361a6-2375-46bb-b192-c21b5ba833bf5 # the intent + reciprocal: true diff --git a/release-doc-in-process/all_vf.TTL b/release-doc-in-process/all_vf.TTL @@ -77,7 +77,22 @@ vf:Plan a owl:Class ; vf:Intent a owl:Class ; rdfs:label "vf:Intent" ; vs:term_status "unstable" ; - rdfs:comment "A planned economic flow, which can lead to economic events (sometimes through commitments)" . + rdfs:comment "A proposed or planned or estimated economic flow, prior to a commitment or agreement, which can lead to commitments and/or economic events." . + +vf:Proposal a owl:Class ; + rdfs:label "vf:Proposal" ; + vs:term_status "unstable" ; + rdfs:comment "Published requests or offers, sometimes with what is expected in return." . + +vf:ProposedIntent a owl:Class ; + rdfs:label "vf:ProposedIntent" ; + vs:term_status "unstable" ; + rdfs:comment "Supports including intents in multiple proposals, as well as a proposal including multiple intents." . + +vf:ProposedTo a owl:Class ; + rdfs:label "vf:ProposedTo" ; + vs:term_status "unstable" ; + rdfs:comment "An agent to which the proposal is to be published." . vf:Commitment a owl:Class ; rdfs:label "vf:Commitment" ; @@ -386,6 +401,20 @@ vf:definedQuantity a owl:ObjectProperty ; vs:term_status "unstable" ; rdfs:comment "The amount and unit defined for this recipe flow." . +vf:availableQuantity a owl:ObjectProperty ; + rdfs:label "available quantity" ; + rdfs:domain vf:Intent ; + rdfs:range qudt:QuantityValue ; + vs:term_status "unstable" ; + rdfs:comment "The quantity of the offered or requested resource currently available." . + +vf:unitQuantity a owl:ObjectProperty ; + rdfs:label "unit quantity" ; + rdfs:domain vf:Intent ; + rdfs:range qudt:QuantityValue ; + vs:term_status "unstable" ; + rdfs:comment "The base quantity of the offer or request, which can be multipied to create a commitment; commonly seen in a price list or e-commerce." . + vf:currentLocation a owl:ObjectProperty ; rdfs:label "current location" ; rdfs:domain vf:EconomicResource ; @@ -400,6 +429,13 @@ vf:primaryLocation a owl:ObjectProperty ; vs:term_status "unstable" ; rdfs:comment "The main place an agent is located, often an address where activities occur and mail can be sent. This is usually a mappable geographic location. It also could be a website address, as in the case of agents who have no physical location." . +vf:eligibleLocation a owl:ObjectProperty ; + rdfs:label "eligible location" ; + rdfs:domain vf:Proposal ; + rdfs:range geo:SpatialThing ; + vs:term_status "unstable" ; + rdfs:comment "Location or area where the proposal is valid." . + vf:atLocation a owl:ObjectProperty ; rdfs:label "at location" ; rdfs:domain [ owl:unionOf (vf:EconomicEvent vf:Commitment vf:Intent) ] ; @@ -465,6 +501,46 @@ vf:satisfiedBy vs:term_status "unstable" ; rdfs:comment "A commitment or economic event fully or partially satisfying an intent" . +vf:publishes + a owl:ObjectProperty ; + rdfs:label "publishes" ; + rdfs:domain vf:ProposedIntent ; + rdfs:range vf:Intent ; + vs:term_status "unstable" ; + rdfs:comment "The intent which is part of this published proposal." . + +vf:publishedIn + a owl:ObjectProperty ; + rdfs:label "published in" ; + rdfs:domain vf:ProposedIntent ; + rdfs:range vf:Proposal ; + vs:term_status "unstable" ; + rdfs:comment "The published proposal which this intent is part of." . + +vf:proposed + a owl:ObjectProperty ; + rdfs:label "proposed" ; + rdfs:domain vf:ProposedTo ; + rdfs:range vf:Proposal ; + vs:term_status "unstable" ; + rdfs:comment "The proposal that is published to a specific agent." . + +vf:proposedTo + a owl:ObjectProperty ; + rdfs:label "proposed" ; + rdfs:domain vf:ProposedTo ; + rdfs:range foaf:Agent ; + vs:term_status "unstable" ; + rdfs:comment "The agent to which the proposal is published." . + +vf:reciprocal + a owl:ObjectProperty ; + rdfs:label "reciprocal" ; + rdfs:domain vf:ProposedIntent ; + rdfs:range xsd:boolean ; + vs:term_status "unstable" ; + rdfs:comment "This is a reciprocal intent of this proposal, not primary. Not meant to be part of intent matching." . + vf:finished a owl:DatatypeProperty ; rdfs:domain [ owl:unionOf (vf:Commitment vf:Process vf:Intent vf:Claim) ] ; rdfs:label "finished" ;