valueflows / forum.valueflo.ws

forum.valueflo.ws has moved to https://lab.allmende.io/valueflows/forum-valueflo-ws
3 stars 1 forks source link

The word and concept of Model is too limiting for VF #92

Closed bhaugen closed 4 years ago

bhaugen commented 7 years ago

I see in @fosterlynn 's latest UML model, which I otherwise love, that "Model" has replaced "Resource Type". Mostly, I want to stay out of naming arguments, but this one seems wrong. It comes from Good Relations, which is a domain ontology for e-commerce, and means "goods for sale". Which is, I think, how everybody will think of it.

VF is much more general, and aims to cover all economic and potentially all ecosystem relationships. Would you apply "Model" to a workspace or lab? How about a farm field? How about a skill? How about electrical energy? How about whole wheat bread dough?

I suggest that "Resource Template" would be adequately general, and also fit with the other names in the diagram better than "Model".

fosterlynn commented 7 years ago

I like ResourceTemplate - adds consistency to that layer.

elf-pavlik commented 7 years ago

We created distinction between category & model since

I like ResourceTemplate - adds consistency to that layer.

I don't feel sure about that, if you look at this version of diagram

copy of process-oriented flow 1

Observation and Plan can reference anything on Recipe layer but doesn't depend on it. Category / Model doesn't fit the Recipe layer since Observation and Plan require it.

Or maybe you think of just keeping Category at the current position in the diagram and in addition have not required ResourceTemplate on Recipe layer?

This could make sense, IMO resources should always reference commonly defined Category even if they also reference some locally defined Model / Template. This would allow to always categorize resources directly without need to resolve Model / Template and get categories from there, especially that it could happen that Model / Template record might stay offline.

fosterlynn commented 7 years ago

Or maybe you think of just keeping Category at the current position in the diagram and in addition have not required ResourceTemplate on Recipe layer?

Yes exactly.

elf-pavlik commented 7 years ago

Would you apply "Model" to a workspace or lab?

Would the template include list of all the expected equipment?

How about a farm field?

Would template include planted combination of crops and maybe size(s) ?

How about a skill?

Would template include some acceptance criteria, I think for skills various certifications exist (eg. US Driver License cat. A)

How about electrical energy?

What would template include here, Voltage & Amperage?

How about whole wheat bread dough?

Since template of the process to make it would reference all the ingredients and steps to make it. What would the template of the dough itself include, just the reference to the template of the process?

bhaugen commented 7 years ago

@elf-pavlik did I accidentally edit your comment instead of responding? Didn't mean to. Let's see if I can undo what I did...ok, I think I fixed it. Let me know if I messed anything up. And I'm sorry about that, was moving too fast this morning...

bhaugen commented 7 years ago

Response to @elf-pavlik 's commend above:

I am not sure if these are serious or rhetorical questions, so I will respond as if they were serious.

Would you apply "Model" to a workspace or lab?

Would the template include list of all the expected equipment?

First, I would not use the word "Model" for a workspace or lab. Second, I would say that the equipment is contained in the lab, and each has its own template, they are not included in the template of the lab, which would just describe what kind of lab it is. The equipment would be instantiated and related to a lab Resource, not the lab template, which is an abstraction.

How about a farm field?

Would template include planted combination of crops and maybe size(s) ?

Similar to the lab: the farm field template might describe a type of field. A field resource would describe its location, size, and other physical characteristics. The planted crops are resources involved in a long-running set of processes happening on the field.

How about a skill?

Would template include some acceptance criteria, I think for skills various certifications exist (eg. US Driver License cat. A)

Might do so. Often does.

How about electrical energy?

What would template include here, Voltage & Amperage?

Those might be features that electrical energy would be expected to have, but the quantities would belong to an energy resource.

How about whole wheat bread dough?

Since template of the process to make it would reference all the ingredients and steps to make it. What would the template of the dough itself include, just the reference to the template of the process?

I'll assume by "template of process" you mean "recipe", so yet, it would reference ingredients and steps.

Dough could be a resource at a stage of a bread-making process, coming out of the mixing process, and going through some stages of dough fermentation, until it is shaped into something to bake. The recipe would define all of those stages, and each would in some way require a different but related template (the same substance at different stage of processing). In NRP, handled those kinds of process flows, where the same resource was an input to a process and then an output, but changed by the process, as "workflow recipes", as contrasted with "manufacturing recipes" which assembled inputs into outputs with different and unrelated templates.

In the 1990's, there was a mini-crisis in ERP systems when they failed to work for food processing and other fluid (as opposed to solid component) manufacturing. The resulting changes were similar to NRP workflow recipes. The resources in the food processing systems were called "stream resources". We discussed them in this long and shaggy design document in 2014, if you have a lot of time and patience and deep interest.

elf-pavlik commented 7 years ago

the template of the lab, which would just describe what kind of lab it is. [...] Similar to the lab: the farm field template might describe a type of field.

