valueflows / agent

agent has moved to https://lab.allmende.io/valueflows/agent
10 stars 4 forks source link

Agent subclasses #51

Closed ahdinosaur closed 4 years ago

ahdinosaur commented 8 years ago

as Value Flows, what subclasses of Agent do we want to export?


previous conversation:

https://github.com/valueflows/agent/pull/50#issuecomment-149063934

@ahdinosaur says: we only subclass Agent into Person and Group, no Organization. i actually prefer that we did it this way, even though it wasn't a conscious decision that i'm aware of.

https://github.com/valueflows/agent/pull/50#issuecomment-149065471

@fosterlynn says:

Oh thanks missed that about Organization. Or was it because we didn't have the example yet? But we do have Organization all over the place in Sensorica and DHEN networks. And I'm still thinking about Network (essGlobal has that, although it is defined possibly too narrowly for us), as well as the stuff Joshua has been working on.

It might also depend on what existing vocab we decide to use. I would prefer to not re-invent that wheel, what do you all think?

But I can live with almost any of this, we will just need to subclass for everything else that people use. Maybe I should start a separate issue about this question....

ahdinosaur commented 8 years ago

the reason i prefer we only export Person and Group is that i perceive those (based on Holodex implementation) as having fundamental differences in functionality, whereas Organization and Network are more minor adjustments to Group. however, maybe this only means i would prefer Organization and Network were subclasses of Group instead of Agent, as Loomio and Hylo both have Network as separate from Group.

fosterlynn commented 8 years ago

Loomio and Hylo both have Network as separate from Group.

@ahdinosaur Where do they put Network in the hierarchy?

fosterlynn commented 8 years ago

the reason i prefer we only export Person and Group is that i perceive those (based on Holodex implementation) as having fundamental differences in functionality, whereas Organization and Network are more minor adjustments to Group.

Yes you are right on the behavior side, that fits with NRP too.

ahdinosaur commented 8 years ago

Where do they put Network in the hierarchy?

in Loomio: Network > Group > Sub-Group > User

references:

in Hylo: Network > Community > User (where User also has many Organization)

references:

fosterlynn commented 8 years ago

A review of other vocabularies:

fosterlynn commented 8 years ago

I think I would like to keep Organization in our vocab on the same level as Group, based on either using or syncing with other vocabularies. If we don't include it explicitly, we will need to subclass Group to create Organization in the networks we work with.

Re. including Network, I don't feel strongly. We don't need it to match other vocabs, on the other hand we are basically talking about networks, so it would be nice to standardize on the term. The definition in essglobal I think is too narrow, so I think we would need to create vf:Network. Probably all the people we will ever work with in NRP will use Network. So I would like to do it, but if others don't want to, I'm OK with that too. @ahdinosaur if we include Network, say as subclass of Group, or directly under Agent, do you think that would work for loomio and hylo? (Given their scopes, they are treating this a bit differently.)

I would like to suggest we use:

The definitions are a bit hokey, but it seems to me that foaf is the most commonly used, and kind of has seniority. And in fact the only standard vocab that uses Agent, I think. Although I would want to dig a bit more into their actual machine readable definitions.

For Organization, either foaf:Organization or org:Organization seems OK to me, and I will dig more into these if we do decide to include Organization.

(OK, this is as far as I can take it today, more tomorrow......)

fosterlynn commented 8 years ago

Here is detailed info from foaf:

Agent:

<rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Agent" vs:term_status="stable" 
  rdfs:label="Agent"
  rdfs:comment="An agent (eg. person, group, software or physical artifact).">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<owl:equivalentClass rdf:resource="http://purl.org/dc/terms/Agent"/>
</rdfs:Class>

Person:

<rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Person" 
  rdfs:label="Person" rdfs:comment="A person." vs:term_status="stable">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<owl:equivalentClass rdf:resource="http://schema.org/Person"/>
<owl:equivalentClass rdf:resource="http://www.w3.org/2000/10/swap/pim/contact#Person"/>
<rdfs:subClassOf><owl:Class rdf:about="http://xmlns.com/foaf/0.1/Agent"/></rdfs:subClassOf>
<rdfs:subClassOf><owl:Class rdf:about="http://www.w3.org/2003/01/geo/wgs84_pos#SpatialThing" rdfs:label="Spatial Thing"/></rdfs:subClassOf>
<!-- aside: 
    are spatial things always spatially located? 
    Person includes imaginary people... discuss... 
