Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agent subclasses #51

Closed
ahdinosaur opened this issue Oct 19, 2015 · 15 comments
Closed

Agent subclasses #51

ahdinosaur opened this issue Oct 19, 2015 · 15 comments

Comments

@ahdinosaur
Copy link
Member

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


previous conversation:

#50 (comment)

@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.

#50 (comment)

@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
Copy link
Member Author

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
Copy link
Contributor

Loomio and Hylo both have Network as separate from Group.

@ahdinosaur Where do they put Network in the hierarchy?

@fosterlynn
Copy link
Contributor

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.

@fosterlynn
Copy link
Contributor

A review of other vocabularies:

  • vcard: Kind is the superclass, with Group, Organization, and Individual as direct subclasses.
  • foaf: Agent is the superclass, Group, Organization, and Person as direct subclasses.
  • org: uses foaf:Agent, foaf:Group, foaf:Person, and their own org:Organization as direct subclass of Agent. They also have FormalOrganization subclass of Organization, OrganizationalCollaboration subclass of Organization. (The latter is an collaboration of only organizations.)
  • as: Actor is the superclass, Group, Organization, and Person as direct subclasses.
  • schema: Person, Organization, no superclass. (Well, actually Thing is the superclass. 👅 )
  • essglobal: SSEInitiative (An organization, practice, network, or other initiative that is recognized as belonging within the social solidarity economy) "is part of" Network (A network of individuals and/or organizations that participate in the SSE). Network is subclass of org:OrganizationalCollaboration.
  • gr: BusinessEntiry

@fosterlynn
Copy link
Contributor

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:

  • foaf:Agent - Their definition: The Agent class is the class of agents; things that do stuff.
  • foaf:Person - Their definition: The Person class represents people. Something is a Person if it is a person. We don't nitpic about whether they're alive, dead, real, or imaginary.

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
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

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

@fosterlynn
Copy link
Contributor

@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
Copy link
Member Author

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: #15 (comment).

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

@elf-pavlik
Copy link
Member

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

  • Individual (a single person)
  • Collective (two or more people)

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
Copy link
Contributor

@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: #20 (comment)) 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
Copy link
Member Author

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 holodex/enspiral-data#21 (comment).

@almereyda
Copy link
Member

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants