Closed paulakeen closed 2 years ago
refined proposal:
Consider specialising Role from the W3C org:Role class:
I have to study the details of the proposal yet a first point that strikes me is that in contrast with ISA Core Voc v 1.00 you put "an identifier" in the Agent class, whereas the v 1 puts it independent both of the person (natural person) and the legal entity classes. The latter choice can be aligned with different situations. For instance in Belgium, identifiers for person are different from those of legal entities (is VAT nr, which also exist for public organisations); in other countries a TIN may be an identifier that is common for both categories.
A second concern is the distinction that EIRA Organisational View makes between the provider of public services (public organisation) and the "Public service delivery agent". This situation is common, the so-called public private partnerships in the delivery of public services. In the current core vocabularies such situation isn't clearly addressed. A possible topic for the conflation? Or is topic already addressed somehow?
A more coherent and consistent view upon the interrelationship between the core vocabularies would be great indeed.
However, it might be best achieved by ensuring that whenever possible the vocabularies reuse classes and properties from each other or reuse the same classes and properties from external sources. Furthermore, a coherent overview might be possible by way of creating a profile rather than replicating classes such as org:organization in cagv:Organisation or rov:RegisteredOrganization in cagv:RegisteredOrganisation. It is however, somewhat difficult to evaluate the semantic similarity without access to the definitions of the proposed subclasses.
Generally, as advised in ISA2 RDF guides, when creating vocabularies, the process involves researching existing terms and their usage and maximising re-use of those terms. Where new elements can be seen as specialisations of existing elements, the recommendation is to create sub classes and sub properties as appropriate, however, if the semantics of an element in an existing vocabulary is the same and the implications presented in the existing vocabulary do not restrict the reuse of a given element, it is important to build on and not replicate identical elements. A certain level of confidence in vocabulary publishing organisation is necessary of course.
A person, a public organisation, a business and an IT system are all able to take the role of Agent. Specifically, person, organisation and IT system are semantically disjoint / mutually exclusive and carry several domain specific properties calling for designated core vocabularies. However, the metadata required for describing (registered) public organisations and businesses seem to overlap to a greater extent, so it would make sense to align the metadata and use the same properties across these classes.
Comment provided by: https://github.com/aidig https://github.com/pebran https://github.com/mayaborges
This relates to another proposal to SEMIC, OP an other organisations about the need of defining a Core Agent Vocabulary that clarifies/disambiguates these relations.
In this vocabulary, the design of a pattern for role is crucial and not trivial. In ePO, for example, we treat with one single organisation (normally a public administration) that play different roles depending of the particular "situation" in which the agent(s) is/are involved.
I agree with the input provided by @aidig, @pebran and @mayaborges.
Furthermore, I have some considerations with regards to the proposed model. This proposed "Agent" that could be a Person, Organization, etc., would be an Anti-Rigid type, because it is not necessarily an agent during the entirety of its lifespan. Agent also does not provide identity, as it is a type that can represent many different kinds of things. In OntoUML terms, Agent seems to be a RoleMixin.
The example of a RoleMixin on that page is even an Agent class:
Since RoleMixins do not provide identity and can be of transient nature, I'm not sure they are well suited to be the center piece of an ontology or vocabulary. What if a person was not previously an Agent, then becomes an Agent, then ceases to be one once again? Does it make sense to set the id attribute on this class which does not provide identity? The anti-rigid non-sortal characteristic of Agent makes me think that perhaps it could be represented in RDF as blank nodes, which do not have identity? I'm not sure.
Besides, people who intend to represent public organizations are hardly going to find and use this vocabulary if it is named "Core Agent Vocabulary". So "Core Public Organization Vocabulary" seems to make more sense for findability as it is a lot more domain-specific. Perhaps if the model is kept centered around those concepts and Agent is included as a peripheral thing it would help people find and use it more.
On the other hand, I agree that in some contexts and use cases it might be easier to use just a single vocabulary instead of several. But other use cases might not require them all.
I'd like to comment on this statement from @augusto-herrmann :
What if a person was not previously an Agent, then becomes an Agent, then ceases to be one once again?
As far as I understand, there is no choice for a Person to be sometimes an Agent and sometimes not: if the class Person is defined as a subclass of the class Agent, a Person is always an Agent.
As far as I understand, there is no choice for a Person to be sometimes an Agent and sometimes not: if the class Person is defined as a subclass of the class Agent, a Person is always an Agent.
That is precisely my point. If there is any possible situation that a Person might not be an Agent, then a model that defines the class Person as a subclass of the class Agent is necessarily wrong. I'm not saying that is the case, but rather raising the question.
@augusto-herrmann I understand, but in this case there is no possible situation that a Person might not be an Agent because the class Person is defined as a subclass of Agent. Being a Person implies you are an Agent, always, by definition.
Yes, @makxdekkers, I understand that. It has always been clear that defining Person as a subclass of Agent makes it so that being a Person implies that you are an Agent.
It is possible to build any model within the constraints of the language it uses. However, not every model can pass as a representation of the real world. What I'm asking is if this model, defined as is, can be interpreted as representation of real world situations. If Agent is interpreted as a role, one could admit possible real world situations where a Person does not fulfill that role. Therefore any modeling that would define Person as a subclass of Agent would necessarily be wrong.
The modeling must represent the real world and not the other way around. The question is: is Agent a role? If not, why not?
@augusto-herrmann one important aspect is to keep in mind what the definition is of Agent in the context of Core Vocabularies and in the wider RDF world. It is not just what someone might think the meaning of 'agent' is. So in FOAF, the definition is "An agent (eg. person, group, software or physical artifact)"; not entirely satisfactory as a definition as it is quite circular but gives some examples. The DCMI definition is a bit clearer: "a resource that acts or has the power to act". So, in my mind, Agent is an entity that is able to act (which is a innate characteristic), and not just an entity that is acting at any particular point in time (which would make it a role).
Are you sure a Person is always able to act? What about a deceased Person? I still think of Agent as a role, that could be represented either by a relationship property or a node (so that the relationship itself can have properties), like this:
A role is specifically forbidden to be a supertype of a rigid type, as explained here:
C3: A «Role» cannot be a supertype of a rigid type («Kind», «Subkind», «Collective», «Quantity», «Relator», «Category»).
Which is exactly what happens when you define Agent as a supertype of Person.
I should also mention that, because of the first constraint,
C1: A «Role» must always have exactly one identity provider («Kind», «Collective», «Quantity», «Relator», «Mode», «Quantity») as an ancestor (a direct or indirect super-type). To model our list of roles presented above, we should given them identity providers:
a role cannot have two identity providers (i.e. Person and Organisation). If we want an Agent to be both, it could only work as a «RoleMixin», as I mentioned previously, and modeled below:
@augusto-herrmann As far as I am aware, the class Agent (as defined by FOAF, DCMI , PROV-O and Wikidata, but also elsewhere) was specifically created to be the superclass of things like persons, organizations, groups, bots, to be used as a generalization in places where you need to express that someone or something is/was responsible of something happening. This is its intention and this is how if is very widely used. In that sense, it appears to satisfy a need.
Whether or not a person or organisation is always able to act is not relevant -- the class Agent is explicitly defined to be the superclass of those other, more specific classes. In a way, FOAF could have called the class foaf:PersonOrOrganizationOrGroupOrBot
instead of foaf:Agent
and it would have served the same purpose -- at least the shorter label makes it easier to talk about it.
Whether or not a person or organisation is always able to act is not relevant -- the class Agent is explicitly defined to be the superclass of those other, more specific classes. In a way, FOAF could have called the class foaf:PersonOrOrganizationOrGroupOrBot instead of foaf:Agent and it would have served the same purpose -- at least the shorter label makes it easier to talk about it.
So you now say that the definition of foaf:Agent
is devoid of semantics, in what one would normally think of an Agent, as being able to act. That it's just an amalgamation of those aforementioned classes (which would probably make it a Category).
Considering that, this is precisely the reason not to reuse this specific class, and to use instead the RoleMixin pattern as I suggested above. We could subclass org:Organisation
and foaf:Person
, but define our own cagv:Agent
with no direct relation to foaf:Agent
. Specifically not being a subclass of it.
That way, cagv:Agent
could carry the semantics of being able to act, and not be an innate, present in every possible world, characteristic of persons (even dead) or organisations (even extinct) – and having a sound conceptual model at the same time.
@augusto-herrmann I did not say that foaf:Agent
is devoid of semantics. It is what it is, basically the union of a number of classes and it is being widely used in that sense.
Now if you are suggesting that we consider creating a class of our own that has different semantics, I would suggest not calling it Agent, but maybe something like Actor to avoid confusion.
However, I am not sure what the use case of this Actor class would be. It would be different from the use case that was brought up by @paulakeen as the subject of this issue, which was explicitly defined (in the diagram) as a subclass of foaf:Agent
.
@augusto-herrmann Same in CIDOC-CRM (ontology for CulturalHeritage): a Person is defined as an Actor (which is a concept a little bit smaller than an Agent). It is defined as a Thing as well (via BiologicalObject -> PhysicalObject -> PhysicalThing). Which corresponds to the FOAF and DCTERMS definitions: "A resource that acts or has the power to act." and "An agent (eg. person, group, software or physical artifact)." and "Things that do stuff". I agree with @makxdekkers that it is more a capability than a continuous state. And that it is more an abstract superclass for similar classes like Person, Organization, Software..., useful but not essential to the CPV, CPOV and CBV which each focus on their actual domain being Person and (Public) Organization. By the way: interesting thing this OntoUML, I will take a look into that.
@paulakeen I am not sure that it would be a good thing to conflate CPV, CPOV and CBV as Agent is a broader concept than Person or Organisation (Software, Robots etc are also Agents). Its not that Agent is the actual concern of aforementioned vocabularies. Just conflating CPOV and CBV would be a better idea though. It is something we tried with our semantic OSLO-standards. We combined W3Corg (=successor of CBV if I am correct) with CPOV and with REGORG for RegisteredOrganizations in one application profile. But I agree with @aidig that in many cases it is sufficient to reuse an existing concept without absorbing the entire vocabulary it originates from. Isn't that just the whole idea of the knowledge graph on the web where you jump from domain to domain according to your needs in stead of centralizing all knowledge in one model?
I agree with @makxdekkers that it is more a capability than a continuous state. And that it is more an abstract superclass for similar classes like Person, Organization, Software..., useful but not essential to the CPV, CPOV and CBV which each focus on their actual domain being Person and (Public) Organization. By the way: interesting thing this OntoUML, I will take a look into that.
foaf:Agent is a superclass for a lot of things, but with the added semantics of requiring those things to be able to act. Which conflicts with the (relatively smaller number of) situations where those things aren't able to act.
The modelling I suggested above makes it possible to have an Agent class that can be a Person or an Organisation, and at the same time making it also possible for the model to accept the possible situation that a Person (dead person) or an Organisation (an extinct organisation) is no longer able to act.
That said, I agree with @GeertThijs assessment that the Agent is not the core focus of CPV, CPOV and CBV. Merging them and naming the result CAGV would actually make that vocabulary less findable, when people actually have an use case that they want to describe persons and organisations. Added by editing: yes, it would still be possible to find it in tools like lov.linkeddata.es. Still, the user would still be left wondering whether or not they should use the vocabulary or look for something else if these concepts are not perceived to be the focus of the vocabulary.
As for OntoUML, it is very useful to detect and correct possible and common problems in ontology modelling. It's a tool for ontology engineers to test ontology development almost like software engineers test code. I encourage everyone involved in conceptual and ontology modelling to get to know it.
During the webinar of 02/12/2021 it was agreed to create just a consolidated diagram which has been published at: https://github.com/SEMICeu/Core-Person-Vocabulary/tree/master/releases/2.00
In many different projects for the EU Commission and MS we have gone through the experience of not knowing exactly what vocabularies and entities (classes and properties to reuse when the time comes to deal with natural persons, businesses, public authorities and roles (or not finding basic entities that should be in one or in another of these vocabularies, e.g. ContactPoint, Address).
One suggestion coming namely from inside the European Commission is that all these vocabularies could be merged into one single vocabulary named "Core Agent Vocabulary", abbreviated CAGV (not CAV, as this vocabulary does also exist in ISA2).
This Core Agent Vocabulary (CAGV) would reuse (namely extend) the generic FOAF, W3C, LCN, etc. ontologies.
The main benefit of the CAGV would consist in having "one single reference vocabulary" where everything related to possible agents and roles played by agents are there, in a coherent and consistent way, so no more doubts arouse about whether to use Organization, RegisteredOrganization or LegalEntity, for example.
We'd like to "throw" an initial proposal to start the discussion asap. Any reaction will be appreciated: