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

Remove equivalence to a union class from Artifact definition #110

Closed
rjyounes opened this issue Sep 20, 2019 · 7 comments · Fixed by #356
Closed

Remove equivalence to a union class from Artifact definition #110

rjyounes opened this issue Sep 20, 2019 · 7 comments · Fixed by #356
Assignees
Labels
impact: minor New, backward-compatible functionality (does not change inferences; e.g., adding a term) status: implementation specified Implementation has been specified. A developer should be assigned.

Comments

@rjyounes
Copy link
Collaborator

rjyounes commented Sep 20, 2019

When a class is defined as the union of a set of other classes, it is not possible to define additional subclasses. Is this by intention? It makes extension difficult.

For example:

	<owl:Class rdf:about="&gist;Artifact">
		<rdfs:label rdf:datatype="&xs;string">Artifact</rdfs:label>
		<rdfs:comment rdf:datatype="&xs;string">An intentional person made thing, could be physical or content</rdfs:comment>
		<owl:intersectionOf rdf:parseType="Collection">
			<owl:Class>
				<owl:unionOf rdf:parseType="Collection">
					<rdf:Description rdf:about="&gist;Content">
					</rdf:Description>
					<rdf:Description rdf:about="&gist;IntellectualProperty">
					</rdf:Description>
					<rdf:Description rdf:about="&gist;Equipment">
					</rdf:Description>
					<rdf:Description rdf:about="&gist;Building">
					</rdf:Description>
					<rdf:Description rdf:about="&gist;PhysicalSubstance">
					</rdf:Description>
				</owl:unionOf>
			</owl:Class>
			<owl:Restriction>
				<owl:onProperty rdf:resource="&gist;goal"/>
				<owl:someValuesFrom rdf:resource="&gist;Function"/>
			</owl:Restriction>
		</owl:intersectionOf>
	</owl:Class>

Because this is a closed list, an ontology importing gist cannot define another direct subclass of Artifact.

In fact, we see already this problem within gist itself. System is a subclass of Artifact, but it is not asserted to subclass any of the unioned classes. Do we really want to say that System is a direct subclass of one of these, but we don't know which? Seems odd. And none of the unioned classes seem like appropriate superclasses of System.

@uscholdm
Copy link
Contributor

uscholdm commented Sep 20, 2019 via email

@rjyounes rjyounes changed the title gist union constrains prevent further subclassing gist union constraints prevent further subclassing Sep 21, 2019
@rjyounes
Copy link
Collaborator Author

I should have been more explicit: you cannot do this without creating bad inferences unless the new subclass is properly contained in the union; that is, if I want to define a new top-level subclass of Artifact that is disjoint from the others.

Because the ontology is publicly available, it doesn't help to say that we'll change the definition later if we find another subclass. A user may want to add a subclass and does not have the freedom to modify gist itself.

@uscholdm
Copy link
Contributor

uscholdm commented Sep 21, 2019 via email

@rjyounes rjyounes changed the title gist union constraints prevent further subclassing gist union constraints prevent further direct subclassing Dec 7, 2019
@rjyounes rjyounes changed the title gist union constraints prevent further direct subclassing gist union constrains prevent further direct subclassing Jun 25, 2020
@rjyounes rjyounes changed the title gist union constrains prevent further direct subclassing Remove equivalence to a union class from Artifact definition Jun 25, 2020
@rjyounes rjyounes changed the title Remove equivalence to a union class from Artifact definition Remove equivalence to a union class from Artifact definition and possibly revise definition in general Jun 25, 2020
@rjyounes rjyounes self-assigned this Jun 25, 2020
@rjyounes
Copy link
Collaborator Author

Scott suggests using subclassing.

PhysicalSubstance is not necessarily person-made - we definitely want to remove this.

It's not a natural grouping.

Is Artifact the right label?

What is the purpose of having Artifact as a class? What was the rationale for adding it? It's an abstraction, like SocialBeing, which was eliminated for that reason. I.e., you would never instantiate it instead of one of its subclasses.

Artifact is an example of a larger problem. There is a design style issue. We'd have to examine all other union classes and decide on a case-by-case. Or we could rule out this pattern of equivalentClass to a union altogether.

Scott will take this on and bring back a proposal for a definition of Artifact.

Make new issue for the general design question.

@rjyounes rjyounes changed the title Remove equivalence to a union class from Artifact definition and possibly revise definition in general Remove equivalence to a union class from Artifact definition and possibly revise entire definition Jun 25, 2020
@rjyounes rjyounes removed their assignment Jun 25, 2020
@rjyounes
Copy link
Collaborator Author

I've just noted the following from my original description of the problem:

"'In fact, we see already this problem within gist itself. System is a subclass of Artifact, but it is not asserted to subclass any of the unioned classes. Do we really want to say that System is a direct subclass of one of these, but we don't know which? Seems odd. And none of the unioned classes seem like appropriate superclasses of System."

The definition of System is:

	<owl:Class rdf:about="&gist;System">
		<rdfs:label rdf:datatype="&xsd;string">System</rdfs:label>
		<rdfs:comment rdf:datatype="&xsd;string">A system is an artifact with component parts where the parts contribute to the goal of the system</rdfs:comment>
		<owl:equivalentClass>
			<owl:Class>
				<owl:intersectionOf rdf:parseType="Collection">
					<rdf:Description rdf:about="&gist;Artifact">
					</rdf:Description>
					<owl:Restriction>
						<owl:onProperty rdf:resource="&gist;hasDirectPart"/>
						<owl:someValuesFrom rdf:resource="&gist;Component"/>
					</owl:Restriction>
				</owl:intersectionOf>
			</owl:Class>
		</owl:equivalentClass>
	</owl:Class>

We're saying System is an Artifact but we don't know which particular subtype it belongs to. This is poor design, IMO.

@rjyounes rjyounes assigned rjyounes and unassigned scotthenninger Aug 27, 2020
@rjyounes rjyounes added the status: implementation specified Implementation has been specified. A developer should be assigned. label Aug 27, 2020
@rjyounes
Copy link
Collaborator Author

Limit scope to removing union.

@rjyounes rjyounes removed the status: under review In triage label Aug 27, 2020
@rjyounes
Copy link
Collaborator Author

Remove intersection and union and replace with direct subclass assertions to each member of union.

@rjyounes rjyounes changed the title Remove equivalence to a union class from Artifact definition and possibly revise entire definition Remove equivalence to a union class from Artifact definition Aug 27, 2020
@rjyounes rjyounes added the impact: minor New, backward-compatible functionality (does not change inferences; e.g., adding a term) label Aug 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
impact: minor New, backward-compatible functionality (does not change inferences; e.g., adding a term) status: implementation specified Implementation has been specified. A developer should be assigned.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants