@chronicle.app/schema 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/chronicle.ttl CHANGED
@@ -1,693 +1,874 @@
1
1
  # Chronicle's minimal extraction vocabulary. This is the canonical source.
2
+ #
3
+ # Terms are OWL classes, datatypes and properties. Each property has an
4
+ # rdfs:domain and an rdfs:range, a union when there are several. A property's
5
+ # record rules are SHACL shapes written after it, such as sh:maxCount 1 for a
6
+ # property that takes one value.
2
7
  @prefix : <https://schema.chronicle.app/> .
3
8
  @prefix owl: <http://www.w3.org/2002/07/owl#> .
4
9
  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
5
10
  @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
6
11
  @prefix schemaorg: <https://schema.org/> .
12
+ @prefix sh: <http://www.w3.org/ns/shacl#> .
13
+ @prefix skos: <http://www.w3.org/2004/02/skos/core#> .
14
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
7
15
 
8
16
  : a owl:Ontology;
9
- owl:versionInfo "0.2.0" .
17
+ owl:versionInfo "0.3.0" .
10
18
 
11
- :Base a rdfs:Class;
12
- rdfs:comment "The common base for entities and actions described by a source. Each node carries an identity, expressed as @key or @id, so it can be referenced across records." .
13
- :Entity a rdfs:Class;
19
+ # Annotations on properties, for tools rather than records.
20
+ :abstract a owl:AnnotationProperty .
21
+ :propagatesEncounter a owl:AnnotationProperty .
22
+
23
+ :Base a owl:Class;
24
+ rdfs:comment "Anything a source describes, either an :Entity or an :Action. Each one has an identity, so other records can refer to it.";
25
+ owl:disjointUnionOf ( :Entity :Action );
26
+ skos:broadMatch schemaorg:Thing .
27
+ :Entity a owl:Class;
14
28
  rdfs:subClassOf :Base;
15
- rdfs:comment "A thing described by a source, such as a person, place, document, or web page. An entity represents the thing itself; actions record what happened to or with it." .
16
- :Action a rdfs:Class;
29
+ rdfs:comment "A thing a source describes, such as a person, place, document, or web page. An entity is the thing itself. An :Action records what happened to it or with it." .
30
+ :Action a owl:Class;
17
31
  rdfs:subClassOf :Base;
18
- rdfs:comment "An occurrence recorded by a source, such as reading an article, sending a message, or visiting a place. Its :object identifies the entity the action was carried out on." .
19
- :Text a rdfs:Class;
20
- rdfs:subClassOf :DataType;
21
- rdfs:comment "A literal string, used for values such as names and source identifiers. Text is carried directly as a property value and has no node identity of its own." .
22
- :URL a rdfs:Class;
23
- rdfs:subClassOf :Text;
24
- rdfs:comment "A Uniform Resource Locator expressed as an absolute URL string, such as https://example.com/article. Used for properties that locate a resource." .
32
+ rdfs:comment "Something that happened, such as reading an article, sending a message, or visiting a place.";
33
+ skos:broadMatch schemaorg:Action .
34
+ :Text a rdfs:Datatype;
35
+ rdfs:comment "A string of characters, such as a name or an identifier. Text has no identity of its own.";
36
+ owl:equivalentClass xsd:string;
37
+ skos:broadMatch schemaorg:Text .
38
+ :URL a rdfs:Datatype;
39
+ rdfs:comment "An absolute URL, such as `https://example.com/article`.";
40
+ owl:equivalentClass [ a rdfs:Datatype; owl:unionOf ( xsd:anyURI
41
+ [ a rdfs:Datatype; owl:onDatatype xsd:string; owl:withRestrictions ( [ xsd:pattern "[A-Za-z][-A-Za-z0-9+.]*:.+" ] ) ] ) ];
42
+ skos:broadMatch schemaorg:URL .
25
43
 
26
- :sourceId a rdf:Property;
27
- rdfs:comment "The identifier assigned by the source to an entity or action, such as a record ID or message ID. Represented as text and scoped to the source's own namespace; it need not be globally unique.";
28
- owl:maxCardinality 1;
29
- :domainIncludes :Base;
30
- :rangeIncludes :Text .
31
- :name a rdf:Property;
32
- rdfs:comment "The human-readable name or title of an entity, such as a person's display name, a document title, or a place name.";
33
- owl:maxCardinality 1;
34
- :domainIncludes :Entity;
35
- :rangeIncludes :Text .
36
- :url a rdf:Property;
37
- rdfs:comment "A URL at which the entity can be found, such as a web page's address or a link to a source record.";
38
- owl:maxCardinality 1;
39
- :domainIncludes :Entity;
40
- :rangeIncludes :URL .
41
- :object a rdf:Property;
42
- rdfs:comment "The entity an action is carried out on, such as the article being read, the message being sent, or the place being visited. For movement, the :object identifies where the movement began.";
43
- owl:maxCardinality 1;
44
- :domainIncludes :Action;
45
- :rangeIncludes :Entity .
44
+ :sourceId a owl:DatatypeProperty;
45
+ rdfs:comment "The identifier the source gives an entity or action, such as a record ID or message ID. It is unique only within its :source.";
46
+ rdfs:domain :Base;
47
+ rdfs:range :Text;
48
+ skos:broadMatch schemaorg:identifier .
49
+ [] a sh:PropertyShape; sh:path :sourceId; sh:targetSubjectsOf :sourceId; sh:maxCount 1 .
50
+ :name a owl:DatatypeProperty;
51
+ rdfs:comment "The name or title of an entity, such as a person's display name, a document's title, or a place's name.";
52
+ rdfs:domain :Entity;
53
+ rdfs:range :Text;
54
+ skos:exactMatch schemaorg:name .
55
+ [] a sh:PropertyShape; sh:path :name; sh:targetSubjectsOf :name; sh:maxCount 1 .
56
+ :alternateName a owl:DatatypeProperty;
57
+ rdfs:comment "Another name the entity was shown with, such as the display name a message gave its sender or a recipient. An entity can have many.";
58
+ rdfs:domain :Entity;
59
+ rdfs:range :Text;
60
+ skos:exactMatch schemaorg:alternateName .
61
+ :url a owl:DatatypeProperty;
62
+ rdfs:comment "A URL at which the entity can be found, such as a web page's address or a link to the record in its source.";
63
+ rdfs:domain :Entity;
64
+ rdfs:range :URL;
65
+ skos:exactMatch schemaorg:url .
66
+ [] a sh:PropertyShape; sh:path :url; sh:targetSubjectsOf :url; sh:maxCount 1 .
67
+ :object a owl:ObjectProperty;
68
+ rdfs:comment "The entity an action was carried out on, such as the article read, the message sent, or the place visited. For a movement, such as a :TravelAction, the :object is where it began.";
69
+ rdfs:domain :Action;
70
+ rdfs:range :Entity;
71
+ skos:exactMatch schemaorg:object .
72
+ [] a sh:PropertyShape; sh:path :object; sh:targetSubjectsOf :object; sh:maxCount 1 .
46
73
 
47
- :DateTime a rdfs:Class;
48
- rdfs:subClassOf :DataType;
49
- rdfs:comment "An instant anchored in time, including a date and time of day. Represented as a JavaScript Date in extracted records; use only when the source provides enough information to identify an instant." .
50
- :Agent a rdfs:Class;
74
+ :DateTime a rdfs:Datatype;
75
+ rdfs:comment "A point in time, written in a subset of EDTF (ISO 8601-2). It takes one of four forms. An instant in UTC, with optional fractional seconds: `2024-03-02T14:05:00Z`, `2024-03-02T14:05:00.250Z`. A date at year, month, or day precision, with no time and no zone: `1987`, `1987-06`, `1987-06-12`. A date with unspecified digits written as `X`: the last one to four digits of the year, the month, or the day (`198X`, `19XX`, `1987-XX`, `1987-06-XX`, `XXXX-03-12`). Any of these dates followed by one qualifier: `?` uncertain, `~` approximate, `%` both (`1987?`, `1987-06~`, `198X%`). A date stands for its whole period: `1987` is some moment in 1987. Not allowed: an interval (`1987/1990`), an offset other than `Z` (`2024-03-02T09:05:00-05:00`), a time without a zone (`2024-03-02T14:05:00`), a qualifier on an instant, a day that does not exist (`1987-02-29`), a known day in an unspecified month (`1987-XX-12`), or no known digit at all (`XXXX`, `XXXX-XX`).";
76
+ owl:equivalentClass [ a rdfs:Datatype; owl:unionOf ( xsd:dateTime
77
+ [ a rdfs:Datatype; owl:onDatatype xsd:string; owl:withRestrictions ( [ xsd:pattern "[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}([.][0-9]+)?Z|[0-9X]{4}(-[0-9X]{2}(-[0-9X]{2})?)?[?~%]?" ] ) ] ) ];
78
+ skos:closeMatch schemaorg:DateTime .
79
+ :Agent a owl:Class;
51
80
  rdfs:subClassOf :Entity;
52
- rdfs:comment "An entity capable of performing an action, such as a person, organization, or software agent. An action's :agent identifies its doer when known." .
53
- :Task a rdfs:Class;
81
+ rdfs:comment "An entity that can act, such as a person, an organization, or a piece of software." .
82
+ :Task a owl:Class;
54
83
  rdfs:subClassOf :Entity;
55
- rdfs:comment "A unit of work to be done, such as a to-do item. The task carries its :name and :description; actions record its planning, updates, completion, or cancellation." .
56
- :Collection a rdfs:Class;
84
+ rdfs:comment "A unit of work to be done, such as a to-do item." .
85
+ :Collection a owl:Class;
57
86
  rdfs:subClassOf :CreativeWork;
58
- rdfs:comment "A grouping of entities declared by a source, such as a list, an area of responsibility, or a section within a project. Members link to the collection through :isPartOf." .
59
- :Project a rdfs:Class;
87
+ rdfs:comment "A group of entities that a source declares, such as a list, an area of responsibility, or a section of a project. Its members are :isPartOf it.";
88
+ skos:broadMatch schemaorg:Collection .
89
+ :Project a owl:Class;
60
90
  rdfs:subClassOf :Collection;
61
- rdfs:comment "An organized undertaking that groups related work toward an outcome. Tasks and other constituent entities link to the project through :isPartOf." .
62
- :Tag a rdfs:Class;
91
+ rdfs:comment "An undertaking that groups related work toward an outcome. Its tasks and other parts are :isPartOf it." .
92
+ :Tag a owl:Class;
63
93
  rdfs:subClassOf :Entity;
64
- rdfs:comment "A label used by a source to categorize or describe entities. Represented as an entity with its own identity so the same tag can be referenced by multiple records." .
65
- :PlanAction a rdfs:Class;
94
+ rdfs:comment "A label a source uses to categorize entities. Unlike the text values of :tags, a :Tag is an entity that many records can refer to." .
95
+ :PlanAction a owl:Class;
66
96
  rdfs:subClassOf :Action;
67
- rdfs:comment "The act of establishing an intention to do something, such as creating a to-do item. The :object identifies the planned work; the :timestamp records when the plan was made." .
68
- :UpdateAction a rdfs:Class;
97
+ rdfs:comment "The agent decided to do something, such as by creating a to-do item. The :object is the planned work.";
98
+ skos:broadMatch schemaorg:PlanAction .
99
+ :UpdateAction a owl:Class;
69
100
  rdfs:subClassOf :Action;
70
- rdfs:comment "A change to an existing entity, such as editing a task's title or notes. The :object identifies the entity that was changed." .
71
- :CompleteAction a rdfs:Class;
101
+ rdfs:comment "The agent changed an existing entity, such as by editing a task's title or notes. The :object is the entity that changed.";
102
+ skos:broadMatch schemaorg:UpdateAction .
103
+ :CompleteAction a owl:Class;
72
104
  rdfs:subClassOf :Action;
73
- rdfs:comment "The completion of an activity or piece of work, such as finishing a task or a book. The :object identifies what was completed." .
74
- :CancelAction a rdfs:Class;
105
+ rdfs:comment "The agent finished an activity or piece of work, such as a task or a book. The :object is what was finished." .
106
+ :CancelAction a owl:Class;
75
107
  rdfs:subClassOf :Action;
76
- rdfs:comment "The withdrawal of a plan or intended activity, such as cancelling a task. The :object identifies what was cancelled." .
77
- :DeleteAction a rdfs:Class;
108
+ rdfs:comment "The agent withdrew a plan or intended activity, such as a task. The :object is what was withdrawn.";
109
+ skos:broadMatch schemaorg:CancelAction .
110
+ :DeleteAction a owl:Class;
78
111
  rdfs:subClassOf :Action;
79
- rdfs:comment "The removal of an entity from its source, including moving an item to the trash. The :object identifies what was removed." .
80
- :source a rdf:Property;
81
- rdfs:comment "The source system that describes the entity or action, such as things-todo. Provides the source namespace in which identifiers such as :sourceId are interpreted.";
82
- owl:maxCardinality 1;
83
- :domainIncludes :Base;
84
- :rangeIncludes :Text .
85
- :timestamp a rdf:Property;
86
- rdfs:comment "The instant when the action occurred, as reported by the source. Records occurrence time, not the time Chronicle extracted the record.";
87
- owl:maxCardinality 1;
88
- :domainIncludes :Action;
89
- :rangeIncludes :Date,
90
- :DateTime .
91
- :agent a rdf:Property;
92
- rdfs:comment "The doer of the action, when identified by the source. Omit when no doer is known; an occurrence can be recorded without an agent.";
93
- owl:maxCardinality 1;
94
- :domainIncludes :Action;
95
- :rangeIncludes :Agent .
112
+ rdfs:comment "The agent removed an entity from its source, such as by moving an item to the trash. The :object is what was removed.";
113
+ skos:closeMatch schemaorg:DeleteAction .
114
+ :source a owl:DatatypeProperty;
115
+ rdfs:comment "The source that describes the entity or action, such as `things-todo`. Identifiers such as :sourceId are unique within it.";
116
+ rdfs:domain :Base;
117
+ rdfs:range :Text .
118
+ [] a sh:PropertyShape; sh:path :source; sh:targetSubjectsOf :source; sh:maxCount 1 .
119
+ :timestamp a owl:DatatypeProperty;
120
+ rdfs:comment "When the action occurred.";
121
+ rdfs:domain :Action;
122
+ rdfs:range :DateTime;
123
+ skos:closeMatch schemaorg:timestamp .
124
+ [] a sh:PropertyShape; sh:path :timestamp; sh:targetSubjectsOf :timestamp; sh:maxCount 1 .
125
+ :agent a owl:ObjectProperty;
126
+ rdfs:comment "Who performed the action. An action whose performer is unknown has no :agent.";
127
+ rdfs:domain :Action;
128
+ rdfs:range :Agent;
129
+ skos:exactMatch schemaorg:agent .
130
+ [] a sh:PropertyShape; sh:path :agent; sh:targetSubjectsOf :agent; sh:maxCount 1 .
131
+ # It takes an entity or the text `@me`, so OWL cannot call it an object or a
132
+ # datatype property.
96
133
  :sameAs a rdf:Property;
97
- rdfs:comment "Another reference to the same entity, expressed as an entity node or a textual identity reference such as @me. Asserts shared identity, rather than similarity or association.";
98
- :domainIncludes :Entity;
99
- :rangeIncludes :Entity, :Text .
100
- :description a rdf:Property;
101
- rdfs:comment "Descriptive text supplied by the source about an entity, such as a task's notes or a project's summary.";
102
- owl:maxCardinality 1;
103
- :domainIncludes :Entity;
104
- :rangeIncludes :Text .
105
- :handle a rdf:Property;
106
- rdfs:comment "A contextual identifier for an entity within its namespace, such as a username, channel slug, or tag label. Its meaning depends on the source or context in which it is used.";
107
- owl:maxCardinality 1;
108
- :domainIncludes :Entity;
109
- :rangeIncludes :Text .
110
- :isPartOf a rdf:Property;
111
- rdfs:comment "An entity that this entity forms part of, such as a task's project or collection, or the page containing an excerpt. Each value identifies a containing whole.";
112
- :domainIncludes :Entity;
113
- :rangeIncludes :Entity .
114
- :about a rdf:Property;
115
- rdfs:comment "An entity representing the subject matter of this entity, such as a topic or tag describing what a task concerns.";
116
- :domainIncludes :Entity;
117
- :rangeIncludes :Entity .
134
+ rdfs:comment "Another reference to the same entity, either an entity or a text reference such as `@me`. It states that both refer to one thing, not that they are similar or related.";
135
+ rdfs:domain :Entity;
136
+ rdfs:range [ owl:unionOf ( :Entity :Text ) ];
137
+ skos:closeMatch schemaorg:sameAs .
138
+ :description a owl:DatatypeProperty;
139
+ rdfs:comment "Text that describes an entity, such as a task's notes or a project's summary. It is plain text or Markdown. Not allowed: HTML (`<p>Buy milk</p>`).";
140
+ rdfs:domain :Entity;
141
+ rdfs:range :Text;
142
+ skos:exactMatch schemaorg:description .
143
+ [] a sh:PropertyShape; sh:path :description; sh:targetSubjectsOf :description; sh:maxCount 1 .
144
+ :handle a owl:DatatypeProperty;
145
+ rdfs:comment "An identifier for an entity within a namespace, such as a username, a channel slug, or a tag label. What it identifies depends on that namespace.";
146
+ rdfs:domain :Entity;
147
+ rdfs:range :Text .
148
+ [] a sh:PropertyShape; sh:path :handle; sh:targetSubjectsOf :handle; sh:maxCount 1 .
149
+ :isPartOf a owl:ObjectProperty;
150
+ rdfs:comment "A whole that the entity is part of, such as a task's project or the page an excerpt comes from.";
151
+ rdfs:domain :Entity;
152
+ rdfs:range :Entity;
153
+ skos:exactMatch schemaorg:isPartOf .
154
+ :about a owl:ObjectProperty;
155
+ rdfs:comment "What the entity is about, such as a topic or a tag.";
156
+ rdfs:domain :Entity;
157
+ rdfs:range :Entity;
158
+ skos:exactMatch schemaorg:about .
118
159
 
119
- :Command a rdfs:Class;
160
+ :Command a owl:Class;
120
161
  rdfs:subClassOf :Entity;
121
- rdfs:comment "An instruction issued to a computer, such as a shell command. Its :body carries the command text; an :ExecuteAction records an execution of it." .
122
- :Person a rdfs:Class;
162
+ rdfs:comment "An instruction given to a computer, such as a shell command. Its :body is the command's text. An :ExecuteAction records running it." .
163
+ :Person a owl:Class;
123
164
  rdfs:subClassOf :Agent;
124
- rdfs:comment "A human individual represented by a source, such as a message participant or computer user." .
125
- :Realm a rdfs:Class;
165
+ rdfs:comment "A human being, such as a participant in a conversation or the user of a computer.";
166
+ skos:broadMatch schemaorg:Person .
167
+ :Realm a owl:Class;
126
168
  rdfs:subClassOf :Entity;
127
- rdfs:comment "A bounded account or computing domain, such as a workspace, computer system, or email domain. Agents belong to it through :memberOf; entities located within it use :inRealm." .
128
- :ExecuteAction a rdfs:Class;
169
+ rdfs:comment "A bounded account or computing domain, such as a workspace, a computer system, or an email domain. Agents are :memberOf it. Entities within it are :inRealm it." .
170
+ :ExecuteAction a owl:Class;
129
171
  rdfs:subClassOf :Action;
130
- rdfs:comment "The execution of a command or software resource. The :object identifies what was executed; :agent identifies the doer when known." .
131
- :body a rdf:Property;
132
- rdfs:comment "The textual content of an entity, such as a shell command or message, as supplied by the source.";
133
- owl:maxCardinality 1;
134
- :domainIncludes :Entity;
135
- :rangeIncludes :Text .
136
- :memberOf a rdf:Property;
137
- rdfs:comment "An entity the agent belongs to, such as a realm representing the computer system in which a user account exists.";
138
- :domainIncludes :Agent;
139
- :rangeIncludes :Entity .
172
+ rdfs:comment "The agent ran a command or a piece of software. The :object is what was run." .
173
+ :body a owl:DatatypeProperty;
174
+ rdfs:comment "The text content of an entity, such as a shell command or a message. It is plain text or Markdown. Not allowed: HTML (`<p>Hello</p>`).";
175
+ rdfs:domain :Entity;
176
+ rdfs:range :Text;
177
+ skos:closeMatch schemaorg:text .
178
+ [] a sh:PropertyShape; sh:path :body; sh:targetSubjectsOf :body; sh:maxCount 1 .
179
+ :memberOf a owl:ObjectProperty;
180
+ rdfs:comment "An entity the agent belongs to, such as the realm of the computer system that holds a user account.";
181
+ rdfs:domain :Agent;
182
+ rdfs:range :Entity;
183
+ skos:closeMatch schemaorg:memberOf .
140
184
 
141
- :Message a rdfs:Class;
185
+ :Message a owl:Class;
142
186
  rdfs:subClassOf :CreativeWork;
143
- rdfs:comment "A communicated item, such as a text message or chat reply. Its :body carries text, :contains links attachments, and :recipient identifies the intended receivers." .
144
- :MessageAction a rdfs:Class;
187
+ rdfs:comment "A communication sent to one or more agents, such as a text message, an email, or a chat reply. Its attachments are what it :contains.";
188
+ skos:broadMatch schemaorg:Message .
189
+ :MessageAction a owl:Class;
145
190
  rdfs:subClassOf :Action;
146
- rdfs:comment "The sending of a message. The :object identifies the message and :agent identifies the sender when known." .
147
- :MediaObject a rdfs:Class;
191
+ rdfs:comment "The agent sent a message. The :object is the message." .
192
+ :MediaObject a owl:Class;
148
193
  rdfs:subClassOf :CreativeWork;
149
- rdfs:comment "A media artifact, such as an image, audio recording, video, or document. Its :contentPath or :url locates the content, and :mimeType describes its format." .
150
- :ImageObject a rdfs:Class;
194
+ rdfs:comment "A media file, such as an image, an audio recording, a video, or a document. Its :contentPath or :url locates the file, and its :mimeType gives its format.";
195
+ skos:broadMatch schemaorg:MediaObject .
196
+ :ImageObject a owl:Class;
151
197
  rdfs:subClassOf :MediaObject;
152
- rdfs:comment "An image artifact, such as a photograph, screenshot, or image attachment." .
153
- :AudioObject a rdfs:Class;
198
+ rdfs:comment "An image, such as a photograph, a screenshot, or an image attachment.";
199
+ skos:broadMatch schemaorg:ImageObject .
200
+ :AudioObject a owl:Class;
154
201
  rdfs:subClassOf :MediaObject;
155
- rdfs:comment "An audio artifact, such as a voice message, music file, or sound recording." .
156
- :VideoObject a rdfs:Class;
202
+ rdfs:comment "A sound recording, such as a voice message or a music file.";
203
+ skos:broadMatch schemaorg:AudioObject .
204
+ :VideoObject a owl:Class;
157
205
  rdfs:subClassOf :MediaObject;
158
- rdfs:comment "A video artifact, such as a recorded clip or video attachment, which may include audio." .
159
- :DocumentObject a rdfs:Class;
206
+ rdfs:comment "A video, such as a recorded clip or a video attachment. It can include sound.";
207
+ skos:broadMatch schemaorg:VideoObject .
208
+ :DocumentObject a owl:Class;
160
209
  rdfs:subClassOf :MediaObject;
161
- rdfs:comment "A document artifact, such as a PDF, text file, or document attachment." .
162
- :recipient a rdf:Property;
163
- rdfs:comment "An agent the message was directed to. A message can have multiple recipients, such as the other participants in a group conversation.";
164
- :domainIncludes :Message;
165
- :rangeIncludes :Agent .
166
- :contains a rdf:Property;
167
- rdfs:comment "The components an entity is materially made of — the media files that constitute a :Post (a photo, a carousel's images and videos), the attachments carried by a :Message. Each component is a leaf-typed :MediaObject carrying its own bytes.";
168
- :domainIncludes :Entity;
169
- :rangeIncludes :MediaObject .
170
- :contentPath a rdf:Property;
171
- rdfs:comment "An absolute filesystem path to the local file containing the media bytes. Describes where the extracted content is available on the source machine.";
172
- owl:maxCardinality 1;
173
- :domainIncludes :MediaObject;
174
- :rangeIncludes :Text .
175
- :mimeType a rdf:Property;
176
- rdfs:comment "The MIME type of the media content, such as image/jpeg, audio/mp4, or application/pdf.";
177
- owl:maxCardinality 1;
178
- :domainIncludes :MediaObject;
179
- :rangeIncludes :Text .
210
+ rdfs:comment "A document file, such as a PDF, a text file, or a document attachment." .
211
+ :recipient a owl:ObjectProperty;
212
+ rdfs:comment "An agent the message or call was directed to, such as each other participant in a group conversation.";
213
+ rdfs:subPropertyOf :involvement;
214
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Message :CallSession ) ];
215
+ rdfs:range :Agent;
216
+ skos:exactMatch schemaorg:recipient .
217
+ :contains a owl:ObjectProperty;
218
+ rdfs:comment "A media file the entity is made of, such as the photo in a :Post, the images and videos in a carousel, or an attachment to a :Message. Each one has its most specific type, such as :ImageObject.";
219
+ rdfs:domain :Entity;
220
+ rdfs:range :MediaObject;
221
+ skos:closeMatch schemaorg:associatedMedia .
222
+ :contentPath a owl:DatatypeProperty;
223
+ rdfs:comment "The absolute filesystem path of the local file that holds the media.";
224
+ rdfs:domain :MediaObject;
225
+ rdfs:range :Text;
226
+ skos:closeMatch schemaorg:contentUrl .
227
+ [] a sh:PropertyShape; sh:path :contentPath; sh:targetSubjectsOf :contentPath; sh:maxCount 1 .
228
+ :mimeType a owl:DatatypeProperty;
229
+ rdfs:comment "The MIME type of the media, such as `image/jpeg`, `audio/mp4`, or `application/pdf`.";
230
+ rdfs:domain :MediaObject;
231
+ rdfs:range :Text;
232
+ skos:closeMatch schemaorg:encodingFormat .
233
+ [] a sh:PropertyShape; sh:path :mimeType; sh:targetSubjectsOf :mimeType; sh:maxCount 1 .
234
+ :transcript a owl:DatatypeProperty;
235
+ rdfs:comment "The words spoken in a recording or an episode, written out, such as a voice memo's transcript, a podcast episode's transcript, or a video's captions. It is plain text with no timings. It belongs to the work rather than to one of its files, so a podcast episode's transcript is the episode's, not its audio file's. Spoken words are a :transcript, not a :body.";
236
+ rdfs:domain [ a owl:Class; owl:unionOf ( :AudioObject :VideoObject :PodcastEpisode ) ];
237
+ rdfs:range :Text;
238
+ skos:closeMatch schemaorg:transcript .
239
+ [] a sh:PropertyShape; sh:path :transcript; sh:targetSubjectsOf :transcript; sh:maxCount 1 .
180
240
 
181
- :SoftwareAgent a rdfs:Class;
241
+ :SoftwareAgent a owl:Class;
182
242
  rdfs:subClassOf :Agent;
183
- rdfs:comment "Running software acting as a participant, such as an assistant, bot, or automation. It can be the :agent of an action or the :author of a message." .
184
- :SoftwareApplication a rdfs:Class;
243
+ rdfs:comment "Software that acts as a participant, such as an assistant, a bot, or an automation. Software used as a tool is :Software." .
244
+ :Software a owl:Class;
185
245
  rdfs:subClassOf :CreativeWork;
186
- rdfs:comment "A software application or model used to perform work. An action can identify it through :instrument, using the source-provided application or model identifier." .
187
- :Thread a rdfs:Class;
246
+ rdfs:comment "A program, such as an application, an operating system, or a model. An action names the software used as its :instrument.";
247
+ skos:closeMatch schemaorg:SoftwareApplication .
248
+ :SoftwareApplication a owl:Class;
249
+ rdfs:subClassOf :Software;
250
+ rdfs:comment "A software application used to do work.";
251
+ skos:broadMatch schemaorg:SoftwareApplication .
252
+ :AIModel a owl:Class;
253
+ rdfs:subClassOf :Software;
254
+ rdfs:comment "A trained model that generates or interprets content, such as a language model or a speech recognizer. An assistant that acts is a :SoftwareAgent, and the model it runs is an :AIModel.";
255
+ skos:broadMatch schemaorg:SoftwareApplication .
256
+ :OperatingSystem a owl:Class;
257
+ rdfs:subClassOf :Software;
258
+ rdfs:comment "An operating system, or one release of it, that applications run on, such as a phone's or a computer's.";
259
+ skos:closeMatch schemaorg:OperatingSystem .
260
+ :Thread a owl:Class;
188
261
  rdfs:subClassOf :Collection;
189
- rdfs:comment "A conversation explicitly grouped by its source, such as an email thread or assistant chat. Messages link to it through :isPartOf; its :name can carry the conversation title." .
190
- :instrument a rdf:Property;
191
- rdfs:comment "The tool, device, application, or model used to perform an action. The :agent identifies who acted; :instrument identifies what they used.";
192
- owl:maxCardinality 1;
193
- :domainIncludes :Action;
194
- :rangeIncludes :Entity .
195
- :author a rdf:Property;
196
- rdfs:comment "An agent that authored the message content, such as a person or software assistant.";
197
- :domainIncludes :Message;
198
- :rangeIncludes :Agent .
199
- :inRealm a rdf:Property;
200
- rdfs:comment "The realm in which an entity resides, such as the computer system hosting a conversation or file. Provides context for identifiers that are local to that realm.";
201
- owl:maxCardinality 1;
202
- :domainIncludes :Entity;
203
- :rangeIncludes :Realm .
262
+ rdfs:comment "A conversation that its source groups together, such as an email thread or a chat with an assistant. Its messages are :isPartOf it, and its :name is the conversation's title.";
263
+ skos:closeMatch schemaorg:Conversation .
264
+ :instrument a owl:ObjectProperty;
265
+ rdfs:comment "The tool, device, application, or model used to perform an action. The :agent is who acted. The :instrument is what they used. When only the kind of device is known, it is a :ProductModel rather than a :Device.";
266
+ rdfs:domain :Action;
267
+ rdfs:range :Entity;
268
+ skos:exactMatch schemaorg:instrument .
269
+ :author a owl:ObjectProperty;
270
+ rdfs:comment "An agent who wrote the work, such as a person or a software assistant.";
271
+ rdfs:domain [ a owl:Class; owl:unionOf ( :CreativeWork :Message ) ];
272
+ rdfs:range :Agent;
273
+ skos:exactMatch schemaorg:author .
274
+ :inRealm a owl:ObjectProperty;
275
+ rdfs:comment "The realm the entity is in, such as the computer system that holds a conversation or a file. Identifiers local to the realm are unique within it.";
276
+ rdfs:domain :Entity;
277
+ rdfs:range :Realm .
278
+ [] a sh:PropertyShape; sh:path :inRealm; sh:targetSubjectsOf :inRealm; sh:maxCount 1 .
279
+ :inAccount a owl:ObjectProperty;
280
+ rdfs:comment "The agent whose account holds the entity, as that account's service knows them, such as the owner of an email account a message was delivered to. An entity held in several accounts is :inAccount each. Identifiers an account issues are unique within it.";
281
+ rdfs:domain :Entity;
282
+ rdfs:range :Agent .
204
283
 
205
- :ConsumeAction a rdfs:Class;
206
- rdfs:comment "The agent took in the :object — read, watched, listened to, ate, or drank it; the subclasses name the mode. A bare ConsumeAction records consumption in progress without a known start.";
207
- rdfs:subClassOf :Action .
284
+ :ConsumeAction a owl:Class;
285
+ rdfs:comment "The agent took in the :object, such as by reading, watching, listening to, eating, or drinking it. The subclasses name how. A :ConsumeAction of no subclass records consumption in progress with no known start.";
286
+ rdfs:subClassOf :Action;
287
+ skos:broadMatch schemaorg:ConsumeAction .
208
288
 
209
- :ViewAction a rdfs:Class;
210
- rdfs:comment "The agent looked at the :object — a web page visited, a photo opened, a document viewed. A point encounter rather than a consumption in progress.";
211
- rdfs:subClassOf :ConsumeAction .
289
+ :ViewAction a owl:Class;
290
+ rdfs:comment "The agent looked at the :object, such as a web page visited, a photo opened, or a document viewed. It records a single encounter, not consumption in progress.";
291
+ rdfs:subClassOf :ConsumeAction;
292
+ skos:broadMatch schemaorg:ViewAction .
212
293
 
213
- :Number a rdfs:Class;
214
- rdfs:comment "A numeric value, integral or decimal.";
215
- rdfs:subClassOf :DataType .
216
- :startTime a rdf:Property;
217
- rdfs:comment "The start time of an action, or the start bound of an interval value. A :DateTime is an anchored instant; a :Date is a civil whole-day bound (e.g. an all-day event).";
218
- owl:maxCardinality 1;
219
- :domainIncludes :Action,
220
- :Event,
221
- :Interval;
222
- :rangeIncludes :Date,
223
- :DateTime .
224
- :endTime a rdf:Property;
225
- rdfs:comment "The end time of an action, or the end bound of an interval value. A :DateTime is an anchored instant; a :Date is a civil whole-day bound (e.g. an all-day event).";
226
- owl:maxCardinality 1;
227
- :domainIncludes :Action,
228
- :Event,
229
- :Interval;
230
- :rangeIncludes :Date,
231
- :DateTime .
232
- :result a rdf:Property;
233
- rdfs:comment "What the action produced — the artifact or session that came into being through it.";
234
- owl:maxCardinality 1;
235
- :domainIncludes :Action;
236
- :rangeIncludes :Entity .
294
+ :Number a rdfs:Datatype;
295
+ rdfs:comment "A number, whole or decimal.";
296
+ owl:equivalentClass [ a rdfs:Datatype; owl:unionOf ( xsd:decimal
297
+ [ a rdfs:Datatype; owl:onDatatype xsd:double; owl:withRestrictions ( [ xsd:minExclusive "-INF"^^xsd:double ] [ xsd:maxExclusive "INF"^^xsd:double ] ) ] ) ];
298
+ skos:broadMatch schemaorg:Number .
299
+ :startTime a owl:DatatypeProperty;
300
+ rdfs:comment "When the action started. A date gives the start at that date's precision.";
301
+ rdfs:domain :Action;
302
+ rdfs:range :DateTime;
303
+ skos:exactMatch schemaorg:startTime .
304
+ [] a sh:PropertyShape; sh:path :startTime; sh:targetSubjectsOf :startTime; sh:maxCount 1 .
305
+ :endTime a owl:DatatypeProperty;
306
+ rdfs:comment "When the action ended. A date gives the end at that date's precision and includes the whole period, so `1990` runs to the end of 1990.";
307
+ rdfs:domain :Action;
308
+ rdfs:range :DateTime;
309
+ skos:exactMatch schemaorg:endTime .
310
+ [] a sh:PropertyShape; sh:path :endTime; sh:targetSubjectsOf :endTime; sh:maxCount 1 .
311
+ :result a owl:ObjectProperty;
312
+ rdfs:comment "What the action produced, such as a work or a session.";
313
+ rdfs:domain :Action;
314
+ rdfs:range :Entity;
315
+ skos:exactMatch schemaorg:result .
316
+ [] a sh:PropertyShape; sh:path :result; sh:targetSubjectsOf :result; sh:maxCount 1 .
237
317
 
238
- :StructuredValue a rdfs:Class;
239
- rdfs:comment "A value made of several fields — a position, an interval — that describes something without being an identified entity of its own." .
240
- :Location a rdfs:Class;
241
- rdfs:comment "A geographic position and address — coordinates (:latitude, :longitude, :elevation) and address parts (:address, :locality, :region, :country, :postalCode). A structured value with no identity of its own; the identified place it describes is a :Place.";
242
- rdfs:subClassOf :StructuredValue .
243
- :Place a rdfs:Class;
244
- rdfs:comment "A location in the world with an identity of its own — a venue, a city, a region, a country. Its geographic position and address are its :location value.";
245
- rdfs:subClassOf :Entity .
246
- :Venue a rdfs:Class;
247
- rdfs:comment "A specific place one goes to — a café, a shop, a park, a home, an office. The :object of a :VisitAction or :CheckInAction, and the :location where something happened.";
318
+ :StructuredValue a owl:Class;
319
+ rdfs:comment "A value made of several fields that together state one fact, such as a position and its address. It describes something but has no identity of its own.";
320
+ skos:broadMatch schemaorg:StructuredValue .
321
+ :Location a owl:Class;
322
+ rdfs:comment "A geographic position and address. Its coordinates are its :latitude and :longitude, and its :address is its address. It has no identity of its own. A place with an identity is a :Place.";
323
+ rdfs:subClassOf :StructuredValue;
324
+ skos:closeMatch schemaorg:GeoCoordinates .
325
+ :Place a owl:Class;
326
+ rdfs:comment "A place in the world with an identity of its own, such as a venue, a city, a region, or a country. Its :location gives its position and address.";
327
+ rdfs:subClassOf :Entity;
328
+ skos:broadMatch schemaorg:Place .
329
+ :Venue a owl:Class;
330
+ rdfs:comment "A specific place that people go to, such as a café, a shop, a park, a home, or an office.";
248
331
  rdfs:subClassOf :Place .
249
- :location a rdf:Property;
250
- rdfs:comment "The location associated with the action or entity.";
251
- owl:maxCardinality 1;
252
- :domainIncludes :Action,
253
- :Entity,
254
- :Event;
255
- :rangeIncludes :Place, :Location .
256
- :latitude a rdf:Property;
332
+ :location a owl:ObjectProperty;
333
+ rdfs:comment "Where the action happened, or where the entity or event is.";
334
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Entity :Action :Event ) ];
335
+ rdfs:range [ a owl:Class; owl:unionOf ( :Location :Place ) ];
336
+ skos:closeMatch schemaorg:location .
337
+ [] a sh:PropertyShape; sh:path :location; sh:targetSubjectsOf :location; sh:maxCount 1 .
338
+ :latitude a owl:DatatypeProperty;
257
339
  rdfs:comment "The latitude of the location.";
258
- owl:maxCardinality 1;
259
- :domainIncludes :Location;
260
- :rangeIncludes :Number .
261
- :longitude a rdf:Property;
340
+ rdfs:domain :Location;
341
+ rdfs:range :Number;
342
+ skos:exactMatch schemaorg:latitude .
343
+ [] a sh:PropertyShape; sh:path :latitude; sh:targetSubjectsOf :latitude; sh:maxCount 1 .
344
+ :longitude a owl:DatatypeProperty;
262
345
  rdfs:comment "The longitude of the location.";
263
- owl:maxCardinality 1;
264
- :domainIncludes :Location;
265
- :rangeIncludes :Number .
266
- :address a rdf:Property;
346
+ rdfs:domain :Location;
347
+ rdfs:range :Number;
348
+ skos:exactMatch schemaorg:longitude .
349
+ [] a sh:PropertyShape; sh:path :longitude; sh:targetSubjectsOf :longitude; sh:maxCount 1 .
350
+ :address a owl:DatatypeProperty;
267
351
  rdfs:comment "The address of the location.";
268
- owl:maxCardinality 1;
269
- :domainIncludes :Location;
270
- :rangeIncludes :Text .
271
- :category a rdf:Property;
272
- rdfs:comment "Categories or tags that classify the entity or action.";
273
- :domainIncludes :Entity;
274
- :rangeIncludes :Text .
352
+ rdfs:domain :Location;
353
+ rdfs:range :Text;
354
+ skos:exactMatch schemaorg:address .
355
+ [] a sh:PropertyShape; sh:path :address; sh:targetSubjectsOf :address; sh:maxCount 1 .
356
+ :category a owl:DatatypeProperty;
357
+ rdfs:comment "A text label that classifies the entity, such as `breakfast` for a :Meal or `car` for a :PhysicalObject.";
358
+ rdfs:domain :Entity;
359
+ rdfs:range :Text;
360
+ skos:exactMatch schemaorg:category .
275
361
 
276
- :VisitAction a rdfs:Class;
277
- rdfs:comment "The agent was present at the :object place over :startTime to :endTime — a stay somewhere, as distinct from the :TravelAction between stays.";
278
- rdfs:subClassOf :Action .
279
- :TravelAction a rdfs:Class;
280
- rdfs:comment "The agent travelled from :object to :target — a physical journey between places, over :startTime to :endTime. Its :result is the :Journey recording the route, mode, and distance.";
362
+ :MoveAction a owl:Class;
363
+ rdfs:comment "The agent moved from the :object to the :target. The subclasses name the kind of movement.";
364
+ rdfs:subClassOf :Action;
365
+ skos:closeMatch schemaorg:MoveAction .
366
+ :NavigateAction a owl:Class;
367
+ rdfs:comment "The agent took one step through an information space, from the :object to the :target, such as following a link from one web page to another. A path through several pages is a sequence of these steps.";
368
+ rdfs:subClassOf :MoveAction .
369
+ :VisitAction a owl:Class;
370
+ rdfs:comment "The agent stayed at the :object place from :startTime to :endTime. Travel between stays is a :TravelAction.";
281
371
  rdfs:subClassOf :Action .
282
- :Journey a rdfs:Class;
283
- rdfs:comment "A recorded segment of travel — the :result of a :TravelAction, carrying the :travelMode, the :distance, and the route as :path. Dateless itself; the action carries the span.";
372
+ :TravelAction a owl:Class;
373
+ rdfs:comment "The agent travelled from the :object place to the :target place, from :startTime to :endTime. Its :result is the :Journey.";
374
+ rdfs:subClassOf :Action;
375
+ skos:broadMatch schemaorg:TravelAction .
376
+ :Journey a owl:Class;
377
+ rdfs:comment "A recorded stretch of travel, with its :travelMode, its :distance, and its route as its :path. It is the :result of a :TravelAction, which gives its start and end.";
284
378
  rdfs:subClassOf :Entity .
285
- :travelMode a rdf:Property;
286
- rdfs:comment "The mode of travel of a journey (e.g. walking, cycling, driving).";
287
- owl:maxCardinality 1;
288
- :domainIncludes :Journey;
289
- :rangeIncludes :Text .
290
- :distance a rdf:Property;
291
- rdfs:comment "The distance covered by a journey, in meters.";
292
- owl:maxCardinality 1;
293
- :domainIncludes :Journey;
294
- :rangeIncludes :Number .
295
- :path a rdf:Property;
296
- rdfs:comment "The recorded route of a journey.";
297
- owl:maxCardinality 1;
298
- :domainIncludes :Journey;
299
- :rangeIncludes :Text .
379
+ :travelMode a owl:DatatypeProperty;
380
+ rdfs:comment "How the journey was made, such as `walking`, `cycling`, or `metro`.";
381
+ rdfs:domain :Journey;
382
+ rdfs:range :Text .
383
+ [] a sh:PropertyShape; sh:path :travelMode; sh:targetSubjectsOf :travelMode; sh:maxCount 1 .
384
+ :distance a owl:DatatypeProperty;
385
+ rdfs:comment "The distance the journey covered, in meters.";
386
+ rdfs:domain :Journey;
387
+ rdfs:range :Number;
388
+ skos:closeMatch schemaorg:distance .
389
+ [] a sh:PropertyShape; sh:path :distance; sh:targetSubjectsOf :distance; sh:maxCount 1 .
390
+ :path a owl:DatatypeProperty;
391
+ rdfs:comment "The recorded route of the journey.";
392
+ rdfs:domain :Journey;
393
+ rdfs:range :Text .
394
+ [] a sh:PropertyShape; sh:path :path; sh:targetSubjectsOf :path; sh:maxCount 1 .
300
395
 
301
- :CreativeWork a rdfs:Class;
302
- rdfs:comment "A work made by an agent — a text, a recording, a post, a message, a document. Carries its attribution (:author, :publisher), its release (:datePublished), what it is about (:about), and its composition (:isPartOf, :contains).";
303
- rdfs:subClassOf :Entity .
304
- :Channel a rdfs:Class;
305
- rdfs:comment "A named, multi-participant messaging container that messages are posted to — a workspace channel, a group chat, a chat room. Messages link to it with :isPartOf; a one-to-one conversation has no Channel.";
396
+ :CreativeWork a owl:Class;
397
+ rdfs:comment "A work made by an agent, such as a text, a recording, a post, a message, or a document.";
398
+ rdfs:subClassOf :Entity;
399
+ skos:broadMatch schemaorg:CreativeWork .
400
+ :Channel a owl:Class;
401
+ rdfs:comment "A named place where several participants post messages, such as a workspace channel, a group chat, or a chat room. Its messages are :isPartOf it. A one-to-one conversation has no :Channel.";
306
402
  rdfs:subClassOf :CreativeWork .
307
- :Organization a rdfs:Class;
308
- rdfs:comment "A group of people acting as one — a company, an institution, a club, a school. Its :member values are the agents that belong to it.";
403
+ :Organization a owl:Class;
404
+ rdfs:comment "A group of people acting as one, such as a company, an institution, a club, or a school.";
309
405
  rdfs:subClassOf :Agent;
310
- owl:equivalentClass schemaorg:Organization .
311
- :member a rdf:Property;
312
- rdfs:comment "A member of the group — a musical group, an organization, or a messaging channel/group chat.";
406
+ skos:exactMatch schemaorg:Organization .
407
+ :member a owl:ObjectProperty;
408
+ rdfs:comment "An agent that belongs to the organization or channel, such as a member of a band, a company, or a group chat.";
313
409
  rdfs:subPropertyOf :involvement;
314
- :domainIncludes :Organization, :Channel;
315
- :rangeIncludes :Person, :Agent .
316
- :inReplyTo a rdf:Property;
317
- rdfs:comment "The message this message is a quoted reply to.";
410
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Channel :Organization ) ];
411
+ rdfs:range [ a owl:Class; owl:unionOf ( :Agent :Person ) ];
412
+ skos:exactMatch schemaorg:member .
413
+ :inReplyTo a owl:ObjectProperty;
414
+ rdfs:comment "The message this message replies to.";
318
415
  rdfs:subPropertyOf :relation;
319
- :domainIncludes :Message;
320
- :rangeIncludes :Message .
416
+ rdfs:domain :Message;
417
+ rdfs:range :Message .
321
418
 
322
- :DataType a rdfs:Class;
323
- rdfs:comment "A simple literal value: text, a number, a date, a date-time." .
324
- :Date a rdfs:Class;
325
- rdfs:comment "A civil calendar date — a day in wall-clock time with no time of day and no zone, kept as an ISO date string rather than an instant. The whole-day counterpart of :DateTime: an all-day event, a date-only life event, a bare year.";
326
- rdfs:subClassOf :DataType .
327
- :Event a rdfs:Class;
328
- rdfs:comment "A named happening with a declared :scheduledTime — a calendar entry, a concert, a picnic. Carries its :location and :attendee values; the :object of an :AttendAction. Its actual extent derives from the activity that constitutes it.";
329
- rdfs:subClassOf :Entity .
330
- :Interval a rdfs:Class;
331
- rdfs:comment "A bounded stretch of time — a start and an end, each at its own precision. A structured value with no identity of its own, like :Location; it carries the declared extent of an event or session (its :scheduledTime), as distinct from an action's occurrence.";
332
- rdfs:subClassOf :StructuredValue .
333
- :relation a rdf:Property;
334
- rdfs:comment "Any edge from an entity to another entity.";
419
+ :Event a owl:Class;
420
+ rdfs:comment "A named happening with a planned start and end, such as a calendar entry, a concert, or a picnic. Its :scheduledStart and :scheduledEnd give the plan. The actions that record it give when it actually happened.";
421
+ rdfs:subClassOf :Entity;
422
+ skos:broadMatch schemaorg:Event .
423
+ :Calendar a owl:Class;
424
+ rdfs:subClassOf :Collection;
425
+ rdfs:comment "A calendar of events, such as a person's primary calendar, a shared team calendar, or a subscribed holiday calendar. Its events are :isPartOf it." .
426
+ :attendee a owl:ObjectProperty;
427
+ rdfs:comment "An agent invited to the event, such as a guest on a calendar entry, whatever their reply.";
428
+ rdfs:subPropertyOf :involvement;
429
+ rdfs:domain :Event;
430
+ rdfs:range :Agent;
431
+ skos:closeMatch schemaorg:attendee .
432
+ :scheduledStart a owl:DatatypeProperty;
433
+ rdfs:comment "When the event or session is planned to start. When something actually started is an action's :startTime. A timed plan starts at an instant. An all-day plan starts on a date.";
434
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Event :Session ) ];
435
+ rdfs:range :DateTime;
436
+ skos:closeMatch schemaorg:startDate .
437
+ [] a sh:PropertyShape; sh:path :scheduledStart; sh:targetSubjectsOf :scheduledStart; sh:maxCount 1 .
438
+ :scheduledEnd a owl:DatatypeProperty;
439
+ rdfs:comment "When the event or session is planned to end. It is the same kind of value as its :scheduledStart and is not before it. A date is the last whole day included, so a one-day event ends on the day it starts.";
440
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Event :Session ) ];
441
+ rdfs:range :DateTime;
442
+ skos:closeMatch schemaorg:endDate .
443
+ [] a sh:PropertyShape; sh:path :scheduledEnd; sh:targetSubjectsOf :scheduledEnd; sh:maxCount 1 .
444
+ :relation a owl:ObjectProperty;
445
+ rdfs:comment "Another entity that this entity is linked to.";
335
446
  :abstract true;
336
- :rangeIncludes :Entity .
337
- :involvement a rdf:Property;
338
- rdfs:comment "An agent involved in an entity as addressee, attendee, or member.";
447
+ rdfs:range :Entity .
448
+ :involvement a owl:ObjectProperty;
449
+ rdfs:comment "An agent involved in an entity, such as the recipient of a message, an attendee of an event, or a member of a group.";
339
450
  rdfs:subPropertyOf :relation;
340
- :rangeIncludes :Agent .
451
+ :abstract true;
452
+ rdfs:range :Agent .
341
453
 
342
- :InteractAction a rdfs:Class;
343
- rdfs:comment "An agent engages with another agent or a social object — communicating, following.";
344
- rdfs:subClassOf :Action .
345
- :CommunicateAction a rdfs:Class;
346
- rdfs:comment "An agent conveys something to others — a message, a call, a check-in.";
347
- rdfs:subClassOf :InteractAction .
348
- :CallAction a rdfs:Class;
349
- rdfs:comment "A phone or video call. :agent is the caller when known; the :result is the :CallSession the call constitutes, which carries the receiver as its :recipient and, for a group call, the :Channel it is :isPartOf.";
454
+ :InteractAction a owl:Class;
455
+ rdfs:comment "The agent engaged with others, such as by communicating with them or following them.";
456
+ rdfs:subClassOf :Action;
457
+ skos:broadMatch schemaorg:InteractAction .
458
+ :CommunicateAction a owl:Class;
459
+ rdfs:comment "The agent conveyed something to others, such as by sending a message, making a call, or checking in.";
460
+ rdfs:subClassOf :InteractAction;
461
+ skos:broadMatch schemaorg:CommunicateAction .
462
+ :CallAction a owl:Class;
463
+ rdfs:comment "The agent made a phone or video call. Its :result is the :CallSession.";
350
464
  rdfs:subClassOf :CommunicateAction .
351
- :Session a rdfs:Class;
352
- rdfs:comment "A described segment of time — a bounded, characterized interval of the subject's logged activity (an app-usage block, a manual time block, a call). A sibling of :Event (a named happening); both carry a declared :scheduledTime, while their actual aliveness derives from the activity that constitutes them. A session constituted by an action (:DeviceSession, :CallSession) takes its occurrence from that action; an atomic session (a manual time block) carries its own :startTime/:endTime, like :Event.";
465
+ :Session a owl:Class;
466
+ rdfs:comment "A described period of the subject's activity, such as a block of app use, a manually logged block of time, or a call. Unlike an :Event, it is not a named happening. Its :scheduledStart and :scheduledEnd give a planned period. The action that records it gives when it actually happened.";
353
467
  rdfs:subClassOf :Entity .
354
- :CallSession a rdfs:Class;
355
- rdfs:comment "A phone or FaceTime call as a described segment of time — the :result of a :CallAction. Carries the :recipient (the receiver) and, for group calls, :isPartOf a :Channel whose :member is the roster. A missed call is a zero-length span; a connected call a non-zero one.";
468
+ :CallSession a owl:Class;
469
+ rdfs:comment "A phone or video call, as a period of time. It is the :result of a :CallAction. Its :recipient is who received the call. A group call :isPartOf a :Channel whose :member values are the participants. A missed call has zero length.";
356
470
  rdfs:subClassOf :Session .
357
- :recipient :domainIncludes :CallSession .
358
- :EatAction a rdfs:Class;
359
- rdfs:comment "The agent ate the :object, a :Meal. Where it happened is the action's :location.";
360
- rdfs:subClassOf :ConsumeAction .
361
- :DrankAction a rdfs:Class;
471
+ :EatAction a owl:Class;
472
+ rdfs:comment "The agent ate the :object, a :Meal. Where they ate is the action's :location.";
473
+ rdfs:subClassOf :ConsumeAction;
474
+ skos:broadMatch schemaorg:EatAction .
475
+ :DrinkAction a owl:Class;
362
476
  rdfs:comment "The agent drank the :object.";
363
- rdfs:subClassOf :ConsumeAction .
364
- :Meal a rdfs:Class;
365
- rdfs:comment "A meal or snack the subject ate — the :object of an :EatAction. Its slot (breakfast, lunch, dinner) is :category data.";
477
+ rdfs:subClassOf :ConsumeAction;
478
+ skos:broadMatch schemaorg:DrinkAction .
479
+ :Meal a owl:Class;
480
+ rdfs:comment "A meal or snack that the subject ate. Its :category is its slot, such as breakfast, lunch, or dinner.";
366
481
  rdfs:subClassOf :Entity .
367
- :Post a rdfs:Class;
368
- rdfs:comment "A work published to a social or media platform — a feed post, a story, a reel, a tweet. A media-agnostic container: it may carry a text :body and :contains one or more media files (:MediaObject). Its native presentation format (feed, story, reel) is its :sourceFormat.";
369
- rdfs:subClassOf :CreativeWork .
370
- :PublishAction a rdfs:Class;
371
- rdfs:comment "A work was published or released. Its :agent is the publisher when known and its :object the work; the work's :datePublished is when this occurred.";
482
+ :Post a owl:Class;
483
+ rdfs:comment "A work published to a social or media platform, such as a feed post, a story, a reel, or a tweet. It can have a text :body and media files that it :contains. Its :sourceFormat is the platform's own format for it.";
484
+ rdfs:subClassOf :CreativeWork;
485
+ skos:broadMatch schemaorg:SocialMediaPosting .
486
+ :PublishAction a owl:Class;
487
+ rdfs:comment "The agent published or released the :object. The work's :datePublished is when this happened.";
372
488
  rdfs:subClassOf :CreateAction .
373
- :CreateAction a rdfs:Class;
374
- rdfs:comment "The agent brought a work into existence. Its :result is the work created; the subclasses name the kind of making.";
375
- rdfs:subClassOf :Action .
376
- :LikeAction a rdfs:Class;
377
- rdfs:comment "The agent liked the :object. Opens the agent's standing :likes run over it.";
378
- rdfs:subClassOf :ReactAction .
379
- :ReactAction a rdfs:Class;
380
- rdfs:comment "A payload-free stance an agent takes on the :object, such as a like. A reaction that carries content (an emoji, a comment) is a :RespondAction.";
381
- rdfs:subClassOf :AssessAction .
382
- :AssessAction a rdfs:Class;
383
- rdfs:comment "An agent takes a stance on the :object — a like, a reaction, a rating, a review.";
384
- rdfs:subClassOf :Action .
385
- :references a rdf:Property;
386
- rdfs:comment "An entity this one references — an @mention, or a link from one resource to another (a web page's outbound link, a citation).";
489
+ :CreateAction a owl:Class;
490
+ rdfs:comment "The agent brought a work into being. Its :result is the work. The subclasses name the kind of making.";
491
+ rdfs:subClassOf :Action;
492
+ skos:broadMatch schemaorg:CreateAction .
493
+ :RecordAction a owl:Class;
494
+ rdfs:comment "The agent recorded sound or video, such as a voice memo, a video clip, or a screen recording. Its :result is the :AudioObject or :VideoObject. Recording can be paused, so the action can last longer than the recording's :duration. When only the start is known, the :timestamp is when recording started. Taking a still image is a :PhotographAction.";
495
+ rdfs:subClassOf :CreateAction .
496
+ :PhotographAction a owl:Class;
497
+ rdfs:comment "The agent took a photograph. Its :result is the :ImageObject.";
498
+ rdfs:subClassOf :CreateAction;
499
+ skos:exactMatch schemaorg:PhotographAction .
500
+ :LikeAction a owl:Class;
501
+ rdfs:comment "The agent liked the :object.";
502
+ rdfs:subClassOf :ReactAction;
503
+ skos:broadMatch schemaorg:LikeAction .
504
+ :ReactAction a owl:Class;
505
+ rdfs:comment "The agent took a stance on the :object with no content, such as a like. A reaction with content, such as an emoji or a comment, is a :RespondAction.";
506
+ rdfs:subClassOf :AssessAction;
507
+ skos:broadMatch schemaorg:ReactAction .
508
+ :AssessAction a owl:Class;
509
+ rdfs:comment "The agent took a stance on the :object, such as by liking, reacting to, rating, or reviewing it.";
510
+ rdfs:subClassOf :Action;
511
+ skos:broadMatch schemaorg:AssessAction .
512
+ :references a owl:ObjectProperty;
513
+ rdfs:comment "An entity this one refers to, such as one it @mentions, a page it links to, or a work it cites.";
387
514
  rdfs:subPropertyOf :mentions;
388
- :domainIncludes :CreativeWork,
389
- :Session,
390
- :Entity;
391
- :rangeIncludes :Entity .
392
- :mentions a rdf:Property;
393
- rdfs:comment "An entity pointed to from this one (e.g. an @mention or link).";
515
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Entity :CreativeWork :Session ) ];
516
+ rdfs:range :Entity .
517
+ :mentions a owl:ObjectProperty;
518
+ rdfs:comment "An entity this one points to, such as by an @mention or a link.";
394
519
  rdfs:subPropertyOf :relation;
395
- :rangeIncludes :Entity .
396
- :FindAction a rdfs:Class;
397
- rdfs:comment "The agent looked something up on a platform — an entry in a search history. :object is the :Query entered.";
398
- rdfs:subClassOf :Action .
399
- :Query a rdfs:Class;
400
- rdfs:comment "A search query as entered. Carries the query text as :body; the :object of a :FindAction.";
520
+ rdfs:range :Entity;
521
+ skos:exactMatch schemaorg:mentions .
522
+ :FindAction a owl:Class;
523
+ rdfs:comment "The agent searched on a platform. The :object is the :Query they entered.";
524
+ rdfs:subClassOf :Action;
525
+ skos:broadMatch schemaorg:SearchAction .
526
+ :Query a owl:Class;
527
+ rdfs:comment "A search query as it was entered. Its :body is the query's text.";
401
528
  rdfs:subClassOf :CreativeWork .
402
- :RespondAction a rdfs:Class;
403
- rdfs:comment "An agent responds to the :object with content — an emoji reaction, a comment, a rating, a review. The :result is the :Response carrying that content; the :object names what it is about. The payload-carrying counterpart of :LikeAction.";
529
+ :RespondAction a owl:Class;
530
+ rdfs:comment "The agent responded to the :object with content, such as an emoji reaction, a comment, a rating, or a review. Its :result is the :Response that holds the content. A response with no content is a :ReactAction.";
404
531
  rdfs:subClassOf :AssessAction .
405
- :Response a rdfs:Class;
406
- rdfs:comment "An agent's response to a thing, carrying its content in two facets: :body (an emoji reaction is a one-character body; prose is a :Comment) and :ratingValue (a review carries both). The :result of a :RespondAction, whose :object names what the response is about. The payload is kept verbatim in the source's own vocabulary, a literal ❤️ beside a platform's LOVE. A like with no payload is a :LikeAction rather than a Response.";
407
- rdfs:subClassOf :CreativeWork .
408
- :Comment a rdfs:Class;
409
- rdfs:comment "A prose response — the :Response leaf whose :body is authored text.";
410
- rdfs:subClassOf :Response .
411
- :author :domainIncludes :CreativeWork .
412
- :FollowAction a rdfs:Class;
413
- rdfs:comment "The agent began following the :object — an account, a feed, a collection. Opens the agent's :follows run over it.";
414
- rdfs:subClassOf :InteractAction .
415
- :OrganizeAction a rdfs:Class;
416
- rdfs:comment "An agent arranges or plans things — saving, bookmarking, scheduling.";
417
- rdfs:subClassOf :Action .
418
- :BookmarkAction a rdfs:Class;
419
- rdfs:comment "The agent saved the :object for later — a bookmarked page, an article saved to a reading list, a work shelved as to-read.";
420
- rdfs:subClassOf :OrganizeAction .
421
- :sourceFormat a rdf:Property;
422
- rdfs:comment "The source's own presentation format for an item — which of the platform's native content shapes it is among items of the same type: a story, feed post, or reel; a video, short, or live stream; a full episode, trailer, or bonus. A descriptive, per-source, open-vocabulary label, present only where the source has such a sub-format.";
423
- owl:maxCardinality 1;
424
- :domainIncludes :CreativeWork;
425
- :rangeIncludes :Text .
426
- :visibility a rdf:Property;
427
- rdfs:comment "How widely the work is shared: `public`, `private`, or `unlisted`, always as these lowercase tokens. A coarse bucket shared across sources, onto which each source's own audience states map.";
428
- owl:maxCardinality 1;
429
- :domainIncludes :CreativeWork;
430
- :rangeIncludes :Text .
431
- :ListenAction a rdfs:Class;
432
- rdfs:comment "The agent listened to the :object — a recording, a podcast episode. Opens or extends the agent's :consuming run over it.";
433
- rdfs:subClassOf :ConsumeAction .
434
- :AddAction a rdfs:Class;
435
- rdfs:comment "The agent added the :object to the :target — a track to a playlist, a work to a collection.";
436
- rdfs:subClassOf :UpdateAction .
437
- :MusicRecording a rdfs:Class;
438
- rdfs:comment "A recorded track — one performance of a :MusicComposition (:recordingOf) by an :artist, appearing on a :MusicAlbum via :inAlbum, with a :duration.";
439
- rdfs:subClassOf :CreativeWork .
440
- :MusicAlbum a rdfs:Class;
441
- rdfs:comment "A released collection of recordings by an :artist; each recording on it is a :track.";
532
+ :Response a owl:Class;
533
+ rdfs:comment "A response to something, with content. It is the :result of a :RespondAction, whose :object is what it responds to. Its :body is the content as the source gives it, such as `❤️`, `LOVE`, or prose. A response in prose is a :Comment.";
442
534
  rdfs:subClassOf :CreativeWork .
443
- :PerformingGroup a rdfs:Class;
444
- rdfs:comment "An organization that performs — a band, a troupe, an ensemble.";
445
- rdfs:subClassOf :Organization .
446
- :MusicGroup a rdfs:Class;
447
- rdfs:comment "A musical act — a band, an orchestra, or a solo artist as a performing identity. The :artist of recordings and albums.";
448
- rdfs:subClassOf :PerformingGroup .
449
- :PodcastEpisode a rdfs:Class;
450
- rdfs:comment "One episode of a :PodcastSeries (via :series), with its :episodeNumber and :duration.";
451
- rdfs:subClassOf :CreativeWork .
452
- :attribution a rdf:Property;
453
- rdfs:comment "An agent responsible for a creative work coming into existence.";
535
+ :Comment a owl:Class;
536
+ rdfs:comment "A response written in prose. Its :body is the text.";
537
+ rdfs:subClassOf :Response;
538
+ skos:broadMatch schemaorg:Comment .
539
+ :FollowAction a owl:Class;
540
+ rdfs:comment "The agent started following the :object, such as an account, a feed, or a collection.";
541
+ rdfs:subClassOf :InteractAction;
542
+ skos:broadMatch schemaorg:FollowAction .
543
+ :OrganizeAction a owl:Class;
544
+ rdfs:comment "The agent arranged or planned things, such as by saving, bookmarking, or scheduling.";
545
+ rdfs:subClassOf :Action;
546
+ skos:broadMatch schemaorg:OrganizeAction .
547
+ :BookmarkAction a owl:Class;
548
+ rdfs:comment "The agent saved the :object for later, such as a bookmarked page, an article saved to a reading list, or a book shelved as to-read.";
549
+ rdfs:subClassOf :OrganizeAction;
550
+ skos:broadMatch schemaorg:BookmarkAction .
551
+ :sourceFormat a owl:DatatypeProperty;
552
+ rdfs:comment "The platform's own format for the work, among works of the same type. For example, a post can be a story, a feed post, or a reel, a video can be a short or a live stream, and a podcast episode can be a trailer or a bonus. Each source has its own values. A work has a :sourceFormat only when its source has such formats.";
553
+ rdfs:domain :CreativeWork;
554
+ rdfs:range :Text .
555
+ [] a sh:PropertyShape; sh:path :sourceFormat; sh:targetSubjectsOf :sourceFormat; sh:maxCount 1 .
556
+ :visibility a owl:DatatypeProperty;
557
+ rdfs:comment "How widely the work is shared. It is one of `public`, `private`, or `unlisted`, and each source's audience settings map onto these. Not allowed: other values (`friends`) or other cases (`Public`).";
558
+ rdfs:domain :CreativeWork;
559
+ rdfs:range :Text .
560
+ [] a sh:PropertyShape; sh:path :visibility; sh:targetSubjectsOf :visibility; sh:maxCount 1 .
561
+ :ListenAction a owl:Class;
562
+ rdfs:comment "The agent listened to the :object, such as a recording or a podcast episode.";
563
+ rdfs:subClassOf :ConsumeAction;
564
+ skos:broadMatch schemaorg:ListenAction .
565
+ :AddAction a owl:Class;
566
+ rdfs:comment "The agent added the :object to the :target, such as a track to a playlist or a work to a collection.";
567
+ rdfs:subClassOf :UpdateAction;
568
+ skos:broadMatch schemaorg:AddAction .
569
+ :MusicRecording a owl:Class;
570
+ rdfs:comment "A recording of a piece of music, such as a track on an album.";
571
+ rdfs:subClassOf :CreativeWork;
572
+ skos:broadMatch schemaorg:MusicRecording .
573
+ :MusicAlbum a owl:Class;
574
+ rdfs:comment "A released collection of music recordings.";
575
+ rdfs:subClassOf :CreativeWork;
576
+ skos:broadMatch schemaorg:MusicAlbum .
577
+ :PerformingGroup a owl:Class;
578
+ rdfs:comment "An organization that performs, such as a band, a troupe, or an ensemble.";
579
+ rdfs:subClassOf :Organization;
580
+ skos:broadMatch schemaorg:PerformingGroup .
581
+ :MusicGroup a owl:Class;
582
+ rdfs:comment "A musical act, such as a band, an orchestra, or a solo artist as a performer. It is the :artist of recordings and albums.";
583
+ rdfs:subClassOf :PerformingGroup;
584
+ skos:broadMatch schemaorg:MusicGroup .
585
+ :PodcastEpisode a owl:Class;
586
+ rdfs:comment "One episode of a podcast.";
587
+ rdfs:subClassOf :CreativeWork;
588
+ skos:broadMatch schemaorg:PodcastEpisode .
589
+ :attribution a owl:ObjectProperty;
590
+ rdfs:comment "An agent responsible for bringing a work into being.";
454
591
  rdfs:subPropertyOf :relation;
455
592
  :abstract true;
456
- :rangeIncludes :Agent .
457
- :performer a rdf:Property;
593
+ rdfs:range :Agent .
594
+ :performer a owl:ObjectProperty;
458
595
  :propagatesEncounter true;
459
596
  rdfs:comment "An agent who performed or realized an existing work.";
460
597
  rdfs:subPropertyOf :attribution;
461
- :rangeIncludes :Agent .
462
- :composition a rdf:Property;
463
- rdfs:comment "A structural part/whole relation between entities. Direction-neutral; assert :partOf or :hasPart.";
598
+ rdfs:range :Agent;
599
+ skos:closeMatch schemaorg:performer .
600
+ :composition a owl:ObjectProperty;
601
+ rdfs:comment "A structural relation between a part and its whole, in either direction.";
464
602
  rdfs:subPropertyOf :relation;
465
603
  :abstract true;
466
- :rangeIncludes :Entity .
467
- :partOf a rdf:Property;
604
+ rdfs:range :Entity .
605
+ :partOf a owl:ObjectProperty;
468
606
  :propagatesEncounter true;
469
- rdfs:comment "This entity is a component of the referenced entity.";
607
+ rdfs:comment "A work that this entity is a component of.";
470
608
  rdfs:subPropertyOf :composition;
471
- :rangeIncludes :CreativeWork .
472
- :emblem a rdf:Property;
473
- rdfs:comment "The image an entity presents itself by — an avatar, poster, cover, logo, or favicon. Representation, not content: swap it and the entity is the same. Where a :depiction is a photograph someone took of the thing, an emblem is the image the thing was given to stand for it, photographic or not; banners and headers are decoration rather than emblems. The single elected image among candidates; its bytes live on the :ImageObject.";
609
+ rdfs:range :CreativeWork .
610
+ :emblem a owl:ObjectProperty;
611
+ rdfs:comment "The image an entity presents itself by, such as an avatar, a poster, a cover, a logo, or a favicon. It stands for the entity but is not its content, so changing it does not change the entity. It can be a photograph or any other image. Banners and headers are not emblems.";
474
612
  rdfs:subPropertyOf :relation;
475
- owl:maxCardinality 1;
476
- :domainIncludes :Entity;
477
- :rangeIncludes :ImageObject .
478
- :artist a rdf:Property;
613
+ rdfs:domain :Entity;
614
+ rdfs:range :ImageObject;
615
+ skos:broadMatch schemaorg:image .
616
+ [] a sh:PropertyShape; sh:path :emblem; sh:targetSubjectsOf :emblem; sh:maxCount 1 .
617
+ :artist a owl:ObjectProperty;
479
618
  :propagatesEncounter true;
480
- rdfs:comment "The artist who created or performed the musical work.";
619
+ rdfs:comment "The musical act that created or performed the recording or album.";
481
620
  rdfs:subPropertyOf :performer;
482
- :domainIncludes :MusicRecording,
483
- :MusicAlbum,
484
- :AudioObject;
485
- :rangeIncludes :MusicGroup .
486
- :inAlbum a rdf:Property;
621
+ rdfs:domain [ a owl:Class; owl:unionOf ( :AudioObject :MusicRecording :MusicAlbum ) ];
622
+ rdfs:range :MusicGroup;
623
+ skos:exactMatch schemaorg:byArtist .
624
+ :inAlbum a owl:ObjectProperty;
487
625
  :propagatesEncounter true;
488
- rdfs:comment "The album that contains this musical recording.";
489
- owl:maxCardinality 1;
626
+ rdfs:comment "The album the recording appears on.";
490
627
  rdfs:subPropertyOf :partOf;
491
- :domainIncludes :MusicRecording;
492
- :rangeIncludes :MusicAlbum .
493
- :duration a rdf:Property;
494
- rdfs:comment "The duration of the musical recording or media content.";
495
- owl:maxCardinality 1;
496
- :domainIncludes :MusicRecording,
497
- :PodcastEpisode,
498
- :AudioObject,
499
- :VideoObject;
500
- :rangeIncludes :Text .
501
- :genre a rdf:Property;
502
- rdfs:comment "The genre of the creative work.";
503
- :domainIncludes :CreativeWork,
504
- :AudioObject;
505
- :rangeIncludes :Text .
506
- :datePublished a rdf:Property;
507
- rdfs:comment "When the work was published or released, at whatever precision the source knows (a bare year is a year-precision date). A date on the work's own timeline: the moment its :PublishAction occurred.";
508
- owl:maxCardinality 1;
509
- owl:equivalentProperty schemaorg:datePublished;
510
- :domainIncludes :CreativeWork;
511
- :rangeIncludes :Date,
512
- :DateTime .
513
- :target a rdf:Property;
514
- rdfs:comment "What an action is directed toward, as opposed to what it is carried out on (:object). A collection operation targets the collection it adds to or removes from; a movement verb targets where it ended up, with :object naming where it began (:NavigateAction from one page to the next, :TravelAction from one place to the next).";
515
- owl:maxCardinality 1;
516
- :domainIncludes :Action;
517
- :rangeIncludes :Entity .
518
- :ExperienceAction a rdfs:Class;
519
- rdfs:comment "A segment of lived activity the subject engaged in or underwent — a manually-logged time block or life episode (its :result is the :Session it constitutes: a :Tenure, :Residence, :Relationship, and the like), or a punctual life event (:BirthAction, :DeathAction). Carries the real occurrence via :startTime/:endTime; the constituted session takes its span from the action.";
628
+ rdfs:domain :MusicRecording;
629
+ rdfs:range :MusicAlbum;
630
+ skos:exactMatch schemaorg:inAlbum .
631
+ [] a sh:PropertyShape; sh:path :inAlbum; sh:targetSubjectsOf :inAlbum; sh:maxCount 1 .
632
+ :duration a owl:DatatypeProperty;
633
+ rdfs:comment "How long the recording or media lasts.";
634
+ rdfs:domain [ a owl:Class; owl:unionOf ( :AudioObject :VideoObject :MusicRecording :PodcastEpisode ) ];
635
+ rdfs:range :Text;
636
+ skos:exactMatch schemaorg:duration .
637
+ [] a sh:PropertyShape; sh:path :duration; sh:targetSubjectsOf :duration; sh:maxCount 1 .
638
+ :genre a owl:DatatypeProperty;
639
+ rdfs:comment "A genre of the work.";
640
+ rdfs:domain [ a owl:Class; owl:unionOf ( :CreativeWork :AudioObject ) ];
641
+ rdfs:range :Text;
642
+ skos:exactMatch schemaorg:genre .
643
+ :datePublished a owl:DatatypeProperty;
644
+ rdfs:comment "When the work was published or released. It is when the work's :PublishAction occurred.";
645
+ skos:exactMatch schemaorg:datePublished;
646
+ rdfs:domain :CreativeWork;
647
+ rdfs:range :DateTime .
648
+ [] a sh:PropertyShape; sh:path :datePublished; sh:targetSubjectsOf :datePublished; sh:maxCount 1 .
649
+ :target a owl:ObjectProperty;
650
+ rdfs:comment "What an action is directed toward, as distinct from the :object it is carried out on. Adding to or removing from a collection targets the collection. A movement targets where it ended, and its :object is where it began.";
651
+ rdfs:domain :Action;
652
+ rdfs:range :Entity .
653
+ [] a sh:PropertyShape; sh:path :target; sh:targetSubjectsOf :target; sh:maxCount 1 .
654
+ :ExperienceAction a owl:Class;
655
+ rdfs:comment "The subject went through a period of life or a life event, such as a logged block of time, a job, or a relationship. Its :startTime and :endTime give when it happened. Its :result, if any, is the :Session that lasted that period, such as a :Tenure or a :Relationship.";
520
656
  rdfs:subClassOf :Action .