I think both cases above doesn't require any template but can simply reference common category from wikidata or some other common pool of references. Resource templates could come useful when 'recipe' requires something more than just category, eg. "5kg package of carrots", while just 'carrots' would use something like wikidata reference (as category) - https://www.wikidata.org/entity/Q81 the "5kg package of carrots" could stay represented by template which would include information that each package contains 5kg of carrots.

As a rule of thumb we could take:

bhaugen commented 7 years ago

In a food network, carrots often require more definition than a category: for example, growing method (e.g. Certified Organic), and a precise variety, e.g. "purple dragon".

I'm not sure what a field category vs template would involve. Might need to ask Farmos.

djodjoni commented 7 years ago

I just saw this discussion but it seems similar to what I have been struggling with also in particular food types, categories and variants. I didn't follow the whole design process and I am not really sure I understand completely what is the purpose and difference between category, model and template however I see all those as a broader concept otherwise it can get too complicated not only to understand but what to use and when (which happens in this discussion also). As @elf-pavlik mentioned one can have more than 1 broader concept which then leads into another context which is perfectly fine and of course preferably they reference to a known common vocabulary.

The issue that I was facing is that all vocabularies/thesauri dbpedia, wikidata, agrovoc, gs1 they have different structure of their concepts and their types and also the software around including farmos and any other online food store categorizes the products in different ways. So seems this is inevitable. Using broader/narrower solution those can match at some point giving some kind of link and enabling interoperability of some level to any vocabularies. Introducing the time aspect perceptions will chanage and people will need different models and templates. Infact looking at dbpedia one can see the mess which is the result of the different views that we all have.

as regards to more than one definitions example it can have just be broader/narrower terms.

<5kg package of carrots> broader < carrots > <5kg package of carrots> broader < Certified Organic Vegetable > <5kg package of carrots purple dragon> broder <5kg package of carrots> < Certified Organic Vegetable > broader < Certified Organic food > < Certified Organic Vegetable > broader < Vegetable > It may look loose but I couldn't find better way to prevent a mess and complexity when having many people creating those terms without enforcing strict rules. Infact wikidata does it in a similar way.
bhaugen commented 7 years ago

Anybody who wants to trade or collaborate needs to agree on their definitions of resources to flow between them.

They can either agree on a common definition - that's why standards like GS1 evolved - or see next paragraph. In a couple of food networks we worked with, which were multi-stakeholder cooperatives, all of the stakeholders met and decided how they were going to identify resources uniformly.

Likewise I saw some documentation for a very expensive joint venture system where that was one of the upfront requirements for joining a JV: you will use our resource identification scheme.

Otherwise, each collaborator needs to have a translation between their definition and their collaborating partners' definitions. I've seen that done in some ERP systems via fields like "Customer Product ID" or "Supplier Product ID". (Tedious and ugly, but sometimes necessary.)

djodjoni commented 7 years ago

for the second case I believe it is tedious and ugly when the systems are too strict otherwise it could work with a little mapping, image 2 systems which were based on wikidata and extending its Items(concepts), one can easily map the extra definitions.

With the first scenario imagine A agreesWith B , C agreesWith D. if A and C need to collaborate later and the systems both collaborators agreed on are too different then we have to either: 1) create a third one 2) create mapping between those

here in both cases especially in the 1st one you double maintenance. Not only that but you create yet another completely new definition.

I imagine something less formal but guiding to build extensible and reusable systems so it is possible to create collaborative graphs of actors with not too much effort from the parties involved. I image that people can just "fork" your vocabulary and extend it as they see fit. PRs could also be acceptable :)

elf-pavlik commented 7 years ago

(e.g. Certified Organic)

I think this should reference particular certification, each resource which has such certification should reference it and Template also seems like reasonable place while we don't have concrete resource (even panned one with initial quantity: 0).

In case where one doesn't want to reference particular certification, possibly common reference like https://www.wikidata.org/entity/Q380778 can help.

The issue that I was facing is that all vocabularies/thesauri dbpedia, wikidata, agrovoc, gs1 they have different structure of their concepts and their types and also the software around including farmos and any other online food store categorizes the products in different ways. So seems this is inevitable.

I think we could organize a video call with folks engaging in food-dashboard discussions and see if we could find common reference (eg. Wikidata) for categories.

djodjoni commented 7 years ago

For the certification can be indeed a document reference, it was just an example for different broader concepts.

I think we could organize a video call with folks engaging in food-dashboard discussions and see if we could find common reference (eg. Wikidata) for categories.

I don't think we should try to find one single common reference, rather specify a set of known thesauri to use as a base as all fo them could be suitable in different cases. This can be defined by set of properties applying to Category or directly to Resource for example. Somethings like https://www.wikidata.org/wiki/Property:P646.

Btw I got a little confused. Could you help me a bit :) Now lets see Resource. Its instances are actual 'physical' economic values identifiable to 1 single item in space/time.

