Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/ReleaseNotes.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ Release 11.1.0

### Minor Updates

- Added new property `hasFirstMember`. Issue [#549](https://github.com/semanticarts/gist/issues/549).

### Patch Updates

- Improved the clarity and accuracy of annotations on serveral terms, including definitions, examples, and scope notes:
Expand Down
27 changes: 27 additions & 0 deletions gistCore.ttl
Original file line number Diff line number Diff line change
Expand Up @@ -1712,6 +1712,20 @@ gist:OrderedCollection
owl:onProperty gist:hasMember ;
owl:allValuesFrom gist:OrderedMember ;
]
[
owl:unionOf (
[
a owl:Restriction ;
owl:onProperty gist:hasMember ;
owl:cardinality "0"^^xsd:nonNegativeInteger ;
]
[
a owl:Restriction ;
owl:onProperty gist:hasFirstMember ;
owl:someValuesFrom owl:Thing ;
]
) ;
]
) ;
] ;
skos:definition "A collection in which the members are sequentially ordered. All members of an OrderedCollection are OrderedMembers."^^xsd:string ;
Expand Down Expand Up @@ -3224,6 +3238,19 @@ gist:hasDirectSuperCategory
skos:scopeNote "Unlike its superproperty gist:hasSuperCategory, this property is not transitive. It is essentially the same as the non-transitive skos:broader, using gist:Category rather than skos:Concept."^^xsd:string ;
.

gist:hasFirstMember
a
owl:ObjectProperty ,
owl:InverseFunctionalProperty
;
rdfs:subPropertyOf gist:hasMember ;
rdfs:domain gist:OrderedCollection ;
rdfs:range gist:OrderedMember ;
skos:definition "Relates an ordered collection to its first member."^^xsd:string ;
skos:prefLabel "has first member"^^xsd:string ;
skos:scopeNote "Given the Open World Assumption, the absence of a predecessor does not entail that an ordered member is the first member of an ordered collection. This property is used to explicitly indicate the first member. Since ordered collections may not be strictly ordered, there can be more than one first member."^^xsd:string ;
.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks nearly perfect. We didn't mention this at the meeting, but it occurs to me you could also add a restriction on OrderedCollection to the effect that it is either empty or has a first member. (Note that due to OWA the first member doesn't have to be stated.)

A little nitpicky, but most commonly I see the OWA spelled "Open World Assumption" rather than the hyphenated lowercase version, though I know this is also used.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For OrderedCollection, maybe something like the following would work? If so, should I go ahead and include in this PR?

gist:OrderedCollection
	a owl:Class ;
	owl:equivalentClass [
		a owl:Class ;
		owl:intersectionOf (
			gist:Collection
			[
				a owl:Restriction ;
				owl:onProperty gist:hasMember ;
				owl:allValuesFrom gist:OrderedMember ;
			]
			[
				owl:unionOf (
					[
						owl:complementOf [
							a owl:Restriction ;
							owl:onProperty gist:hasMember ;
							owl:someValuesFrom gist:OrderedMember ;
						] ;
					]
					[
						a owl:Restriction ;
						owl:onProperty gist:hasFirstMember ;
						owl:someValuesFrom gist:OrderedMember ;
					]
				) ;
			]
		) ;
	] ;

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure I follow; it looks like it is literally saying the following:

skos:definition "A collection that only has ordered members and either has a first member that is an ordered member or has no members that are ordered members."^^xsd:string ; 

Is this your intention? A slightly simpler alternative to complement would be to use max cardinality of 0

gist:hasGiver
a owl:ObjectProperty ;
rdfs:subPropertyOf gist:hasParticipant ;
Expand Down