521
- :JoinAction a rdfs:Class;
522
- rdfs:comment "The subject joined the :object organization or realm — the opening boundary of a membership. Its :result may carry the :Tenure, :Membership, or :Enrollment the membership constitutes.";
523
- rdfs:subClassOf :ExperienceAction .
524
- :LeaveAction a rdfs:Class;
525
- rdfs:comment "The subject left the :object organization or realm — the closing boundary of a membership opened by a :JoinAction.";
526
- rdfs:subClassOf :ExperienceAction .
527
- :Tenure a rdfs:Class;
528
- rdfs:comment "A stretch of employment — the :result of the :ExperienceAction whose span it takes. Dateless itself; carries the :employer (an :Organization) and the :role held. The subject's :memberOf run over the employer derives from this span.";
657
+ :JoinAction a owl:Class;
658
+ rdfs:comment "The subject joined the :object organization or realm, starting a membership. Its :result can be the :Tenure, :Membership, or :Enrollment that began.";
659
+ rdfs:subClassOf :ExperienceAction;
660
+ skos:broadMatch schemaorg:JoinAction .
661
+ :LeaveAction a owl:Class;
662
+ rdfs:comment "The subject left the :object organization or realm, ending a membership that a :JoinAction started.";
663
+ rdfs:subClassOf :ExperienceAction;
664
+ skos:broadMatch schemaorg:LeaveAction .
665
+ :Tenure a owl:Class;
666
+ rdfs:comment "A period of employment. It is the :result of an :ExperienceAction, which gives its start and end. Its :role is the position held.";
529
667
  rdfs:subClassOf :Session .
530
- :Enrollment a rdfs:Class;
531
- rdfs:comment "A stretch of study at a school — the :result of the :ExperienceAction whose span it takes. Dateless itself; carries the :school (an :Organization) and the :degree pursued. The subject's :memberOf run over the school derives from this span.";
668
+ :Enrollment a owl:Class;
669
+ rdfs:comment "A period of study at a school. It is the :result of an :ExperienceAction, which gives its start and end. Its :degree is the degree or program pursued.";
532
670
  rdfs:subClassOf :Session .
533
- :Membership a rdfs:Class;
534
- rdfs:comment "A stretch of belonging to an organization or realm — the :result of the :ExperienceAction whose span it takes. Dateless itself; carries the :org and the :role held. The subject's :memberOf run derives from this span.";
671
+ :Membership a owl:Class;
672
+ rdfs:comment "A period of belonging to an organization or realm. It is the :result of an :ExperienceAction, which gives its start and end. Its :role is the role held.";
535
673
  rdfs:subClassOf :Session .
536
- :Relationship a rdfs:Class;
537
- rdfs:comment "A stretch of romantic partnership — the :result of the :ExperienceAction whose span it takes. Dateless itself; names the other person via :with. The subject's :partner run derives from this span.";
674
+ :Relationship a owl:Class;
675
+ rdfs:comment "A period of romantic partnership. It is the :result of an :ExperienceAction, which gives its start and end.";
538
676
  rdfs:subClassOf :Session .
539
- :role a rdf:Property;
540
- rdfs:comment "The role, title, or nature held during a :Tenure, :Membership, or :Relationship.";
541
- owl:maxCardinality 1;
542
- :domainIncludes :Tenure,
543
- :Membership,
544
- :Relationship;
545
- :rangeIncludes :Text .
546
- :degree a rdf:Property;
547
- rdfs:comment "The degree or program pursued during an :Enrollment.";
548
- owl:maxCardinality 1;
549
- :domainIncludes :Enrollment;
550
- :rangeIncludes :Text .
551
- :Intangible a rdfs:Class;
552
- rdfs:comment "An entity with no physical or creative existence of its own — a term, a selector, a category.";
553
- rdfs:subClassOf :Entity .
554
- :DefinedTerm a rdfs:Class;
555
- rdfs:comment "A word or code from a vocabulary — a tag, a category — used to classify other entities.";
556
- rdfs:subClassOf :Intangible .
557
- :WatchAction a rdfs:Class;
558
- rdfs:comment "The agent watched the :object — a video, a film, a show. Opens or extends the agent's :consuming run over it.";
559
- rdfs:subClassOf :ConsumeAction .
560
- :width a rdf:Property;
561
- rdfs:comment "The width of the media content in pixels.";
562
- owl:maxCardinality 1; :domainIncludes :ImageObject,
563
- :VideoObject;
564
- :rangeIncludes :Number .
565
- :height a rdf:Property;
566
- rdfs:comment "The height of the media content in pixels.";
567
- owl:maxCardinality 1; :domainIncludes :ImageObject,
568
- :VideoObject;
569
- :rangeIncludes :Number .
677
+ :role a owl:DatatypeProperty;
678
+ rdfs:comment "The role or title held in a :Tenure or :Membership, or the kind of :Relationship.";
679
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Tenure :Membership :Relationship ) ];
680
+ rdfs:range :Text .
681
+ [] a sh:PropertyShape; sh:path :role; sh:targetSubjectsOf :role; sh:maxCount 1 .
682
+ :degree a owl:DatatypeProperty;
683
+ rdfs:comment "The degree or program pursued.";
684
+ rdfs:domain :Enrollment;
685
+ rdfs:range :Text .
686
+ [] a sh:PropertyShape; sh:path :degree; sh:targetSubjectsOf :degree; sh:maxCount 1 .
687
+ :Intangible a owl:Class;
688
+ rdfs:comment "An entity that is neither physical nor a creative work, such as a term, a selector, or a category.";
689
+ rdfs:subClassOf :Entity;
690
+ skos:broadMatch schemaorg:Intangible .
691
+ :DefinedTerm a owl:Class;
692
+ rdfs:comment "A word or code from a vocabulary that classifies other entities, such as a tag or a category.";
693
+ rdfs:subClassOf :Intangible;
694
+ skos:broadMatch schemaorg:DefinedTerm .
695
+ :WatchAction a owl:Class;
696
+ rdfs:comment "The agent watched the :object, such as a video, a film, or a show.";
697
+ rdfs:subClassOf :ConsumeAction;
698
+ skos:broadMatch schemaorg:WatchAction .
699
+ :width a owl:DatatypeProperty;
700
+ rdfs:comment "The width of the image or video, in pixels.";
701
+ rdfs:domain [ a owl:Class; owl:unionOf ( :ImageObject :VideoObject ) ];
702
+ rdfs:range :Number;
703
+ skos:closeMatch schemaorg:width .
704
+ [] a sh:PropertyShape; sh:path :width; sh:targetSubjectsOf :width; sh:maxCount 1 .
705
+ :height a owl:DatatypeProperty;
706
+ rdfs:comment "The height of the image or video, in pixels.";
707
+ rdfs:domain [ a owl:Class; owl:unionOf ( :ImageObject :VideoObject ) ];
708
+ rdfs:range :Number;
709
+ skos:closeMatch schemaorg:height .
710
+ [] a sh:PropertyShape; sh:path :height; sh:targetSubjectsOf :height; sh:maxCount 1 .
570
711
 
571
- :AnnotateAction a rdfs:Class;
572
- rdfs:comment "The agent wrote a note on something — a comment on a highlighted passage, a note on a work, a margin note on a page. Its :result is the :Comment, whose :about names what it annotates.";
712
+ :AnnotateAction a owl:Class;
713
+ rdfs:comment "The agent wrote a note on something, such as a comment on a highlighted passage, a note on a work, or a note in the margin of a page. Its :result is the :Comment, which is :about what it annotates.";
573
714
  rdfs:subClassOf :CreateAction .
574
715
 
575
- :DeviceSession a rdfs:Class;
576
- rdfs:comment "A screen-usage segment — an app-focus/app-usage block on a device. The :result of an :ExecuteAction (which carries the measured span); dateless itself, carrying the focused resource (:subject), the project (:isPartOf), and, when no resource is present, the window title (:name).";
716
+ :DeviceSession a owl:Class;
717
+ rdfs:comment "A period of using a device, such as a block of time with one app in focus. It is the :result of an :ExecuteAction, which gives its start and end. Its :subject is the resource in focus, and it :isPartOf a project. When no resource is in focus, its :name is the window's title.";
577
718
  rdfs:subClassOf :Session .
578
- :PhysicalObject a rdfs:Class;
579
- rdfs:comment "A tangible object the subject owns or uses and has a history with — a device, a vehicle, an instrument. Its kind is open-ended :category data ('computer', 'car'); its make and model is :model. Subclasses name functional roles an object plays in actions, such as :Device.";
719
+ :PhysicalObject a owl:Class;
720
+ rdfs:comment "A physical object the subject owns or uses, such as a device, a vehicle, or a musical instrument. Its :category is its kind, such as `computer` or `car`, and its :model is its make and model. The subclasses name the roles an object plays in actions, such as :Device.";
580
721
  rdfs:subClassOf :Entity .
581
- :Device a rdfs:Class;
582
- rdfs:comment "A physical computing device the subject runs software on — the :instrument of an :ExecuteAction, and the device a :DeviceSession takes place on. A functional role rather than a kind: whether it is a computer, phone, or tablet is :category data. It runs within a :Realm (via :inRealm), the logical machine that may outlive the hardware.";
722
+ :Device a owl:Class;
723
+ rdfs:comment "A physical computing device the subject runs software on, such as a computer, a phone, or a tablet. It is the :instrument of an :ExecuteAction. It names a role, not a kind, so its :category says what kind of device it is. It is :inRealm the logical machine, which can outlive the hardware.";
583
724
  rdfs:subClassOf :PhysicalObject .
584
- :Directory a rdfs:Class;
725
+ :ProductModel a owl:Class;
726
+ rdfs:comment "A kind of product, such as a line of phones or one model of camera, rather than one particular product. One particular computing device is a :Device.";
727
+ rdfs:subClassOf :Entity;
728
+ skos:closeMatch schemaorg:ProductModel .
729
+ :Directory a owl:Class;
585
730
  rdfs:subClassOf :Collection;
586
- rdfs:comment "A filesystem directory: a :Collection whose members are the files (:MediaObject) and subdirectories (:Directory) it :contains, identified by its path (:handle) within the machine it lives on (:inRealm). It has no content of its own; its membership is its content." .
587
- :workingDirectory a rdf:Property;
588
- rdfs:comment "The filesystem directory a session took place in — a terminal's current working directory or a folder open in a file manager. Where the session happened, not what it was about (cf. :subject).";
589
- owl:maxCardinality 1;
590
- :domainIncludes :Session;
591
- :rangeIncludes :Directory .
592
- :subject a rdf:Property;
593
- rdfs:comment "The specific resource a session was spent on — the document, page, or media in focus. A specialization of :about (subject matter) for sessions.";
731
+ rdfs:comment "A filesystem directory. Its members are the files and directories it :contains, and they are its only content. Its :handle is its path, and it is :inRealm the machine it is on." .
732
+ :workingDirectory a owl:ObjectProperty;
733
+ rdfs:comment "The directory a session took place in, such as a terminal's working directory or a folder open in a file manager. It is where the session happened. What the session was spent on is its :subject.";
734
+ rdfs:domain :Session;
735
+ rdfs:range :Directory .
736
+ [] a sh:PropertyShape; sh:path :workingDirectory; sh:targetSubjectsOf :workingDirectory; sh:maxCount 1 .
737
+ :subject a owl:ObjectProperty;
738
+ rdfs:comment "The resource the session was spent on, such as the document, page, or media in focus.";
594
739
  rdfs:subPropertyOf :about;
595
- :domainIncludes :Session;
596
- :rangeIncludes :Entity .
597
- :model a rdf:Property;
598
- rdfs:comment "The make/model of a physical object (e.g. 'Mac17,9', 'iPhone15,2') — the manufactured model, distinct from the object's own :name and from its :category kind.";
599
- owl:maxCardinality 1;
600
- :domainIncludes :PhysicalObject;
601
- :rangeIncludes :Text .
740
+ rdfs:domain :Session;
741
+ rdfs:range :Entity .
742
+ :model a owl:DatatypeProperty;
743
+ rdfs:comment "The make and model of the object, such as `Mac17,9` or `iPhone15,2`. It is not the object's :name or its :category.";
744
+ rdfs:domain :PhysicalObject;
745
+ rdfs:range :Text;
746
+ skos:exactMatch schemaorg:model .
747
+ [] a sh:PropertyShape; sh:path :model; sh:targetSubjectsOf :model; sh:maxCount 1 .
602
748
 
603
- :CheckInAction a rdfs:Class;
604
- rdfs:comment "The agent announced their presence at the :object, a :Venue, at :timestamp.";
605
- rdfs:subClassOf :CommunicateAction .
749
+ :CheckInAction a owl:Class;
750
+ rdfs:comment "The agent announced that they were at the :object, a :Venue.";
751
+ rdfs:subClassOf :CommunicateAction;
752
+ skos:broadMatch schemaorg:CheckInAction .
606
753
 