Now Resourse has:

Now which have to be considered as the ResourceType ? The Class, Category, Model or some combination of those? p.s. sorry if the questions seems to dumb but I'd like to understand the reasoning behind :)

elf-pavlik commented 7 years ago

Now Resourse has:

  • Subclasses
  • Category
  • Model (Model has also Category. can they be different? isn't that leading to inconsistency?)

We introduced very small number of subclasses to have more specific classes than very broad vf:Resource. For example not all actions (Action Verbs) can apply to all of those subclasses. (eg. https://github.com/valueflows/resource/issues/12). Software applications with more specific functionality would implement it only for some of those subclasses.

For Category vs. Model/Template I suggested 'rule of thumb' in https://github.com/valueflows/valueflows/issues/179#issuecomment-280954089

Now which have to be considered as the ResourceType ?

As ResourceType, do you refer to https://github.com/valueflows/resource#resourcetypes-are-a-taxonomy ? @bhaugen wrote it over a year ago and it as understand it comes from REA and NRP software they implemented together with @fosterlynn . From what I know none of above supports open world assumption and integration of unbound number of data sources. I think having just 'ResourceType' might have worked just fine in comfortable closed world data silo and single implementation with pretty generic functionalities (NRP).

pmackay commented 7 years ago

Hi all :)

Slightly concerned that ResourceTemplate implies a template to be filled in, whereas I see the Model/Type entity as an abstraction of the resource.

this one seems wrong. It comes from Good Relations, which is a domain ontology for e-commerce, and means "goods for sale".

I still feel there is a need for all these, e.g:

entity example
Resource My personal Fairphone, 1 year old
ResourceModel Fairphone 2
ResourceType Mobile phone
ResourceCategory Mobile phones
entity example
Resource 5kg pack of purple dragon carrots from farmers market
ResourceModel Could define variety but Model isnt the best name then
ResourceType Purple dragon carrot > Carrot (a type hierarchy)
ResourceCategory Vegetables

Model has also Category. can they be different? isn't that leading to inconsistency?

I also wonder if both Resource and Model/Type/Template need Category. If Types can have categories assigned, does that remove the need to assign categories to all Resources instances?

djodjoni commented 7 years ago

great discussion :) @elf-pavlik thx for the explanation!

For example not all actions (Action Verbs) can apply to all of those subclasses.

lgtm!

As ResourceType, do you refer to https://github.com/valueflows/resource#resourcetypes-are-a-taxonomy ?

Indeed thx for clarifying

For Category vs. Model/Template I suggested 'rule of thumb' in #179 (comment)

I read, understood and agree with that, I will just explain how I see them.

For me, Category is a valueless Model however it shares the same features and can be broader or narrower. In fact, most of the time Category just implies values without implicitly specifying them for example "Red Tomato" == "Tomato{color=Red}".

You also mention there:

for extremely specific categorization one may define custom categories, still preferably using 'broader' to reference some category from a common pool

Having said that in case a Model can have hierarchy then of course model can be a more specific Category but I see it gets too generic so I tend to like separate model and category now.

as @pmackay noted:

Slightly concerned that ResourceTemplate implies a template to be filled in, whereas I see the Model/Type entity as an abstraction of the resource.

I share the same vision.

However :

I still feel there is a need for all these, e.g:

I really don't think ResourceType is needed as it is covered by either the Model or Category for example:

ResourceCategory can be: Purple dragon carrot > Carrot > Vegetables

So finally I would personally find usable the case where, when needed, you have Category thesaurus which can have custom nodes referencing more common shared thesauri. Then also when needed, Model/Template thesaurus per Instance Type (as it is now except for the Resource subclasses), which have some specific data for the given Instance Type.

For the naming of the Resource Model I think for consistency we can call it ResourceTemplate like all XTempates or rename them all to AbstractX ?

For LOD specificities I would propose subclass the Templates and Categories from SKOS Concept as it provides nice way to build those structures and also compatible with all other SKOS thesauri. For interoperability plugs for Category there could be properties like broaderDbpedia, broaderWikidata or for food for example: broaderAgrovoc. Why different properties, because it is easier/more practical for implementations later. What do you think or it is too early for those specificities?

I also wonder if both Resource and Model/Type/Template need Category. If Types can have categories assigned, does that remove the need to assign categories to all Resources instances?

Nice it was asked again :) as I agree that when you have Model/Type/Template categorized instances just inherit those.

pmackay commented 7 years ago

Category: (from OED): A class or division of people or things regarded as having particular shared characteristics.

ResourceCategory can be: Purple dragon carrot > Carrot > Vegetables

My point is categories imply groups of things, so Carrots could be a category, but Carrot is singular and a type of a thing. Also it tends to be a group of different things, so Purple dragon carrot is not a good category because its one very specific kind of vegetable.