-->
<rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>
<owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Organization"/>
<owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Project"/>
</rdfs:Class>

Organization:

<rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Organization" rdfs:label="Organization"
   rdfs:comment="An organization." vs:term_status="stable">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
<rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>
<owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
<owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
</rdfs:Class>

Group:

<rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Group" vs:term_status="stable"
   rdfs:label="Group"
   rdfs:comment="A class of Agents.">
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
<rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
</rdfs:Class>
fosterlynn commented 8 years ago

Here is detailed info from org. Having trouble accessing the actual machine readable context, but here is info:

http://www.w3.org/TR/vocab-org/#org:Organization

http://www.w3.org/TR/vocab-org/#org:FormalOrganization

http://www.w3.org/TR/vocab-org/#org:OrganizationalCollaboration

fosterlynn commented 8 years ago

So, I think this is enough for us to consider the issue. I put it on the agenda for the meeting....

fosterlynn commented 8 years ago

@ahdinosaur:

i still don't understand the difference between a group and an organization.

me:

Well, would you consider Alibaba or your local gas station to be a group? It has to do with the formality and tightness I think. In practice in our networks, organization is mostly used for agents outside the network, like with relationship type supplier.

@ahdinosaur:

i still feel Organization is a subclass of Group, since the primary behavior of an Organization (having member or parent / child relationships) which makes it different from say Person is also present in Group.

very good point, although I might think that Group should be a subclass of Organization.... but in either case, it seems like a question of how much we want to use what has already been defined....

ahdinosaur commented 8 years ago

but in either case, it seems like a question of how much we want to use what has already been defined....

my thoughts: it's one thing to be defined, it's another to be used in real systems. so i'd rather we define our own agent subclasses to focus on what we need for our real systems and then reference the existing definitions. see also my previous comment on this: https://github.com/valueflows/agent/issues/15#issuecomment-146047421.

btw, thanks @fosterlynn for collecting the relevant previous vocabs, very helpful.

elf-pavlik commented 8 years ago

During last call we seemed to agree that the minimum distinction that we see needed relates to:

To have formal definition of it, I also see need for super generic property which has semantic. "This Collective exists thanks to participation of this individual (among others)", to avoid bike shedding words I would even stay open to name it vf:property/d2ea2490-7d8b-4f0b-bb0a-3a0963e539d6 Because name itself doesn't matter, just the semantics of which individuals make a particular collective agent a distinct from any individual agent.

To put it differently, vf:Group implies a set of individuals vf:Person, how to state that this set includes particular individuals?

fosterlynn commented 8 years ago

@elf-pavlik thanks for moving this back to the right issue! :)

Yes that is my understanding from the last meeting too. We said Person and Group for now, I think, but to correspond to the meaning you pointed out.

I also understood this to be in the spirit of your workflow suggestion to not think we need to define everything now, but to stick to what exists in our real life situations, and see what develops. So probably that was my fault for bringing up Organization, but our other discussion did clarify some things for me. (starting here: https://github.com/valueflows/agent/issues/20#issuecomment-150203482) For now, I'll continue to make Organization a subclass of Group, and we can continue to gather examples.

But I do see more clearly now a bunch of problems with this which we will eventually need to work out. Also my fairly strong preference in the end is to lean towards other vocabularies for common concepts that everyone uses, if they can work for us in a reasonable way.

But in the meantime, onward....

ahdinosaur commented 8 years ago

To put it differently, vf:Group implies a set of individuals vf:Person, how to state that this set includes particular individuals?

super keen on what you're saying, but minor nitpick is that a group can also be made up of many groups, not just many people. this is the key to being fractal. see my Enspiral example to see this in action (a Network is a set of Communities, a Community is a set of Pods, a Pod is a set of Persons).

i agree that this property is probably the first for us to "standardize", but in the meantime i enjoy our strategy to define our own local types for this. for bikeshedding name ideas, see https://github.com/holodex/enspiral-data/pull/21#issuecomment-119745249.

almereyda commented 4 years ago

We have moved the ValueFlows organization from GitHub to https://lab.allmende.io/valueflows.

This issue has been closed here, and all further discussion on this issue can be done at

https://lab.allmende.io/valueflows/agent/-/issues/51.

If you have not done so, you are very welcome to register at https://lab.allmende.io and join the ValueFlows organization there.