607
- :Book a rdfs:Class;
608
- rdfs:comment "A book, as an edition: carries its :author and :pageCount.";
609
- rdfs:subClassOf :CreativeWork .
610
- :pageCount a rdf:Property;
611
- rdfs:comment "The number of pages in a document or book (an edition-level count).";
612
- owl:maxCardinality 1;
613
- :domainIncludes :DocumentObject,
614
- :Book;
615
- :rangeIncludes :Number .
616
- :publisher a rdf:Property;
617
- rdfs:comment "The publisher of the creative work.";
754
+ :Book a owl:Class;
755
+ rdfs:comment "A book, in one edition.";
756
+ rdfs:subClassOf :CreativeWork;
757
+ skos:broadMatch schemaorg:Book .
758
+ :pageCount a owl:DatatypeProperty;
759
+ rdfs:comment "The number of pages in the document or edition.";
760
+ rdfs:domain [ a owl:Class; owl:unionOf ( :DocumentObject :Book ) ];
761
+ rdfs:range :Number;
762
+ skos:exactMatch schemaorg:numberOfPages .
763
+ [] a sh:PropertyShape; sh:path :pageCount; sh:targetSubjectsOf :pageCount; sh:maxCount 1 .
764
+ :publisher a owl:ObjectProperty;
765
+ rdfs:comment "The organization that published the work.";
618
766
  rdfs:subPropertyOf :creator;
619
- :domainIncludes :CreativeWork;
620
- :rangeIncludes :Organization .
621
- :creator a rdf:Property;
767
+ rdfs:domain :CreativeWork;
768
+ rdfs:range :Organization;
769
+ skos:exactMatch schemaorg:publisher .
770
+ :creator a owl:ObjectProperty;
622
771
  :propagatesEncounter true;
623
- rdfs:comment "An agent who brought the work into existence (authored, produced, or released it).";
772
+ rdfs:comment "An agent who brought the work into being, such as by writing, producing, or releasing it.";
624
773
  rdfs:subPropertyOf :attribution;
625
- :domainIncludes :CreativeWork;
626
- :rangeIncludes :Agent .
774
+ rdfs:domain :CreativeWork;
775
+ rdfs:range :Agent;
776
+ skos:exactMatch schemaorg:creator .
627
777
 
628
- :ReadAction a rdfs:Class;
629
- rdfs:comment "The agent read the :object — a book, an article, a document. Opens or extends the agent's :consuming run over it.";
630
- rdfs:subClassOf :ConsumeAction .
631
- :QuoteAction a rdfs:Class;
632
- rdfs:comment "The agent selected a passage of the :object — a highlight in a book or document, an excerpt from a page. Its :result is the :Quotation carrying the text and its position via :selector.";
778
+ :ReadAction a owl:Class;
779
+ rdfs:comment "The agent read the :object, such as a book, an article, or a document.";
780
+ rdfs:subClassOf :ConsumeAction;
781
+ skos:broadMatch schemaorg:ReadAction .
782
+ :QuoteAction a owl:Class;
783
+ rdfs:comment "The agent selected a passage of the :object, such as a highlight in a book or an excerpt from a page. Its :result is the :Quotation.";
633
784
  rdfs:subClassOf :CreateAction .
634
- :Quotation a rdfs:Class;
635
- rdfs:comment "A passage selected from a work — a highlight, an excerpt. Carries the text as :body, its position in the work via :selector, and, for a visual annotation, its :annotationStyle and :color. The :result of a :QuoteAction.";
636
- rdfs:subClassOf :CreativeWork .
785
+ :Quotation a owl:Class;
786
+ rdfs:comment "A passage selected from a work, such as a highlight or an excerpt. Its :body is the text, and its :selector gives its position. A visual annotation also has an :annotationStyle and a :color.";
787
+ rdfs:subClassOf :CreativeWork;
788
+ skos:broadMatch schemaorg:Quotation .
637
789
 
638
- :Category a rdfs:Class;
639
- rdfs:comment "A classification drawn from a fixed set of kinds, as distinct from a free-form :Tag.";
790
+ :Category a owl:Class;
791
+ rdfs:comment "A classification from a fixed set of kinds. A free-form label is a :Tag.";
640
792
  rdfs:subClassOf :DefinedTerm .
641
- :Selector a rdfs:Class;
642
- rdfs:comment "A position within a resource — where a passage sits in a book, a page, or a media file. Carries a machine value (:selectorValue), a readable label (:selectorLabel), and a normalized position (:selectorProgress); the subclasses name the addressing scheme.";
793
+ :Selector a owl:Class;
794
+ rdfs:comment "A position within a resource, such as where a passage is in a book, a page, or a media file. Its :selectorValue is for machines and its :selectorLabel is for people. The subclasses name the addressing scheme.";
643
795
  rdfs:subClassOf :Intangible .
644
- :PageSelector a rdfs:Class;
645
- rdfs:comment "A position in a paginated document, addressed by page number.";
796
+ :PageSelector a owl:Class;
797
+ rdfs:comment "A position in a paginated document, given by page number.";
646
798
  rdfs:subClassOf :Selector .
647
- :EpubCfiSelector a rdfs:Class;
648
- rdfs:comment "A position in an EPUB, addressed by a Canonical Fragment Identifier.";
799
+ :EpubCfiSelector a owl:Class;
800
+ rdfs:comment "A position in an EPUB, given by a Canonical Fragment Identifier.";
649
801
  rdfs:subClassOf :Selector .
650
- :Article a rdfs:Class;
651
- rdfs:comment "A written piece published on the web or in a periodical — a news story, a blog post, a feed item.";
652
- rdfs:subClassOf :CreativeWork .
653
- :snapshotOf a rdf:Property;
654
- rdfs:comment "The resource this media is a capture of: a screenshot or archive (the :result of a :ScreenshotAction or :ArchiveAction) points at the :Entity whose URL it captured at a moment. The referent is the addressed resource itself, the URL entity. Screenshot and archive are told apart by the media's type; being a snapshot is the role this edge confers.";
802
+ :Article a owl:Class;
803
+ rdfs:comment "A written piece published on the web or in a periodical, such as a news story, a blog post, or a feed item.";
804
+ rdfs:subClassOf :CreativeWork;
805
+ skos:broadMatch schemaorg:Article .
806
+ :snapshotOf a owl:ObjectProperty;
807
+ rdfs:comment "The resource this media captured at a moment, such as the web page in a screenshot or an archive. The value is the resource itself, the entity with the URL. The media's type tells a screenshot from an archive.";
655
808
  rdfs:subPropertyOf :relation;
656
- :domainIncludes :MediaObject;
657
- :rangeIncludes :Entity .
658
- :color a rdf:Property;
659
- rdfs:comment "Color associated with the entity (hex or name).";
660
- owl:maxCardinality 1;
661
- :domainIncludes :Quotation,
662
- :Tag,
663
- :Category;
664
- :rangeIncludes :Text .
665
- :annotationStyle a rdf:Property;
666
- rdfs:comment "Type of visual annotation (highlight, underline, strikethrough, squiggly, box, margin).";
667
- owl:maxCardinality 1;
668
- :domainIncludes :Quotation;
669
- :rangeIncludes :Text .
670
- :selector a rdf:Property;
671
- rdfs:comment "Selectors identifying content position within a resource.";
672
- :domainIncludes :Quotation;
673
- :rangeIncludes :Selector .
674
- :selectorValue a rdf:Property;
675
- rdfs:comment "The selector value string (EPUB CFI, media fragment, page number, etc.).";
676
- owl:maxCardinality 1;
677
- :domainIncludes :Selector;
678
- :rangeIncludes :Text .
679
- :selectorLabel a rdf:Property;
680
- rdfs:comment "Human-readable location label such as pt3ch1p40, p215, or 23:43.";
681
- owl:maxCardinality 1;
682
- :domainIncludes :Selector;
683
- :rangeIncludes :Text .
809
+ rdfs:domain :MediaObject;
810
+ rdfs:range :Entity .
811
+ :color a owl:DatatypeProperty;
812
+ rdfs:comment "A color associated with the entity, as a hex code or a name, such as `#ffcc00` or `yellow`.";
813
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Tag :Quotation :Category ) ];
814
+ rdfs:range :Text;
815
+ skos:closeMatch schemaorg:color .
816
+ [] a sh:PropertyShape; sh:path :color; sh:targetSubjectsOf :color; sh:maxCount 1 .
817
+ :annotationStyle a owl:DatatypeProperty;
818
+ rdfs:comment "The kind of visual annotation, such as `highlight`, `underline`, `strikethrough`, `squiggly`, `box`, or `margin`.";
819
+ rdfs:domain :Quotation;
820
+ rdfs:range :Text .
821
+ [] a sh:PropertyShape; sh:path :annotationStyle; sh:targetSubjectsOf :annotationStyle; sh:maxCount 1 .
822
+ :selector a owl:ObjectProperty;
823
+ rdfs:comment "A position of the quotation in its work.";
824
+ rdfs:domain :Quotation;
825
+ rdfs:range :Selector .
826
+ :selectorValue a owl:DatatypeProperty;
827
+ rdfs:comment "The position as machines read it, such as an EPUB CFI, a media fragment, or a page number.";
828
+ rdfs:domain :Selector;
829
+ rdfs:range :Text .
830
+ [] a sh:PropertyShape; sh:path :selectorValue; sh:targetSubjectsOf :selectorValue; sh:maxCount 1 .
831
+ :selectorLabel a owl:DatatypeProperty;
832
+ rdfs:comment "The position as people read it, such as `pt3ch1p40`, `p215`, or `23:43`.";
833
+ rdfs:domain :Selector;
834
+ rdfs:range :Text .
835
+ [] a sh:PropertyShape; sh:path :selectorLabel; sh:targetSubjectsOf :selectorLabel; sh:maxCount 1 .
684
836
 
685
- :tags a rdf:Property;
686
- rdfs:comment "Tags for categorization or labeling.";
687
- :domainIncludes :Entity;
688
- :rangeIncludes :Text .
689
- :caption a rdf:Property;
690
- rdfs:comment "A caption or description for the media content.";
691
- owl:maxCardinality 1;
692
- :domainIncludes :ImageObject;
693
- :rangeIncludes :Text .
837
+ :tags a owl:DatatypeProperty;
838
+ rdfs:comment "A text label for the entity. A label that is an entity of its own is a :Tag.";
839
+ rdfs:domain :Entity;
840
+ rdfs:range :Text;
841
+ skos:closeMatch schemaorg:keywords .
842
+ :caption a owl:DatatypeProperty;
843
+ rdfs:comment "A caption or description of the image.";
844
+ rdfs:domain :ImageObject;
845
+ rdfs:range :Text;
846
+ skos:exactMatch schemaorg:caption .
847
+ [] a sh:PropertyShape; sh:path :caption; sh:targetSubjectsOf :caption; sh:maxCount 1 .
848
+ :SoftwareSourceCode a owl:Class;
849
+ rdfs:comment "Source code as a work, such as a snippet, a script, or a program's code.";
850
+ rdfs:subClassOf :CreativeWork;
851
+ skos:exactMatch schemaorg:SoftwareSourceCode .
852
+ :Repository a owl:Class;
853
+ rdfs:comment "A store of files and their history under version control, hosted on a forge or kept locally. It can hold source code, data, documents, or anything else. Work filed against it, such as tasks and changesets, :isPartOf it.";
854
+ rdfs:subClassOf :CreativeWork .
855
+ :Changeset a owl:Class;
856
+ rdfs:comment "A set of changes to a work, proposed or applied as a unit, that can be revised until it is decided, such as a pull request or a suggested edit to a document. It :isPartOf the work it changes. A :PublishAction puts it forward. An :AcceptAction, :RejectAction, or :CancelAction then decides it.";
857
+ rdfs:subClassOf :CreativeWork .
858
+ :AcceptAction a owl:Class;
859
+ rdfs:comment "The agent accepted what was put forward, such as merging a changeset into the work it changes. The :object is what was accepted.";
860
+ rdfs:subClassOf :Action;
861
+ skos:exactMatch schemaorg:AcceptAction .
862
+ :RejectAction a owl:Class;
863
+ rdfs:comment "The agent declined what was put forward, such as closing a changeset without taking it in. The :object is what was declined.";
864
+ rdfs:subClassOf :Action;
865
+ skos:exactMatch schemaorg:RejectAction .
866
+ :Revision a owl:Class;
867
+ rdfs:comment "A version of a work in its history, such as a commit to a repository or a revision of a document or wiki page. It :isPartOf the work and :isBasedOn the versions before it. The :UpdateAction whose :result it is records making it. A revision is a version, not a change. Its change is how it differs from the versions it is based on.";
868
+ rdfs:subClassOf :CreativeWork .
869
+ :isBasedOn a owl:ObjectProperty;
870
+ rdfs:comment "A work this one was derived from, such as the earlier version a revision follows or the repository a fork was copied from.";
871
+ rdfs:subPropertyOf :relation;
872
+ skos:exactMatch schemaorg:isBasedOn;
873
+ rdfs:domain :CreativeWork;
874
+ rdfs:range :CreativeWork .