Also with a Model/Type, attributes like "colour is orange" can be defined, which is not true for a category like Vegetables. Wikidata itself models this, the carrot item is a subclass of root vegetable, but also has the "Commons category" property of Carrots (plural).... (in general the more we can align and make use of wikidata the better IMHO)

djodjoni commented 7 years ago

I am too picky how we name things :) and if category cannot be too specific we can call it type :) but I just wanted to say IMO we need 2 things only: one for possibly deep hierarchy but simple categorisation and as much common as possible (which is a combination of category/type) and one for more specific "typing" like the Model/Type example.

Resource: my personal 5kg pack of purple dragon carrots from farmers market ResourceModel: 5kg pack of purple dragon carrots from farmers market ResourceType: Purple dragon carrot > Carrot > Vegetables

(in general the more we can align and make use of wikidata the better IMHO)

I like this, to re-use common work in general but there are different sources which might better fit in different needs for example agrovoc can be more complete and structured also more known than wikidata food Items, however it will be nice to contribute and fix things in wikidata as well, which will happen more if it is used more :)

elf-pavlik commented 7 years ago

Resource: my personal 5kg pack of purple dragon carrots from farmers market ResourceModel: 5kg pack of purple dragon carrots from farmers market ResourceType: Purple dragon carrot > Carrot > Vegetables

:+1: as I understood @bhaugen would prefer to use term ResourceTemplate instead of ResourceModel

Once again for me main difference between Category and Model/Template comes with pushing to use common references for Categories (eg. Wikidata, Agrovoc). While agents/actors could define their more specific Models/Templates independently.

I also wonder if both Resource and Model/Type/Template need Category. If Types can have categories assigned, does that remove the need to assign categories to all Resources instances?

Nice it was asked again :) as I agree that when you have Model/Type/Template categorized instances just inherit those.

I would prefer not to rely on Model/Template to know Categories which particular resource belongs to. This relates to above "agents/actors could define their more specific Models/Templates independently", which means that we may want to anticipate that sometimes they become not available (offline). So to know how to categorize particular resource in one's own inventory, the inventory dataset would always make sure to cache those Model/Template records. IMO always having categories directly on instances of a Resource, doesn't require ensuring Model/Template available (pretty much cached in the same dataset with instances of Resource of that Model/Template) and simplifies queries which should return only instances of Resources with particular categories (you don't need have to for each resource check direct categories and indirect categories using data from cached instances of Model/Template)

bhaugen commented 7 years ago

I am delighted to see more people engaging with this topic, and plan mostly to stay out of your way. I just wanted to clarify one comment from up-thread:

As ResourceType, do you refer to https://github.com/valueflows/resource#resourcetypes-are-a-taxonomy ? @bhaugen wrote it over a year ago and it as understand it comes from REA and NRP software they implemented together with @fosterlynn . From what I know none of above supports open world assumption and integration of unbound number of data sources. I think having just 'ResourceType' might have worked just fine in comfortable closed world data silo and single implementation with pretty generic functionalities (NRP).

Resource types ~= taxonomies has nothing to do with NRP, it's just an observation, that they seem to do so. (We never did much with those taxonomies in NRP, although we did so in our previous food network software.) Also has no conflict with open world assumption and is not confined in data silos. I see lots of resource type, template, category, or what-have-you taxonomies in the Linked Open Data world (e.g. agrovoc). I think skills also tend to come in taxonomies, as do process types/templates (to jump to another related concept).

djodjoni commented 7 years ago

BTW when i said

I am too picky how we name things :

I actually meant: I am not too picky :))) sry :))

djodjoni commented 7 years ago

I would prefer not to rely on Model/Template to know Categories which particular resource belongs to. This relates to above "agents/actors could define their more specific Models/Templates independently", which means that we may want to anticipate that sometimes they become not available (offline). ...

