Agent: consider using ActivityStreams subclasses
Looked for an existing issue to continue, but couldn't find the right one, so starting a new one.... and using ValueFlows repo for simplicity.
We are doing some work to use VF in an ActivityPub (uses ActivityStreams vocab) implementation. We decided at one point to use just foaf:Person and org:Organization as subclasses of foaf:Agent. There was a technical issue with foaf:Group which I don't remember the details of, brought by @elf-pavlik . AS has Person, Group, Organization - although they are subclasses of as:Object. Seems like a good thing to sync up with, if there aren't any problems with it, since it was made a W3C recommendation earlier this year, and ActivityPub is getting some traction. In practice, we'll want to use the as:Group, as:Organization, as:Person as we do this particular integration.
Would switching to the AS classes for VF cause any technical or conceptual problems? For example, we need the foaf:Agent superclass still, and these would need to be subclasses of that in our model. Another example, AP considers these "actors", somewhat more around distributed communication, like they have an inbox and outbox. ActivityStreams has this definition. Repeating here:
Actor objects are specializations of the base Object type that represent entities capable of carrying out an Activity. The Activity Vocabulary provides the normative definition of five specific types of Actors: Application | Group | Organization | Person | Service.
This specification intentionally defines Actors in only the most generalized way, stopping short of defining semantically specific properties for each. All Actor objects are specializations of Object and inherit all of the core properties common to all Objects. External vocabularies can be used to express additional detail not covered by the Activity Vocabulary. VCard [ vcard-rdf] SHOULD be used to provide additional metadata for Person, Group, and Organization instances.
An example snippet:
{
"actor": {
"type": ["Person", "vcard:Individual"],
"id": "http://sally.example.org",
"name": "Sally Smith",
"vcard:given-name": "Sally",
"vcard:family-name": "Smith"
},
We think of our subclasses in a more agent-y way, in the real world. But they mix that in too.
Or is there a better way to think about integrating? Some definition of owl:equivalentClass or similar? And if so, how do we get Group in there?