When I read this I figured out that this could also be valid if a Template(let's call it only like this from now if we all agree :) gets changed wich happens a lot, however this applies to Wikidata and its 'items' as well so this is why I think it will be nice also to cache the concepts wich relates to the outside world and set an exactMatch property for example. I would personally do this for the whole tree/graph as apart for safe and faster querying it also allows to trim those category trees and have simpler versions with less levels. For example, I haven't seen too many shops having "root vegetable" category. It also allows cleaner view of your own world of terms and super useful when actually doing the implementation.

Btw @elf-pavlik for cachin did you mean actually changing the URI of the Original template to local ones ?

fosterlynn commented 7 years ago

I also wonder if both Resource and Model/Type/Template need Category. If Types can have categories assigned, does that remove the need to assign categories to all Resources instances?

In addition to @elf-pavlik 's explanation, a Resource may not actually have a Model/Type/Template but only a category. So whether or not we repeat the category in a Resource that has a ResourceTemplate, I think we still need it there for resources that don't have something as specific as a ResourceTemplate.

elf-pavlik commented 7 years ago

Btw @elf-pavlik for cachin did you mean actually changing the URI of the Original template to local ones ?

Not at all, if we have template identified by https://acme.example/carrots-5kg#template and a resource https://coop.example/34029420942#resource which references that template. The https://coop.example/ dataset should at least have copy of triples https://acme.example/carrots-5kg#template vf:category ?category to have them available even when https://acme.example/ stays unavailable.

In addition to @elf-pavlik 's explanation, a Resource may not actually have a Model/Type/Template but only a category. So whether or not we repeat the category in a Resource that has a ResourceTemplate, I think we still need it there for resources that don't have something as specific as a ResourceTemplate.

I don't know if I understand exactly, what do you mean by "need it there", since Classes don't specify anything like 'valid/allowed properties for this class'. Maybe you refer to what vf:category (the property itself with its independent semantics) would have defined as rdfs:domain (eg. union of vf:Resource and vf:ResourceTemplate). When it comes to query, if Resources would have categories directly referenced and/or indirectly through ResourceTemplate, this would require to always anticipate both possibilities in queries. In case we find need for ResourceTemplates to have some kind of 'parent' templates this might require also including categories from parent templates, which would make querying for categories which particular resource 'belongs to' even more complex.

pmackay commented 7 years ago

I've reviewed Agrovoc a bit more :)

Once again for me main difference between Category and Model/Template comes with pushing to use common references for Categories (eg. Wikidata, Agrovoc)

@elf-pavlik can you expand a bit on this? Do you see the singular "carrot" on Wikidata https://www.wikidata.org/wiki/Q81 as the same as "carrots" in Agrovoc http://artemide.art.uniroma2.it:8081/agrovoc/agrovoc/en/page/c_9640? The first is a "type of a thing" while the second is a "category of thing". However I can see they could be easily mapped and Agrovoc is nice in that the whole tree looks like it can interchange like that, e.g:

carrot is a type of plant product carrot is in a category of plant product

Where I'm more concerned is when VF has to capture category schemes where this does not work, e.g:

carrot is a type of "Fruit and Veg" - this does not work IMHO carrot is in a category of "Fruit and Veg" - this is fine

Note: Fruit and Veg is a category on OFN UK

djodjoni commented 7 years ago

In addition to @elf-pavlik 's explanation, a Resource may not actually have a Model/Type/Template but only a category.

Also this seems a little confusing since how are you going to do that recipe/planning without an actual 'ingredient' ?

have copy of triples https://acme.example/carrots-5kg#template vf:category ?category to have them available even when https://acme.example/ stays unavailable.

:+1: :+1: I would also copy all edges connected directly or indirectly to the resource instance in a similar way.

.. which would make querying for categories which particular resource 'belongs to' even more complex.

Indeed this is why I see best to have only reference if the other will be anyway the same, as regards to complexity related to broader Templates we cannot anything there but alpplying some inferring where possible as a preprocessing to speed up queries. However in practice I image those complex queries to happen not that often and on separate copies of the data possible pre-processed and optimized I image not only sparql infact for example to analyze 460M triples of dbpedia I used ELK stack and was quite nice also for visualization.

https://www.wikidata.org/wiki/Q81 as the same as "carrots" in Agrovoc http://artemide.art.uniroma2.it:8081/agrovoc/agrovoc/en/page/c_9640? The first is a "type of a thing" while the second is a "category of thing"

For me those are the same :) In fact all the ''things" in wikidata are Concepts, Items in particular can be instances of something or subclasses or superclasses for example Q81, mening that we can call the different names. Also https://agclass.nal.usda.gov/mtwdk.exe?k=default&l=60&n=1&s=5&t=2&w=22697 reffers to carrots as a term :)

Note: Fruit and Veg is a category on OFN UK

This is one of the things I mentioned is that everybody can do those diffrently . For example I map them as separate fuits, vegitables, foodsoft as one main category: "03": fruit, vegetables, sprouts, mushrooms and then "0311": potatoes "0312": Root vegetables" as Sub-category, which is similar to Wikidata hierarchy for carrot. NOTE also potato is considered sometimes under rootvegetable as well.

So IMO I don't see changing the taxnomy of all solutions rather map those with wikidata, agrovoc etc

ofnuk:fruitnveg broader wiki:Q3314483 ofnuk:fruitnveg broader wiki:Q11004 ofnuk:fruitnveg broader agrovoc:c_8174 ofnuk:fruitnveg broader agrovoc:c_3131

bhaugen commented 7 years ago

In addition to @elf-pavlik 's explanation, a Resource may not actually have a Model/Type/Template but only a category. Also this seems a little confusing since how are you going to do that recipe/planning without an actual 'ingredient' ?

I think you will need a template for recipes and maybe planning. Where we see resources specified only with a category is in mutual credit networks, where people request something in a category, and then it gets refined to something more specific when somebody makes an offer. Like, we requested a place for me and Lynn to sleep for a conference, and Marina offers a room at her house on X street.

I'll find some examples of their categories after breakfast. Tried now, and failed.

djodjoni commented 7 years ago

@bhaugen but this offer which is a specific unique instance has Template behind ? meaning room 1 bed for example, where marina may have 10 rooms 1bed 4 rooms 2 bed , which could also be offered on airbnb for example, where recipe/planning may happen. Of curse as I mentioned earlier these can be categories but following the rule proposed earlier by @elf-pavlik category would be rather "room for rent" ?

fosterlynn commented 7 years ago

I don't know if I understand exactly, what do you mean by "need it there", since Classes don't specify anything like 'valid/allowed properties for this class'. Maybe you refer to what vf:category (the property itself with its independent semantics) would have defined as rdfs:domain (eg. union of vf:Resource and vf:ResourceTemplate).

Yes I suppose that is what I mean. I don't know how restrictive we want to get with something like category, but I do want to show specifically (at least in documentation) that you might need to use a category if you don't have a specific model. Question: in most vocabs' documentation, they list properties of classes. I assume those aren't all restricted with rdfs:domain, but maybe I'm wrong?

In addition to @elf-pavlik 's explanation, a Resource may not actually have a Model/Type/Template but only a category.

Also this seems a little confusing since how are you going to do that recipe/planning without an actual 'ingredient' ?

Yes, as @bhaugen said, category won't work for recipes, you have to use template/model. But not every "rea:ResourceType" will have a recipe. For example, I picture skills / types of work to be a category, although @bhaugen may disagree. Even some material things that do have a recipe somewhere may not have a known model in some situations, or the agent may not care to that level, although this probably applies more to intents than events.

but this offer which is a specific unique instance has Template behind ? meaning room 1 bed for example, where marina may have 10 rooms 1bed 4 rooms 2 bed , which could also be offered on airbnb for example, where recipe/planning may happen. Of curse as I mentioned earlier these can be categories but following the rule proposed earlier by @elf-pavlik category would be rather "room for rent"

Not sure I totally understand this, but I think "room 1 bed" is a category. Marina's actual room is a resource, not a template or a category. Marina would offer her actual resource on airbnb or for use during the conference. The resource would reference the category so that people can search for 1 bed rooms in Madison, and find hers.

"XYZ Apartment Developers room 1 bed" might be a template with a recipe that they use for building all their 1 bed rooms.

In terms of "room for rent", this seems to also include the action or offer in addition to the category. I picture the category not including what it can be used for, would be the same if it is for rent or not.

bhaugen commented 7 years ago

I picture skills / types of work to be a category, although @bhaugen may disagree.

Not necessarily, but I know that @elf-pavlik is doing a lot of thinking and work with skills aka cognitive characteristics and they also connect to work on credentials, training, etc etc. So they are a lot more complex than your usual category.

djodjoni commented 7 years ago

just to clarify here the Resource is actually a Sevice which is renting. meaning the Template is: Mariana's 1 room for rent on street X, where service is Mariana's room renting to @fosterlynn

isn't it ?

djodjoni commented 7 years ago

btw for me room for rent and room for sale are completely different things and also the room itself is different which is referenced by the 2 types. I've been dealing with real estate software for the past 3 years and this is how it is perceived :)

bhaugen commented 7 years ago

Marina's actual room is not for rent. It is shared with people who are working for the Mutual Aid Network (like us).

fosterlynn commented 7 years ago

just to clarify here the Resource is actually a Sevice which is renting. meaning the Template is: Mariana's 1 room for rent on street X, where service is Mariana's room renting to @fosterlynn

Yes very good point. We are still discussing how to handle such things. There is a proposal that Mariana's room is one resource (not template, which has no physical existence, is just a type); and Mariana's sharing of room with me (or in other cases could be renting of the room) is another resource, could be a service maybe. The second resource would reference the first resource as vf:underlyingResource, which supports different rights to the physical resource.

So yes, if Mariana's room is for sale, then the resource offered is the actual room, and all rights to the room would be transferred in a sale. If Mariana's room is for rent, then the resource offered is the service or usage or rental resource.

There is another way we have handled such things in the past, actually for equipment usage, but I think that is the same essence as renting or using a room. In NRP, we referenced the material resource (a real piece of equipment) and had an event with vf:action of "use" instead of say "consume". The nrp:ResourceType had "units" and "units of use".

My current tentative opinion is that we should drop "use" as a verb (and "units of use") in favor of there being a service or usage resource that references the real underlying resource. But we haven't worked this through very much in examples, and haven't finished discussing it. See #173, a little here #156, maybe https://github.com/valueflows/resource/issues/51, even earlier https://github.com/valueflows/resource/issues/29. And probably other places that I couldn't find...

gcassel commented 7 years ago

I would find it unnecessary and confusing for VF to assign the use of the term "model" to indicate types (or categories) of resources offered by specific suppliers or manufacturers. This is partly because many people use the term "model" as our fundamental, generic descriptive term for representations of systems and elements. For instance, look at the cornucopia of wikipedia entries for model.

I think that a streamlined use of 'type' could work fine, as long as there's some 'grammatically' simple way to clearly indicate that some 'types' are directly defined by the fact that they've been specified, and offered, by specific suppliers.

gcassel commented 7 years ago

My current tentative opinion is that we should drop "use" as a verb (and "units of use") in favor of there being a service or usage resource that references the real underlying resource.

I strongly agree @fosterlynn , and I wish I had a clear constructive suggestion on how to resolve this. As I've mentioned before, I like to describe resources in terms of establishing exclusive access rights, or "ownership", and then extending the access rights temporarily and conditionally (borrowing, renting) or transferring the access rights (selling).

djodjoni commented 7 years ago

There is a proposal that Mariana's room is one resource (not template, which has no physical existence, is just a type); and Mariana's sharing of room with me (or in other cases could be renting of the room) is another resource, could be a service maybe. The second resource would reference the first resource as vf:underlyingResource, which supports different rights to the physical resource.

I got confused a bit here :)

(not template, which has no physical existence, is just a type);

You mean type in Context outside of VF ?

As of the vf:underlyingResource I am not really sure how you intend to use it probably some examples would be great :) However I don't see the Mariana's room resource as a vf:Resource at all in the Context of renting. It might be a general resource but not something usable in that context. Imagine that you have a restriction that you cannot rent this room. Then you will never had the offer for it e.i. the Resource "renting the room" thus the underlyingResource will also not exist.

As for Sell/Rent if just change of rights IMO it can be done this way also but it might be fairly complicated as renting might come with many other related services like water, gas, electricity and also restrictions on the usage of the item being rented. This is why IMO a Service with appropriate properties would be easier to handle.

fosterlynn commented 7 years ago

As for Sell/Rent if just change of rights IMO it can be done this way also but it might be fairly complicated as renting might come with many other related services like water, gas, electricity and also restrictions on the usage of the item being rented. This is why IMO a Service with appropriate properties would be easier to handle.

OK, let's try it that way.

There is a proposal that Mariana's room is one resource (not template, which has no physical existence, is just a type); and Mariana's sharing of room with me (or in other cases could be renting of the room) is another resource, could be a service maybe. The second resource would reference the first resource as vf:underlyingResource, which supports different rights to the physical resource.

I got confused a bit here :)

Sorry about that! So there is Resource and ResourceTemplate. Resources belong in reality (observation layer in that UML). ResourceTemplates (type objects) are never in reality in the world, they are configurations, definitions, templates, that kind of thing. They give some definition to the resources. But as @elf-pavlik pointed out somewhere, they are not the class (or @type) for which the resource is the instance. I don't know if I am being any clearer.... Ah, look here, it has been explained before by @bhaugen : https://github.com/valnet/valuenetwork/wiki/Resource-Types-vs-Resources. (Substitute "ResourceType" with "ResourceTemplate".)

You mean type in Context outside of VF ?

I wasn't worrying about any context. Just that Marina's room exists as a resource in the real world. It will matter in some contexts, even if it never will show up on offers for renting the room or staying in it during a conference. So it is not a template or type. When it matters to someone, it will show up as a resource.

We can use Marina's room and the service of providing it to people to stay in as examples of underlying resource. Marina's room is the underlying resource of the service. So we know exactly what resource (room) is the subject of the service resource (staying in it). The service offers some rights (and responsibilities) for use of that exact room.

bhaugen commented 7 years ago

Types as we used them are Type Objects which use composition instead of inheritance.

bhaugen commented 7 years ago

Or http://www.cs.ox.ac.uk/jeremy.gibbons/dpa/typeobject.pdf

elf-pavlik commented 7 years ago

Since we discuss Template/Model/Type, I think we may also want to address issue that sometimes one may want to consider particular 'Model' itself also as Resource (a Knowledge Resource). If we take for example some open source hardware - https://wikihouse.cc/library/types/Microhouse it comes as output of long chain of R&D processes. NRP seems to use specific 'cite' action verb in each transformation process to 'attribute' knowledge resource used in the process. I think that a particular house made based on wikihouse:Microhouse design could simply reference it as model and this way 'attribute' that design/blueprint (Knowledge Resource).

Above interpretation of Model as 'the design, specification', doesn't fit suggested by @bhaugen 'ResourceType' - purely abstract thing, disjoint with Resource.

pmackay commented 7 years ago

@bhaugen thanks for those links, very useful :)

they are not the class (or @type) for which the resource is the instance

@fosterlynn do you mean here a very UML specific point? Is there a method in VF for defining this or is the intention that it is all through vf:category? To review my phone example, are we now saying:

entity example
Resource My personal Fairphone, 1 year old
ResourceTemplate Fairphone 1
ResourceCategory Smartphones (e.g. https://en.wikipedia.org/wiki/Category:Smartphones)
ResourceType? smartphone

The type is a way to express the instance of relationship. So just trying to clarify if this is useful/desirable for VF or ResourceCategory is considered sufficient?

I think we may also want to address issue that sometimes one may want to consider particular 'Model' itself also as Resource (a Knowledge Resource)

@elf-pavlik a small plea to handle this as a separate issue? :) I can see it being very useful but would be great to keep this related to the modellng of physical with VF concepts IHMO...

djodjoni commented 7 years ago

@fosterlynn, I am sorry I have provoked again the 'Type' discussion but the part that confused me was:

(not template, which has no physical existence, is just a type);

since we have agreed on Template == Model == Type and you said (not template...just a type :))

With resources, I am also not quite sure what is the best option but going this way we can say that the bricks, land, soil etc are also underlying resources. My point is there should be some kind of Context always if you want to do something specific, i.e. renting. So for example if we try to find to pickup resource to transfer but the room is not for sale then it ain't gonna be (i like how this sounds) a Resource isn't it?

@pmackay I believe @fosterlynn mean as @type as an actual Type or http://www.w3.org/1999/02/22-rdf-syntax-ns#type, however to reference the Type/Template we can use "vf:template" the same way as we can use "vf:category" . I think we should not use the word instance as well especially since there can be a Resource without a Template :)

djodjoni commented 7 years ago

Above interpretation of Model as 'the design, specification', doesn't fit suggested by @bhaugen 'ResourceType' - purely abstract thing, disjoint with Resource.

@elf-pavlik I might have missed it but where is it proposed to disjoint those ? Infact this is what you want to do, no? Not having actual classes for Templates ?

bhaugen commented 7 years ago

@elf-pavlik

If we take for example some open source hardware - https://wikihouse.cc/library/types/Microhouse it comes as output of long chain of R&D processes. NRP seems to use specific 'cite' action verb in each transformation process to 'attribute' knowledge resource used in the process. I think that a particular house made based on wikihouse:Microhouse design could simply reference it as model and this way 'attribute' that design/blueprint (Knowledge Resource).

  1. I think this train of thought is a consequence of taking the original idea of REA Type, as typification, a Type Object, and then substituting gr:Model, an identifier of a good made for sale, and then substituting the word Template, and pretty soon, it becomes a different concept in your mind. A design resource is a Resource, not a Resource Type in the REA sense.

  2. "Seems to use" suggests something abnormal about "cite". Citation is the common scientific term for crediting resources one used. What else would you use? Or, not credit such resources at all?

fosterlynn commented 7 years ago

Since we discuss Template/Model/Type, I think we may also want to address issue that sometimes one may want to consider particular 'Model' itself also as Resource (a Knowledge Resource).

The way they handled this at Sensorica (NRP) is that the recipe in the database is not a resource, but there is also a design document that includes many more details of the recipe, history of the R&D, etc. That document is their knowledge resource.

Interestingly, the knowledge resource would need to be more than the ResourceTemplate, it would need to include all the recipe parts, EventTemplate, ProcessTemplate.

I understand what you are saying, but don't think the ResourceTemplate is enough to be the knowledge Resource that is the design of a material resource.

On the other hand, I don't know the best way to handle this when people actually do get everything needed for the design document into the recipe entities. Or maybe we just consider the recipe what is needed for automating planning, and not a complete design?

fosterlynn commented 7 years ago

since we have agreed on Template == Model == Type and you said (not template...just a type :))

Sorry @djodjoni this wasn't very clearly stated. I just meant Mariana's room is not a template, it is an actual resource. Because template is just a type.

fosterlynn commented 7 years ago

With resources, I am also not quite sure what is the best option but going this way we can say that the bricks, land, soil etc are also underlying resources.

Yes those are resources, but not underlying resources, more resources that were input to creating the room? Underlying resources support different rights (which are also resources) to a whole underlying resource. We also have defined vf:contains for when one resource is made up of parts that also need to be identified as resources, for example because of different ownership or individual serialized identification.

My point is there should be some kind of Context always if you want to do something specific, i.e. renting. So for example if we try to find to pickup resource to transfer but the room is not for sale then it ain't gonna be (i like how this sounds) a Resource isn't it?

Yes, I think there will always be a context of some sort. So not every connected and historical resource will show up if you are trying to rent some rooms. That could happen a bunch of different ways. So I'd say if you are looking for rooms for sale, Mariana's room wouldn't show up because it is not offered for sale anywhere.

cillian commented 7 years ago

I'm not sure and ignoring the discussion on categories but Supply might be another useful word, as in a supply, stock, store of a resource.

For goods...

A Resource "Farmer Jo Carrots" has many Supplies at different locations:

For services...

A Resource "Marianna's Room" has many Supplies at different times:

Guest A is using a Supply of the "Marianna's Room" Resource from 3rd-10th March. Guest B is using a Supply of the "Marianna's Room" Resource from 16th-21st April.

fosterlynn commented 7 years ago

Thanks and welcome @cillian !