@chronicle.app/schema 0.3.0 → 0.5.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,1137 @@
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.4.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. :inverseName on
20
+ # a property names its inverse: a record can give the relation under either
21
+ # name, and a store keeps only the forward property. :assertedBy and
22
+ # :retractedBy on a standing relation name the actions that start and end it,
23
+ # and :runPredicate names the relation as those actions' history.
24
+ #
25
+ # :metric on a number property says what form its values take, and so how
26
+ # its values over a time combine. A "gauge" is a level or a rate, such as a
27
+ # heart rate, and combines as a mean, minimum, or maximum. A "sum" is an
28
+ # amount, such as a number of steps, and adds up. Each value is for its
29
+ # action's time: its :timestamp, or its :startTime to its :endTime. A
30
+ # metric's :unit is the one unit all its values are in, as a UCUM code such
31
+ # as `/min`, so values from any source can be compared. Values of two
32
+ # properties can't be, even in the same unit.
33
+ :abstract a owl:AnnotationProperty .
34
+ :propagatesEncounter a owl:AnnotationProperty .
35
+ :metric a owl:AnnotationProperty .
36
+ :unit a owl:AnnotationProperty .
37
+ :inverseName a owl:AnnotationProperty .
38
+ :assertedBy a owl:AnnotationProperty .
39
+ :retractedBy a owl:AnnotationProperty .
40
+ :runPredicate a owl:AnnotationProperty .
41
+
42
+ # Derived query vocabulary. These are not rdf:Property payload fields.
43
+ :DerivedProperty a rdfs:Class .
44
+
45
+ :Base a owl:Class;
46
+ rdfs:comment "Anything a source describes, either an :Entity or an :Action. Each one has an identity, so other records can refer to it.";
47
+ owl:disjointUnionOf ( :Entity :Action );
48
+ skos:broadMatch schemaorg:Thing .
49
+ :Entity a owl:Class;
14
50
  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;
51
+ 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." .
52
+ :Action a owl:Class;
17
53
  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." .
54
+ rdfs:comment "Something that happened, such as reading an article, sending a message, or visiting a place.";
55
+ skos:broadMatch schemaorg:Action .
56
+ :Text a rdfs:Datatype;
57
+ rdfs:comment "A string of characters, such as a name or an identifier. Text has no identity of its own.";
58
+ owl:equivalentClass xsd:string;
59
+ skos:broadMatch schemaorg:Text .
60
+ :URL a rdfs:Datatype;
61
+ rdfs:comment "An absolute URL, such as `https://example.com/article`.";
62
+ owl:equivalentClass [ a rdfs:Datatype; owl:unionOf ( xsd:anyURI
63
+ [ a rdfs:Datatype; owl:onDatatype xsd:string; owl:withRestrictions ( [ xsd:pattern "[A-Za-z][-A-Za-z0-9+.]*:.+" ] ) ] ) ];
64
+ skos:broadMatch schemaorg:URL .
25
65
 
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 .
66
+ :sourceId a owl:DatatypeProperty;
67
+ 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.";
68
+ rdfs:domain :Base;
69
+ rdfs:range :Text;
70
+ skos:broadMatch schemaorg:identifier .
71
+ [] a sh:PropertyShape; sh:path :sourceId; sh:targetSubjectsOf :sourceId; sh:maxCount 1 .
72
+ :name a owl:DatatypeProperty;
73
+ 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.";
74
+ rdfs:domain :Entity;
75
+ rdfs:range :Text;
76
+ skos:exactMatch schemaorg:name .
77
+ [] a sh:PropertyShape; sh:path :name; sh:targetSubjectsOf :name; sh:maxCount 1 .
78
+ :alternateName a owl:DatatypeProperty;
79
+ 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.";
80
+ rdfs:domain :Entity;
81
+ rdfs:range :Text;
82
+ skos:exactMatch schemaorg:alternateName .
83
+ :url a owl:DatatypeProperty;
84
+ 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.";
85
+ rdfs:domain :Entity;
86
+ rdfs:range :URL;
87
+ skos:exactMatch schemaorg:url .
88
+ [] a sh:PropertyShape; sh:path :url; sh:targetSubjectsOf :url; sh:maxCount 1 .
89
+ :object a owl:ObjectProperty;
90
+ rdfs:comment "The entity an action was carried out on, such as the article read, the photo shared, or the place visited. For a movement, such as a :TravelAction, the :object is where it began.";
91
+ rdfs:domain :Action;
92
+ rdfs:range :Entity;
93
+ skos:exactMatch schemaorg:object .
94
+ [] a sh:PropertyShape; sh:path :object; sh:targetSubjectsOf :object; sh:maxCount 1 .
46
95
 
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;
96
+ :DateTime a rdfs:Datatype;
97
+ 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`).";
98
+ owl:equivalentClass [ a rdfs:Datatype; owl:unionOf ( xsd:dateTime
99
+ [ 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})?)?[?~%]?" ] ) ] ) ];
100
+ skos:closeMatch schemaorg:DateTime .
101
+ :Agent a owl:Class;
51
102
  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;
103
+ rdfs:comment "An entity that can act, such as a person, an organization, or a piece of software." .
104
+ :Task a owl:Class;
54
105
  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;
106
+ rdfs:comment "A unit of work to be done, such as a to-do item." .
107
+ :Collection a owl:Class;
57
108
  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;
109
+ 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.";
110
+ skos:broadMatch schemaorg:Collection .
111
+ :Project a owl:Class;
60
112
  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;
113
+ rdfs:comment "An undertaking that groups related work toward an outcome. Its tasks and other parts are :isPartOf it." .
114
+ :Tag a owl:Class;
63
115
  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;
116
+ 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." .
117
+ :PlanAction a owl:Class;
66
118
  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;
119
+ rdfs:comment "The agent decided to do something, such as by creating a to-do item. The :object is the planned work.";
120
+ skos:broadMatch schemaorg:PlanAction .
121
+ :UpdateAction a owl:Class;
69
122
  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;
123
+ 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.";
124
+ skos:broadMatch schemaorg:UpdateAction .
125
+ :CompleteAction a owl:Class;
72
126
  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;
127
+ rdfs:comment "The agent finished an activity or piece of work, such as a task or a book. The :object is what was finished." .
128
+ :CancelAction a owl:Class;
75
129
  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;
130
+ rdfs:comment "The agent withdrew a plan or intended activity, such as a task. The :object is what was withdrawn.";
131
+ skos:broadMatch schemaorg:CancelAction .
132
+ :DeleteAction a owl:Class;
78
133
  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 .
134
+ 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.";
135
+ skos:closeMatch schemaorg:DeleteAction .
136
+ :source a owl:DatatypeProperty;
137
+ rdfs:comment "The source that describes the entity or action, such as `things-todo`. Identifiers such as :sourceId are unique within it.";
138
+ rdfs:domain :Base;
139
+ rdfs:range :Text .
140
+ [] a sh:PropertyShape; sh:path :source; sh:targetSubjectsOf :source; sh:maxCount 1 .
141
+ :timestamp a owl:DatatypeProperty;
142
+ rdfs:comment "When the action occurred.";
143
+ rdfs:domain :Action;
144
+ rdfs:range :DateTime;
145
+ skos:closeMatch schemaorg:timestamp .
146
+ [] a sh:PropertyShape; sh:path :timestamp; sh:targetSubjectsOf :timestamp; sh:maxCount 1 .
147
+ :agent a owl:ObjectProperty;
148
+ rdfs:comment "Who performed the action. An action whose performer is unknown has no :agent.";
149
+ rdfs:domain :Action;
150
+ rdfs:range :Agent;
151
+ skos:exactMatch schemaorg:agent .
152
+ [] a sh:PropertyShape; sh:path :agent; sh:targetSubjectsOf :agent; sh:maxCount 1 .
153
+ # It takes an entity or the text `@me`, so OWL cannot call it an object or a
154
+ # datatype property.
96
155
  :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 .
156
+ 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.";
157
+ rdfs:domain :Entity;
158
+ rdfs:range [ owl:unionOf ( :Entity :Text ) ];
159
+ skos:closeMatch schemaorg:sameAs .
160
+ :description a owl:DatatypeProperty;
161
+ 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>`).";
162
+ rdfs:domain :Entity;
163
+ rdfs:range :Text;
164
+ skos:exactMatch schemaorg:description .
165
+ [] a sh:PropertyShape; sh:path :description; sh:targetSubjectsOf :description; sh:maxCount 1 .
166
+ :handle a owl:DatatypeProperty;
167
+ 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.";
168
+ rdfs:domain :Entity;
169
+ rdfs:range :Text .
170
+ [] a sh:PropertyShape; sh:path :handle; sh:targetSubjectsOf :handle; sh:maxCount 1 .
171
+ :isPartOf a owl:ObjectProperty;
172
+ rdfs:comment "A whole that the entity is part of, such as a task's project, the page an excerpt comes from, or the transaction a posting belongs to. Seen from the whole, its parts are its `hasPart` values.";
173
+ :inverseName "hasPart";
174
+ rdfs:domain :Entity;
175
+ rdfs:range :Entity;
176
+ skos:exactMatch schemaorg:isPartOf .
177
+ :isStageOf a owl:ObjectProperty;
178
+ rdfs:comment "The session that this session is a stage of, such as the night that a stretch of deep sleep is a stage of. A stage is part of how the whole went and does not happen apart from it. A whole's stages of the same type do not overlap, though together they need not cover it. Seen from the whole, its stages are its `hasStage` values.";
179
+ :inverseName "hasStage";
180
+ rdfs:subPropertyOf :isPartOf;
181
+ rdfs:domain :Session;
182
+ rdfs:range :Session;
183
+ skos:broadMatch schemaorg:isPartOf .
184
+ [] a sh:PropertyShape; sh:path :isStageOf; sh:targetSubjectsOf :isStageOf; sh:maxCount 1 .
185
+ :about a owl:ObjectProperty;
186
+ rdfs:comment "What the entity is about, such as a topic or a tag.";
187
+ rdfs:domain :Entity;
188
+ rdfs:range :Entity;
189
+ skos:exactMatch schemaorg:about .
118
190
 
119
- :Command a rdfs:Class;
191
+ :Command a owl:Class;
120
192
  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;
193
+ 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." .
194
+ :Person a owl:Class;
123
195
  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;
196
+ rdfs:comment "A human being, such as a participant in a conversation or the user of a computer.";
197
+ skos:broadMatch schemaorg:Person .
198
+ :Realm a owl:Class;
126
199
  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;
200
+ 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." .
201
+ :ExecuteAction a owl:Class;
129
202
  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 .
203
+ rdfs:comment "The agent ran a command or a piece of software. The :object is what was run." .
204
+ :body a owl:DatatypeProperty;
205
+ 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>`).";
206
+ rdfs:domain :Entity;
207
+ rdfs:range :Text;
208
+ skos:closeMatch schemaorg:text .
209
+ [] a sh:PropertyShape; sh:path :body; sh:targetSubjectsOf :body; sh:maxCount 1 .
210
+ :memberOf a owl:ObjectProperty;
211
+ rdfs:comment "An entity the agent belongs to, such as the realm of the computer system that holds a user account.";
212
+ rdfs:domain :Agent;
213
+ rdfs:range :Entity;
214
+ skos:closeMatch schemaorg:memberOf .
140
215
 
141
- :Message a rdfs:Class;
216
+ :Message a owl:Class;
142
217
  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;
218
+ 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.";
219
+ skos:broadMatch schemaorg:Message .
220
+ :MessageAction a owl:Class;
145
221
  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;
222
+ rdfs:comment "The agent sent a message. Its :result is the :Message." .
223
+ :MediaObject a owl:Class;
148
224
  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;
225
+ 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.";
226
+ skos:broadMatch schemaorg:MediaObject .
227
+ :ImageObject a owl:Class;
151
228
  rdfs:subClassOf :MediaObject;
152
- rdfs:comment "An image artifact, such as a photograph, screenshot, or image attachment." .
153
- :AudioObject a rdfs:Class;
229
+ rdfs:comment "An image file, such as a photo's file, a screenshot, or an image attachment.";
230
+ skos:broadMatch schemaorg:ImageObject .
231
+ :AudioObject a owl:Class;
154
232
  rdfs:subClassOf :MediaObject;
155
- rdfs:comment "An audio artifact, such as a voice message, music file, or sound recording." .
156
- :VideoObject a rdfs:Class;
233
+ rdfs:comment "A sound recording, such as a voice message or a music file.";
234
+ skos:broadMatch schemaorg:AudioObject .
235
+ :VideoObject a owl:Class;
157
236
  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;
237
+ rdfs:comment "A video file, such as a recorded clip or a video attachment. It can include sound.";
238
+ skos:broadMatch schemaorg:VideoObject .
239
+ :StillImage a owl:Class;
240
+ rdfs:subClassOf :CreativeWork;
241
+ rdfs:comment "A still picture as a work, such as a photograph or a screenshot: what it shows, apart from the files that hold it. Each file is one of its :rendition values, usually an :ImageObject. A picture captured with a moment of motion also has a short :VideoObject.";
242
+ skos:narrowMatch schemaorg:Photograph .
243
+ :MovingImage a owl:Class;
244
+ rdfs:subClassOf :CreativeWork;
245
+ rdfs:comment "A video as a work, such as one recorded with a camera or of a screen: what it shows, apart from the files that hold it. Each file is one of its :rendition values, a :VideoObject." .
246
+ :rendition a owl:ObjectProperty;
247
+ rdfs:comment "A file that holds the work, such as a picture's image file, a video's video file, or an episode's audio file. A work can have several, such as a picture's image and the short video captured with it, or the same picture in two formats. Seen from the file, the work is its `renditionOf` value.";
248
+ :inverseName "renditionOf";
249
+ rdfs:domain :CreativeWork;
250
+ rdfs:range :MediaObject;
251
+ skos:exactMatch schemaorg:encoding .
252
+ :DocumentObject a owl:Class;
160
253
  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 .
254
+ rdfs:comment "A document file, such as a PDF, a text file, or a document attachment." .
255
+ :recipient a owl:ObjectProperty;
256
+ rdfs:comment "An agent the message, call, or transaction was directed to, such as each other participant in a group conversation or the merchant that was paid.";
257
+ rdfs:subPropertyOf :involvement;
258
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Message :CallSession :FinancialTransaction ) ];
259
+ rdfs:range :Agent;
260
+ skos:exactMatch schemaorg:recipient .
261
+ :contains a owl:ObjectProperty;
262
+ rdfs:comment "A media file that is part of the entity, such as an attachment to a :Message, the photo in a :Post, or the images and videos in a carousel. Each one has its most specific type, such as :ImageObject.";
263
+ rdfs:domain :Entity;
264
+ rdfs:range :MediaObject;
265
+ skos:broadMatch schemaorg:hasPart .
266
+ :contentPath a owl:DatatypeProperty;
267
+ rdfs:comment "The absolute filesystem path of the local file that holds the media.";
268
+ rdfs:domain :MediaObject;
269
+ rdfs:range :Text;
270
+ skos:closeMatch schemaorg:contentUrl .
271
+ [] a sh:PropertyShape; sh:path :contentPath; sh:targetSubjectsOf :contentPath; sh:maxCount 1 .
272
+ :mimeType a owl:DatatypeProperty;
273
+ rdfs:comment "The MIME type of the media, such as `image/jpeg`, `audio/mp4`, or `application/pdf`.";
274
+ rdfs:domain :MediaObject;
275
+ rdfs:range :Text;
276
+ skos:closeMatch schemaorg:encodingFormat .
277
+ [] a sh:PropertyShape; sh:path :mimeType; sh:targetSubjectsOf :mimeType; sh:maxCount 1 .
278
+ :contentSize a owl:DatatypeProperty;
279
+ rdfs:comment "The size of the file, in bytes.";
280
+ rdfs:domain :MediaObject;
281
+ rdfs:range :Number;
282
+ skos:closeMatch schemaorg:contentSize .
283
+ [] a sh:PropertyShape; sh:path :contentSize; sh:targetSubjectsOf :contentSize; sh:maxCount 1 .
284
+ :transcript a owl:DatatypeProperty;
285
+ 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.";
286
+ rdfs:domain [ a owl:Class; owl:unionOf ( :AudioObject :VideoObject :PodcastEpisode ) ];
287
+ rdfs:range :Text;
288
+ skos:closeMatch schemaorg:transcript .
289
+ [] a sh:PropertyShape; sh:path :transcript; sh:targetSubjectsOf :transcript; sh:maxCount 1 .
180
290
 
181
- :SoftwareAgent a rdfs:Class;
291
+ :SoftwareAgent a owl:Class;
182
292
  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;
293
+ rdfs:comment "Software that acts as a participant, such as an assistant, a bot, or an automation. Software used as a tool is :Software." .
294
+ :Software a owl:Class;
185
295
  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;
296
+ rdfs:comment "A program, such as an application, an operating system, or a model. An action names the software used as its :instrument.";
297
+ skos:closeMatch schemaorg:SoftwareApplication .
298
+ :SoftwareApplication a owl:Class;
299
+ rdfs:subClassOf :Software;
300
+ rdfs:comment "A software application used to do work.";
301
+ skos:broadMatch schemaorg:SoftwareApplication .
302
+ :AIModel a owl:Class;
303
+ rdfs:subClassOf :Software;
304
+ 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.";
305
+ skos:broadMatch schemaorg:SoftwareApplication .
306
+ :OperatingSystem a owl:Class;
307
+ rdfs:subClassOf :Software;
308
+ rdfs:comment "An operating system, or one release of it, that applications run on, such as a phone's or a computer's.";
309
+ skos:closeMatch schemaorg:OperatingSystem .
310
+ :Thread a owl:Class;
188
311
  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 .
312
+ 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.";
313
+ skos:closeMatch schemaorg:Conversation .
314
+ :instrument a owl:ObjectProperty;
315
+ 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.";
316
+ rdfs:domain :Action;
317
+ rdfs:range :Entity;
318
+ skos:exactMatch schemaorg:instrument .
319
+ :author a owl:ObjectProperty;
320
+ rdfs:comment "An agent who wrote the work, such as a person or a software assistant.";
321
+ rdfs:domain [ a owl:Class; owl:unionOf ( :CreativeWork :Message ) ];
322
+ rdfs:range :Agent;
323
+ skos:exactMatch schemaorg:author .
324
+ :inRealm a owl:ObjectProperty;
325
+ 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.";
326
+ rdfs:domain :Entity;
327
+ rdfs:range :Realm .
328
+ [] a sh:PropertyShape; sh:path :inRealm; sh:targetSubjectsOf :inRealm; sh:maxCount 1 .
329
+ :inAccount a owl:ObjectProperty;
330
+ rdfs:comment "The account that holds the entity. For an account with a service, it is the agent whose account it is, as that service knows them, such as the owner of an email account a message was delivered to. For a :FinancialAccount, it is the account itself, such as the one a :FinancialPosting is on or a :PaymentCard draws on. An entity held in several accounts is :inAccount each. Identifiers an account issues are unique within it.";
331
+ rdfs:domain :Entity;
332
+ rdfs:range [ a owl:Class; owl:unionOf ( :Agent :FinancialAccount ) ] .
204
333
 
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 .
334
+ :ConsumeAction a owl:Class;
335
+ 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.";
336
+ rdfs:subClassOf :Action;
337
+ skos:broadMatch schemaorg:ConsumeAction .
208
338
 
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 .
339
+ :ViewAction a owl:Class;
340
+ 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.";
341
+ rdfs:subClassOf :ConsumeAction;
342
+ skos:broadMatch schemaorg:ViewAction .
212
343
 
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 .
344
+ :Number a rdfs:Datatype;
345
+ rdfs:comment "A number, whole or decimal.";
346
+ owl:equivalentClass [ a rdfs:Datatype; owl:unionOf ( xsd:decimal
347
+ [ a rdfs:Datatype; owl:onDatatype xsd:double; owl:withRestrictions ( [ xsd:minExclusive "-INF"^^xsd:double ] [ xsd:maxExclusive "INF"^^xsd:double ] ) ] ) ];
348
+ skos:broadMatch schemaorg:Number .
349
+ :JSONObject a rdfs:Datatype;
350
+ rdfs:comment "A JSON object whose values are text or numbers, such as `{\"FNumber\": 1.8, \"LensModel\": \"EF50mm f/1.8 STM\"}`. The property that takes it says what its keys are. Not allowed: an array (`[1.8]`), a nested object (`{\"Lens\": {\"Model\": \"EF50mm\"}}`), or `true`, `false`, or `null` as a value." .
351
+ :startTime a owl:DatatypeProperty;
352
+ rdfs:comment "When the action started. A date gives the start at that date's precision.";
353
+ rdfs:domain :Action;
354
+ rdfs:range :DateTime;
355
+ skos:exactMatch schemaorg:startTime .
356
+ [] a sh:PropertyShape; sh:path :startTime; sh:targetSubjectsOf :startTime; sh:maxCount 1 .
357
+ :endTime a owl:DatatypeProperty;
358
+ 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.";
359
+ rdfs:domain :Action;
360
+ rdfs:range :DateTime;
361
+ skos:exactMatch schemaorg:endTime .
362
+ [] a sh:PropertyShape; sh:path :endTime; sh:targetSubjectsOf :endTime; sh:maxCount 1 .
363
+ :result a owl:ObjectProperty;
364
+ rdfs:comment "What the action produced, such as a work or a session. Seen from what it produced, the action is its `resultOf` value.";
365
+ :inverseName "resultOf";
366
+ rdfs:domain :Action;
367
+ rdfs:range :Entity;
368
+ skos:exactMatch schemaorg:result .
369
+ [] a sh:PropertyShape; sh:path :result; sh:targetSubjectsOf :result; sh:maxCount 1 .
237
370
 
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.";
371
+ :StructuredValue a owl:Class;
372
+ 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.";
373
+ skos:broadMatch schemaorg:StructuredValue .
374
+ :Location a owl:Class;
375
+ 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.";
376
+ rdfs:subClassOf :StructuredValue;
377
+ skos:closeMatch schemaorg:GeoCoordinates .
378
+ :Place a owl:Class;
379
+ 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.";
380
+ rdfs:subClassOf :Entity;
381
+ skos:broadMatch schemaorg:Place .
382
+ :Venue a owl:Class;
383
+ rdfs:comment "A specific place that people go to, such as a café, a shop, a park, a home, or an office.";
248
384
  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;
385
+ :location a owl:ObjectProperty;
386
+ rdfs:comment "Where the action happened, or where the entity or event is.";
387
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Entity :Action :Event ) ];
388
+ rdfs:range [ a owl:Class; owl:unionOf ( :Location :Place ) ];
389
+ skos:closeMatch schemaorg:location .
390
+ [] a sh:PropertyShape; sh:path :location; sh:targetSubjectsOf :location; sh:maxCount 1 .
391
+ :latitude a owl:DatatypeProperty;
257
392
  rdfs:comment "The latitude of the location.";
258
- owl:maxCardinality 1;
259
- :domainIncludes :Location;
260
- :rangeIncludes :Number .
261
- :longitude a rdf:Property;
393
+ rdfs:domain :Location;
394
+ rdfs:range :Number;
395
+ skos:exactMatch schemaorg:latitude .
396
+ [] a sh:PropertyShape; sh:path :latitude; sh:targetSubjectsOf :latitude; sh:maxCount 1 .
397
+ :longitude a owl:DatatypeProperty;
262
398
  rdfs:comment "The longitude of the location.";
263
- owl:maxCardinality 1;
264
- :domainIncludes :Location;
265
- :rangeIncludes :Number .
266
- :address a rdf:Property;
399
+ rdfs:domain :Location;
400
+ rdfs:range :Number;
401
+ skos:exactMatch schemaorg:longitude .
402
+ [] a sh:PropertyShape; sh:path :longitude; sh:targetSubjectsOf :longitude; sh:maxCount 1 .
403
+ :address a owl:DatatypeProperty;
267
404
  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 .
405
+ rdfs:domain :Location;
406
+ rdfs:range :Text;
407
+ skos:exactMatch schemaorg:address .
408
+ [] a sh:PropertyShape; sh:path :address; sh:targetSubjectsOf :address; sh:maxCount 1 .
409
+ :category a owl:DatatypeProperty;
410
+ rdfs:comment "A text label that classifies the entity, such as `breakfast` for a :Meal or `car` for a :PhysicalObject.";
411
+ rdfs:domain :Entity;
412
+ rdfs:range :Text;
413
+ skos:exactMatch schemaorg:category .
275
414
 
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.";
415
+ :MoveAction a owl:Class;
416
+ rdfs:comment "The agent moved from the :object to the :target. The subclasses name the kind of movement.";
417
+ rdfs:subClassOf :Action;
418
+ skos:closeMatch schemaorg:MoveAction .
419
+ :NavigateAction a owl:Class;
420
+ 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.";
421
+ rdfs:subClassOf :MoveAction .
422
+ :VisitAction a owl:Class;
423
+ rdfs:comment "The agent stayed at the :object place from :startTime to :endTime. Travel between stays is a :TravelAction.";
281
424
  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.";
284
- 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 .
425
+ :TravelAction a owl:Class;
426
+ rdfs:comment "The agent travelled from the :object place to the :target place, from :startTime to :endTime. Its :result is the :Journey.";
427
+ rdfs:subClassOf :Action;
428
+ skos:broadMatch schemaorg:TravelAction .
429
+ :Journey a owl:Class;
430
+ 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.";
431
+ rdfs:subClassOf :Session .
432
+ :travelMode a owl:DatatypeProperty;
433
+ rdfs:comment "How the journey was made, such as `walking`, `cycling`, or `metro`.";
434
+ rdfs:domain :Journey;
435
+ rdfs:range :Text .
436
+ [] a sh:PropertyShape; sh:path :travelMode; sh:targetSubjectsOf :travelMode; sh:maxCount 1 .
437
+ :distance a owl:DatatypeProperty;
438
+ rdfs:comment "The distance the journey covered, in meters.";
439
+ rdfs:domain :Journey;
440
+ rdfs:range :Number;
441
+ skos:closeMatch schemaorg:distance .
442
+ [] a sh:PropertyShape; sh:path :distance; sh:targetSubjectsOf :distance; sh:maxCount 1 .
443
+ :path a owl:DatatypeProperty;
444
+ rdfs:comment "The recorded route of the journey.";
445
+ rdfs:domain :Journey;
446
+ rdfs:range :Text .
447
+ [] a sh:PropertyShape; sh:path :path; sh:targetSubjectsOf :path; sh:maxCount 1 .
300
448
 
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.";
449
+ :CreativeWork a owl:Class;
450
+ rdfs:comment "A work made by an agent, such as a text, a recording, a post, a message, or a document.";
451
+ rdfs:subClassOf :Entity;
452
+ skos:broadMatch schemaorg:CreativeWork .
453
+ :Channel a owl:Class;
454
+ 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
455
  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.";
456
+ :Organization a owl:Class;
457
+ rdfs:comment "A group of people acting as one, such as a company, an institution, a club, or a school.";
309
458
  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.";
459
+ skos:exactMatch schemaorg:Organization .
460
+ :member a owl:ObjectProperty;
461
+ 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
462
  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.";
463
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Channel :Organization ) ];
464
+ rdfs:range [ a owl:Class; owl:unionOf ( :Agent :Person ) ];
465
+ skos:exactMatch schemaorg:member .
466
+ :inReplyTo a owl:ObjectProperty;
467
+ rdfs:comment "The message this message replies to.";
318
468
  rdfs:subPropertyOf :relation;
319
- :domainIncludes :Message;
320
- :rangeIncludes :Message .
469
+ rdfs:domain :Message;
470
+ rdfs:range :Message .
321
471
 
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.";
472
+ :Event a owl:Class;
473
+ 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.";
474
+ rdfs:subClassOf :Entity;
475
+ skos:broadMatch schemaorg:Event .
476
+ :Calendar a owl:Class;
477
+ rdfs:subClassOf :Collection;
478
+ 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." .
479
+ :attendee a owl:ObjectProperty;
480
+ rdfs:comment "An agent invited to the event, such as a guest on a calendar entry, whatever their reply.";
481
+ rdfs:subPropertyOf :involvement;
482
+ rdfs:domain :Event;
483
+ rdfs:range :Agent;
484
+ skos:closeMatch schemaorg:attendee .
485
+ :scheduledStart a owl:DatatypeProperty;
486
+ 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.";
487
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Event :Session ) ];
488
+ rdfs:range :DateTime;
489
+ skos:closeMatch schemaorg:startDate .
490
+ [] a sh:PropertyShape; sh:path :scheduledStart; sh:targetSubjectsOf :scheduledStart; sh:maxCount 1 .
491
+ :scheduledEnd a owl:DatatypeProperty;
492
+ 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.";
493
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Event :Session ) ];
494
+ rdfs:range :DateTime;
495
+ skos:closeMatch schemaorg:endDate .
496
+ [] a sh:PropertyShape; sh:path :scheduledEnd; sh:targetSubjectsOf :scheduledEnd; sh:maxCount 1 .
497
+ :relation a owl:ObjectProperty;
498
+ rdfs:comment "Another entity that this entity is linked to.";
335
499
  :abstract true;
336
- :rangeIncludes :Entity .
337
- :involvement a rdf:Property;
338
- rdfs:comment "An agent involved in an entity as addressee, attendee, or member.";
500
+ rdfs:range :Entity .
501
+ :involvement a owl:ObjectProperty;
502
+ 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
503
  rdfs:subPropertyOf :relation;
340
- :rangeIncludes :Agent .
504
+ :abstract true;
505
+ rdfs:range :Agent .
341
506
 
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.";
507
+ :InteractAction a owl:Class;
508
+ rdfs:comment "The agent engaged with others, such as by communicating with them or following them.";
509
+ rdfs:subClassOf :Action;
510
+ skos:broadMatch schemaorg:InteractAction .
511
+ :CommunicateAction a owl:Class;
512
+ rdfs:comment "The agent conveyed something to others, such as by sending a message, making a call, or checking in.";
513
+ rdfs:subClassOf :InteractAction;
514
+ skos:broadMatch schemaorg:CommunicateAction .
515
+ :CallAction a owl:Class;
516
+ rdfs:comment "The agent made a phone or video call. Its :result is the :CallSession.";
350
517
  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.";
518
+ :ShareAction a owl:Class;
519
+ rdfs:comment "The agent shared the :object with others, such as by sending a photo in a conversation.";
520
+ rdfs:subClassOf :CommunicateAction;
521
+ skos:exactMatch schemaorg:ShareAction .
522
+ :Session a owl:Class;
523
+ rdfs:comment "A period of one person's activity or experience, such as a night's sleep, a logged block of work, a trip across town, or their time on a call. The action that records it gives when it actually happened. Others who took part have sessions of their own. Something they shared, such as a concert or a meeting, is an :Event that each session :isPartOf. Its :scheduledStart and :scheduledEnd give a planned period.";
353
524
  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.";
525
+ :CallSession a owl:Class;
526
+ rdfs:comment "One person's time on a phone or video call. It is the :result of a :CallAction. Its :recipient is who received the call. A group call's session :isPartOf a :Channel whose :member values are the participants. A missed call has zero length.";
527
+ rdfs:subClassOf :Session .
528
+ :SleepAction a owl:Class;
529
+ rdfs:comment "The agent slept from :startTime to :endTime, such as for a night or a nap, including any brief wakings. Its :result is the :SleepSession.";
530
+ rdfs:subClassOf :ExperienceAction .
531
+ :SleepSession a owl:Class;
532
+ rdfs:comment "A period of sleep, such as a night or a nap. It is the :result of a :SleepAction, which gives its start and end. Each tracked stage of it is a :SleepStage that :isStageOf it.";
533
+ rdfs:subClassOf :Session .
534
+ :SleepStage a owl:Class;
535
+ rdfs:comment "A stretch of one stage of sleep, such as deep sleep, that :isStageOf a :SleepSession. It is the :result of an :ExperienceAction, which gives its start and end. Its :category is the stage: `awake`, `light`, `deep`, `REM`, or `asleep` when the stage is not known. Not allowed: another name for one of these, such as `core` for light sleep.";
356
536
  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;
537
+ :EatAction a owl:Class;
538
+ rdfs:comment "The agent ate the :object, a :Meal. Where they ate is the action's :location.";
539
+ rdfs:subClassOf :ConsumeAction;
540
+ skos:broadMatch schemaorg:EatAction .
541
+ :DrinkAction a owl:Class;
362
542
  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.";
543
+ rdfs:subClassOf :ConsumeAction;
544
+ skos:broadMatch schemaorg:DrinkAction .
545
+ :Meal a owl:Class;
546
+ rdfs:comment "A meal or snack that the subject ate. Its :category is its slot, such as breakfast, lunch, or dinner.";
366
547
  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.";
372
- 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.";
548
+
549
+ :MeasureAction a owl:Class;
550
+ rdfs:comment "The agent took a measurement of the :object, such as a person's heart rate or weight. Each value measured is a property of the :object, such as its :heartRate. A value measured over a period, such as a daily resting heart rate or the steps taken in a few minutes, has a :startTime and :endTime.";
375
551
  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.";
552
+ :heartRate a owl:DatatypeProperty;
553
+ :metric "gauge";
554
+ :unit "/min";
555
+ rdfs:comment "The heart rate, in beats per minute.";
556
+ rdfs:domain :Person;
557
+ rdfs:range :Number .
558
+ [] a sh:PropertyShape; sh:path :heartRate; sh:targetSubjectsOf :heartRate; sh:maxCount 1 .
559
+ :restingHeartRate a owl:DatatypeProperty;
560
+ :metric "gauge";
561
+ :unit "/min";
562
+ rdfs:comment "The heart rate at rest, in beats per minute.";
563
+ rdfs:domain :Person;
564
+ rdfs:range :Number .
565
+ [] a sh:PropertyShape; sh:path :restingHeartRate; sh:targetSubjectsOf :restingHeartRate; sh:maxCount 1 .
566
+ :walkingHeartRate a owl:DatatypeProperty;
567
+ :metric "gauge";
568
+ :unit "/min";
569
+ rdfs:comment "The average heart rate while walking, in beats per minute.";
570
+ rdfs:domain :Person;
571
+ rdfs:range :Number .
572
+ [] a sh:PropertyShape; sh:path :walkingHeartRate; sh:targetSubjectsOf :walkingHeartRate; sh:maxCount 1 .
573
+ :heartRateVariabilitySdnn a owl:DatatypeProperty;
574
+ :metric "gauge";
575
+ :unit "ms";
576
+ rdfs:comment "The variation in time between heartbeats as SDNN: the standard deviation of the intervals between beats over the measurement's period, in milliseconds. It grows with the length of the period, so values over periods of different lengths don't compare. Other measures of the variation, such as RMSSD, differ from it.";
577
+ rdfs:domain :Person;
578
+ rdfs:range :Number .
579
+ [] a sh:PropertyShape; sh:path :heartRateVariabilitySdnn; sh:targetSubjectsOf :heartRateVariabilitySdnn; sh:maxCount 1 .
580
+ :heartRateRecovery a owl:DatatypeProperty;
581
+ :metric "gauge";
582
+ :unit "/min";
583
+ rdfs:comment "How far the heart rate fell in the minute after exercise, in beats per minute.";
584
+ rdfs:domain :Person;
585
+ rdfs:range :Number .
586
+ [] a sh:PropertyShape; sh:path :heartRateRecovery; sh:targetSubjectsOf :heartRateRecovery; sh:maxCount 1 .
587
+ :heartRhythm a owl:DatatypeProperty;
588
+ rdfs:comment "The rhythm of the heart, as an electrocardiogram classifies it, such as `sinus rhythm` or `atrial fibrillation`.";
589
+ rdfs:domain :Person;
590
+ rdfs:range :Text .
591
+ [] a sh:PropertyShape; sh:path :heartRhythm; sh:targetSubjectsOf :heartRhythm; sh:maxCount 1 .
592
+ :respiratoryRate a owl:DatatypeProperty;
593
+ :metric "gauge";
594
+ :unit "/min";
595
+ rdfs:comment "The breathing rate, in breaths per minute.";
596
+ rdfs:domain :Person;
597
+ rdfs:range :Number .
598
+ [] a sh:PropertyShape; sh:path :respiratoryRate; sh:targetSubjectsOf :respiratoryRate; sh:maxCount 1 .
599
+ :oxygenSaturation a owl:DatatypeProperty;
600
+ :metric "gauge";
601
+ :unit "1";
602
+ rdfs:comment "The fraction of hemoglobin in the blood that carries oxygen, from `0` to `1`, such as `0.97`.";
603
+ rdfs:domain :Person;
604
+ rdfs:range :Number .
605
+ [] a sh:PropertyShape; sh:path :oxygenSaturation; sh:targetSubjectsOf :oxygenSaturation; sh:maxCount 1 .
606
+ :sleepingWristTemperature a owl:DatatypeProperty;
607
+ :metric "gauge";
608
+ :unit "Cel";
609
+ rdfs:comment "The skin temperature at the wrist during sleep, in degrees Celsius.";
610
+ rdfs:domain :Person;
611
+ rdfs:range :Number .
612
+ [] a sh:PropertyShape; sh:path :sleepingWristTemperature; sh:targetSubjectsOf :sleepingWristTemperature; sh:maxCount 1 .
613
+ :weight a owl:DatatypeProperty;
614
+ :metric "gauge";
615
+ :unit "kg";
616
+ rdfs:comment "The person's body weight, as a mass in kilograms.";
617
+ rdfs:domain :Person;
618
+ rdfs:range :Number;
619
+ skos:closeMatch schemaorg:weight .
620
+ [] a sh:PropertyShape; sh:path :weight; sh:targetSubjectsOf :weight; sh:maxCount 1 .
621
+ :systolicBloodPressure a owl:DatatypeProperty;
622
+ :metric "gauge";
623
+ :unit "mm[Hg]";
624
+ rdfs:comment "The blood pressure while the heart beats, in millimeters of mercury.";
625
+ rdfs:domain :Person;
626
+ rdfs:range :Number .
627
+ [] a sh:PropertyShape; sh:path :systolicBloodPressure; sh:targetSubjectsOf :systolicBloodPressure; sh:maxCount 1 .
628
+ :diastolicBloodPressure a owl:DatatypeProperty;
629
+ :metric "gauge";
630
+ :unit "mm[Hg]";
631
+ rdfs:comment "The blood pressure between heartbeats, in millimeters of mercury.";
632
+ rdfs:domain :Person;
633
+ rdfs:range :Number .
634
+ [] a sh:PropertyShape; sh:path :diastolicBloodPressure; sh:targetSubjectsOf :diastolicBloodPressure; sh:maxCount 1 .
635
+ :stepCount a owl:DatatypeProperty;
636
+ :metric "sum";
637
+ :unit "{steps}";
638
+ rdfs:comment "The number of steps taken.";
639
+ rdfs:domain :Person;
640
+ rdfs:range :Number .
641
+ [] a sh:PropertyShape; sh:path :stepCount; sh:targetSubjectsOf :stepCount; sh:maxCount 1 .
642
+ :activeEnergyBurned a owl:DatatypeProperty;
643
+ :metric "sum";
644
+ :unit "kcal";
645
+ rdfs:comment "The energy burned by moving, beyond what the body burns at rest, in kilocalories.";
646
+ rdfs:domain :Person;
647
+ rdfs:range :Number .
648
+ [] a sh:PropertyShape; sh:path :activeEnergyBurned; sh:targetSubjectsOf :activeEnergyBurned; sh:maxCount 1 .
649
+ :Post a owl:Class;
650
+ 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.";
651
+ rdfs:subClassOf :CreativeWork;
652
+ skos:broadMatch schemaorg:SocialMediaPosting .
653
+ :PublishAction a owl:Class;
654
+ rdfs:comment "The agent published or released a work, such as a post, a video, or a pull request. Its :result is the work, and the work's :datePublished is when this happened.";
655
+ rdfs:subClassOf :CreateAction .
656
+ :CreateAction a owl:Class;
657
+ rdfs:comment "The agent brought a work into being. Its :result is the work. The subclasses name the kind of making.";
658
+ rdfs:subClassOf :Action;
659
+ skos:broadMatch schemaorg:CreateAction .
660
+ :RecordAction a owl:Class;
661
+ 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.";
662
+ rdfs:subClassOf :CreateAction .
663
+ :PhotographAction a owl:Class;
664
+ rdfs:comment "The agent took a photograph. Its :result is the :ImageObject.";
665
+ rdfs:subClassOf :CreateAction;
666
+ skos:exactMatch schemaorg:PhotographAction .
667
+ :ScreenshotAction a owl:Class;
668
+ rdfs:comment "The agent captured what a screen showed, such as a web page or an app. Its :result is the :ImageObject. The image is a :snapshotOf the resource it shows, and the :object can name the page it was captured from.";
669
+ rdfs:subClassOf :CreateAction .
670
+ :LikeAction a owl:Class;
671
+ rdfs:comment "The agent liked the :object.";
672
+ rdfs:subClassOf :ReactAction;
673
+ skos:broadMatch schemaorg:LikeAction .
674
+ :UnlikeAction a owl:Class;
675
+ rdfs:comment "The agent withdrew a like of the :object, such as by removing a favorite.";
378
676
  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).";
677
+ :likes a owl:ObjectProperty;
678
+ rdfs:comment "An entity the agent likes. A :LikeAction adds an entity to the agent's likes, and an :UnlikeAction removes it. A source can also give the agent's likes directly.";
679
+ rdfs:subPropertyOf :relation;
680
+ :assertedBy :LikeAction;
681
+ :retractedBy :UnlikeAction;
682
+ :runPredicate :liked;
683
+ rdfs:domain :Agent;
684
+ rdfs:range :Entity .
685
+ :liked a :DerivedProperty;
686
+ rdfs:comment "An agent's standing like for the object, opened by LikeAction and closed by UnlikeAction. The writable relationship is likes; this derived query name preserves the object-and-agent view of the action history." .
687
+ :ReactAction a owl:Class;
688
+ 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.";
689
+ rdfs:subClassOf :AssessAction;
690
+ skos:broadMatch schemaorg:ReactAction .
691
+ :AssessAction a owl:Class;
692
+ rdfs:comment "The agent took a stance on the :object, such as by liking, reacting to, rating, or reviewing it.";
693
+ rdfs:subClassOf :Action;
694
+ skos:broadMatch schemaorg:AssessAction .
695
+ :references a owl:ObjectProperty;
696
+ rdfs:comment "An entity this one refers to, such as one it @mentions, a page it links to, or a work it cites.";
387
697
  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).";
698
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Entity :CreativeWork :Session ) ];
699
+ rdfs:range :Entity .
700
+ :mentions a owl:ObjectProperty;
701
+ rdfs:comment "An entity this one points to, such as by an @mention or a link.";
394
702
  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.";
703
+ rdfs:range :Entity;
704
+ skos:exactMatch schemaorg:mentions .
705
+ :FindAction a owl:Class;
706
+ rdfs:comment "The agent searched on a platform. The :object is the :Query they entered.";
707
+ rdfs:subClassOf :Action;
708
+ skos:broadMatch schemaorg:SearchAction .
709
+ :Query a owl:Class;
710
+ rdfs:comment "A search query as it was entered. Its :body is the query's text.";
401
711
  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.";
712
+ :RespondAction a owl:Class;
713
+ 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
714
  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.";
715
+ :Response a owl:Class;
716
+ 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
717
  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.";
718
+ :Comment a owl:Class;
719
+ rdfs:comment "A response written in prose. Its :body is the text.";
720
+ rdfs:subClassOf :Response;
721
+ skos:broadMatch schemaorg:Comment .
722
+ :FollowAction a owl:Class;
723
+ rdfs:comment "The agent started following the :object, such as an account, a feed, or a collection.";
724
+ rdfs:subClassOf :InteractAction;
725
+ skos:broadMatch schemaorg:FollowAction .
726
+ :OrganizeAction a owl:Class;
727
+ rdfs:comment "The agent arranged or planned things, such as by saving, bookmarking, or scheduling.";
728
+ rdfs:subClassOf :Action;
729
+ skos:broadMatch schemaorg:OrganizeAction .
730
+ :BookmarkAction a owl:Class;
731
+ 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.";
732
+ rdfs:subClassOf :OrganizeAction;
733
+ skos:broadMatch schemaorg:BookmarkAction .
734
+ :sourceFormat a owl:DatatypeProperty;
735
+ 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.";
736
+ rdfs:domain :CreativeWork;
737
+ rdfs:range :Text .
738
+ [] a sh:PropertyShape; sh:path :sourceFormat; sh:targetSubjectsOf :sourceFormat; sh:maxCount 1 .
739
+ :visibility a owl:DatatypeProperty;
740
+ 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`).";
741
+ rdfs:domain :CreativeWork;
742
+ rdfs:range :Text .
743
+ [] a sh:PropertyShape; sh:path :visibility; sh:targetSubjectsOf :visibility; sh:maxCount 1 .
744
+ :ListenAction a owl:Class;
745
+ rdfs:comment "The agent listened to the :object, such as a recording or a podcast episode.";
746
+ rdfs:subClassOf :ConsumeAction;
747
+ skos:broadMatch schemaorg:ListenAction .
748
+ :AddAction a owl:Class;
749
+ rdfs:comment "The agent added the :object to the :target, such as a track to a playlist or a work to a collection.";
750
+ rdfs:subClassOf :UpdateAction;
751
+ skos:broadMatch schemaorg:AddAction .
752
+ :MusicRecording a owl:Class;
753
+ rdfs:comment "A recording of a piece of music, such as a track on an album.";
754
+ rdfs:subClassOf :CreativeWork;
755
+ skos:broadMatch schemaorg:MusicRecording .
756
+ :MusicAlbum a owl:Class;
757
+ rdfs:comment "A released collection of music recordings.";
758
+ rdfs:subClassOf :CreativeWork;
759
+ skos:broadMatch schemaorg:MusicAlbum .
760
+ :PerformingGroup a owl:Class;
761
+ rdfs:comment "An organization that performs, such as a band, a troupe, or an ensemble.";
762
+ rdfs:subClassOf :Organization;
763
+ skos:broadMatch schemaorg:PerformingGroup .
764
+ :MusicGroup a owl:Class;
765
+ 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.";
766
+ rdfs:subClassOf :PerformingGroup;
767
+ skos:broadMatch schemaorg:MusicGroup .
768
+ :PodcastEpisode a owl:Class;
769
+ rdfs:comment "One episode of a podcast.";
770
+ rdfs:subClassOf :CreativeWork;
771
+ skos:broadMatch schemaorg:PodcastEpisode .
772
+ :PodcastSeries a owl:Class;
773
+ rdfs:comment "A podcast, a series of episodes published through a :webFeed by a :publisher.";
774
+ rdfs:subClassOf :CreativeWork;
775
+ skos:broadMatch schemaorg:PodcastSeries .
776
+ :attribution a owl:ObjectProperty;
777
+ rdfs:comment "An agent responsible for bringing a work into being.";
454
778
  rdfs:subPropertyOf :relation;
455
779
  :abstract true;
456
- :rangeIncludes :Agent .
457
- :performer a rdf:Property;
780
+ rdfs:range :Agent .
781
+ :performer a owl:ObjectProperty;
458
782
  :propagatesEncounter true;
459
783
  rdfs:comment "An agent who performed or realized an existing work.";
460
784
  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.";
785
+ rdfs:range :Agent;
786
+ skos:closeMatch schemaorg:performer .
787
+ :composition a owl:ObjectProperty;
788
+ rdfs:comment "A structural relation between a part and its whole, in either direction.";
464
789
  rdfs:subPropertyOf :relation;
465
790
  :abstract true;
466
- :rangeIncludes :Entity .
467
- :partOf a rdf:Property;
791
+ rdfs:range :Entity .
792
+ :partOf a owl:ObjectProperty;
468
793
  :propagatesEncounter true;
469
- rdfs:comment "This entity is a component of the referenced entity.";
794
+ rdfs:comment "A work that this entity is a component of.";
470
795
  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.";
796
+ rdfs:range :CreativeWork .
797
+ :emblem a owl:ObjectProperty;
798
+ 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
799
  rdfs:subPropertyOf :relation;
475
- owl:maxCardinality 1;
476
- :domainIncludes :Entity;
477
- :rangeIncludes :ImageObject .
478
- :artist a rdf:Property;
800
+ rdfs:domain :Entity;
801
+ rdfs:range :ImageObject;
802
+ skos:broadMatch schemaorg:image .
803
+ [] a sh:PropertyShape; sh:path :emblem; sh:targetSubjectsOf :emblem; sh:maxCount 1 .
804
+ :artist a owl:ObjectProperty;
479
805
  :propagatesEncounter true;
480
- rdfs:comment "The artist who created or performed the musical work.";
806
+ rdfs:comment "The musical act that created or performed the recording or album.";
481
807
  rdfs:subPropertyOf :performer;
482
- :domainIncludes :MusicRecording,
483
- :MusicAlbum,
484
- :AudioObject;
485
- :rangeIncludes :MusicGroup .
486
- :inAlbum a rdf:Property;
808
+ rdfs:domain [ a owl:Class; owl:unionOf ( :AudioObject :MusicRecording :MusicAlbum ) ];
809
+ rdfs:range :MusicGroup;
810
+ skos:exactMatch schemaorg:byArtist .
811
+ :inAlbum a owl:ObjectProperty;
812
+ :propagatesEncounter true;
813
+ rdfs:comment "The album the recording appears on.";
814
+ rdfs:subPropertyOf :partOf;
815
+ rdfs:domain :MusicRecording;
816
+ rdfs:range :MusicAlbum;
817
+ skos:exactMatch schemaorg:inAlbum .
818
+ [] a sh:PropertyShape; sh:path :inAlbum; sh:targetSubjectsOf :inAlbum; sh:maxCount 1 .
819
+ :series a owl:ObjectProperty;
487
820
  :propagatesEncounter true;
488
- rdfs:comment "The album that contains this musical recording.";
489
- owl:maxCardinality 1;
821
+ rdfs:comment "The series that this work is one of, such as the podcast an episode belongs to or the series a book was published in.";
490
822
  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.";
823
+ rdfs:domain :CreativeWork;
824
+ rdfs:range :CreativeWork;
825
+ skos:closeMatch schemaorg:partOfSeries .
826
+ :webFeed a owl:DatatypeProperty;
827
+ rdfs:comment "The URL of an RSS or Atom feed that publishes the work's items, such as a podcast's episodes or a blog's posts.";
828
+ rdfs:domain :CreativeWork;
829
+ rdfs:range :URL;
830
+ skos:exactMatch schemaorg:webFeed .
831
+ :duration a owl:DatatypeProperty;
832
+ rdfs:comment "How long the recording or media lasts.";
833
+ rdfs:domain [ a owl:Class; owl:unionOf ( :AudioObject :VideoObject :MusicRecording :PodcastEpisode ) ];
834
+ rdfs:range :Text;
835
+ skos:exactMatch schemaorg:duration .
836
+ [] a sh:PropertyShape; sh:path :duration; sh:targetSubjectsOf :duration; sh:maxCount 1 .
837
+ :genre a owl:DatatypeProperty;
838
+ rdfs:comment "A genre of the work.";
839
+ rdfs:domain [ a owl:Class; owl:unionOf ( :CreativeWork :AudioObject ) ];
840
+ rdfs:range :Text;
841
+ skos:exactMatch schemaorg:genre .
842
+ :datePublished a owl:DatatypeProperty;
843
+ rdfs:comment "When the work was published or released. It is when the work's :PublishAction occurred.";
844
+ skos:exactMatch schemaorg:datePublished;
845
+ rdfs:domain :CreativeWork;
846
+ rdfs:range :DateTime .
847
+ [] a sh:PropertyShape; sh:path :datePublished; sh:targetSubjectsOf :datePublished; sh:maxCount 1 .
848
+ :target a owl:ObjectProperty;
849
+ 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.";
850
+ rdfs:domain :Action;
851
+ rdfs:range :Entity .
852
+ [] a sh:PropertyShape; sh:path :target; sh:targetSubjectsOf :target; sh:maxCount 1 .
853
+ :ExperienceAction a owl:Class;
854
+ 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
855
  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.";
856
+ :JoinAction a owl:Class;
857
+ rdfs:comment "The subject joined the :object organization or realm, starting a membership. Its :result can be the :Tenure, :Membership, or :Enrollment that began.";
858
+ rdfs:subClassOf :ExperienceAction;
859
+ skos:broadMatch schemaorg:JoinAction .
860
+ :LeaveAction a owl:Class;
861
+ rdfs:comment "The subject left the :object organization or realm, ending a membership that a :JoinAction started.";
862
+ rdfs:subClassOf :ExperienceAction;
863
+ skos:broadMatch schemaorg:LeaveAction .
864
+ :Tenure a owl:Class;
865
+ 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
866
  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.";
867
+ :Enrollment a owl:Class;
868
+ 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
869
  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.";
870
+ :Membership a owl:Class;
871
+ 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
872
  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.";
873
+ :Relationship a owl:Class;
874
+ rdfs:comment "A period of romantic partnership. It is the :result of an :ExperienceAction, which gives its start and end.";
538
875
  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 .
876
+ :role a owl:DatatypeProperty;
877
+ rdfs:comment "The role or title held in a :Tenure or :Membership, or the kind of :Relationship.";
878
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Tenure :Membership :Relationship ) ];
879
+ rdfs:range :Text .
880
+ [] a sh:PropertyShape; sh:path :role; sh:targetSubjectsOf :role; sh:maxCount 1 .
881
+ :degree a owl:DatatypeProperty;
882
+ rdfs:comment "The degree or program pursued.";
883
+ rdfs:domain :Enrollment;
884
+ rdfs:range :Text .
885
+ [] a sh:PropertyShape; sh:path :degree; sh:targetSubjectsOf :degree; sh:maxCount 1 .
886
+ :Intangible a owl:Class;
887
+ rdfs:comment "An entity that is neither physical nor a creative work, such as a term, a selector, or a category.";
888
+ rdfs:subClassOf :Entity;
889
+ skos:broadMatch schemaorg:Intangible .
890
+ :DefinedTerm a owl:Class;
891
+ rdfs:comment "A word or code from a vocabulary that classifies other entities, such as a tag or a category.";
892
+ rdfs:subClassOf :Intangible;
893
+ skos:broadMatch schemaorg:DefinedTerm .
894
+ :WatchAction a owl:Class;
895
+ rdfs:comment "The agent watched the :object, such as a video, a film, or a show.";
896
+ rdfs:subClassOf :ConsumeAction;
897
+ skos:broadMatch schemaorg:WatchAction .
898
+ :width a owl:DatatypeProperty;
899
+ rdfs:comment "The width of the image or video, in pixels.";
900
+ rdfs:domain [ a owl:Class; owl:unionOf ( :ImageObject :VideoObject ) ];
901
+ rdfs:range :Number;
902
+ skos:closeMatch schemaorg:width .
903
+ [] a sh:PropertyShape; sh:path :width; sh:targetSubjectsOf :width; sh:maxCount 1 .
904
+ :height a owl:DatatypeProperty;
905
+ rdfs:comment "The height of the image or video, in pixels.";
906
+ rdfs:domain [ a owl:Class; owl:unionOf ( :ImageObject :VideoObject ) ];
907
+ rdfs:range :Number;
908
+ skos:closeMatch schemaorg:height .
909
+ [] a sh:PropertyShape; sh:path :height; sh:targetSubjectsOf :height; sh:maxCount 1 .
570
910
 
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.";
911
+ :AnnotateAction a owl:Class;
912
+ 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
913
  rdfs:subClassOf :CreateAction .
574
914
 
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).";
915
+ :DeviceSession a owl:Class;
916
+ 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
917
  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.";
918
+ :PhysicalObject a owl:Class;
919
+ rdfs:comment "A physical object the subject owns or uses, such as a device, a vehicle, or a musical instrument. Its :model is its make and model. The subclasses name the roles an object plays in actions, such as :Device.";
580
920
  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.";
921
+ :Device a owl:Class;
922
+ rdfs:comment "A physical computing device the subject runs software on, such as a computer, a phone, a tablet, or a watch. It is the :instrument of the actions done with it, such as an :ExecuteAction or a :MeasureAction. It names a role, not a kind, so its :model says what kind of device it is. It is :inRealm the logical machine, which can outlive the hardware.";
583
923
  rdfs:subClassOf :PhysicalObject .
584
- :Directory a rdfs:Class;
924
+ :ProductModel a owl:Class;
925
+ 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.";
926
+ rdfs:subClassOf :Entity;
927
+ skos:closeMatch schemaorg:ProductModel .
928
+ :Directory a owl:Class;
585
929
  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.";
930
+ 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." .
931
+ :workingDirectory a owl:ObjectProperty;
932
+ 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.";
933
+ rdfs:domain :Session;
934
+ rdfs:range :Directory .
935
+ [] a sh:PropertyShape; sh:path :workingDirectory; sh:targetSubjectsOf :workingDirectory; sh:maxCount 1 .
936
+ :subject a owl:ObjectProperty;
937
+ rdfs:comment "The resource the session was spent on, such as the document, page, or media in focus.";
594
938
  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 .
939
+ rdfs:domain :Session;
940
+ rdfs:range :Entity .
941
+ :model a owl:DatatypeProperty;
942
+ rdfs:comment "The make and model of the object, such as `Mac17,9` or `iPhone15,2`. It is not the object's :name.";
943
+ rdfs:domain :PhysicalObject;
944
+ rdfs:range :Text;
945
+ skos:exactMatch schemaorg:model .
946
+ [] a sh:PropertyShape; sh:path :model; sh:targetSubjectsOf :model; sh:maxCount 1 .
602
947
 
603
- :CheckInAction a rdfs:Class;
604
- rdfs:comment "The agent announced their presence at the :object, a :Venue, at :timestamp.";
605
- rdfs:subClassOf :CommunicateAction .
948
+ :CheckInAction a owl:Class;
949
+ rdfs:comment "The agent announced that they were at the :object, a :Venue.";
950
+ rdfs:subClassOf :CommunicateAction;
951
+ skos:broadMatch schemaorg:CheckInAction .
606
952
 
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.";
953
+ :Book a owl:Class;
954
+ rdfs:comment "A book, in one edition.";
955
+ rdfs:subClassOf :CreativeWork;
956
+ skos:broadMatch schemaorg:Book .
957
+ :pageCount a owl:DatatypeProperty;
958
+ rdfs:comment "The number of pages in the document or edition.";
959
+ rdfs:domain [ a owl:Class; owl:unionOf ( :DocumentObject :Book ) ];
960
+ rdfs:range :Number;
961
+ skos:exactMatch schemaorg:numberOfPages .
962
+ [] a sh:PropertyShape; sh:path :pageCount; sh:targetSubjectsOf :pageCount; sh:maxCount 1 .
963
+ :publisher a owl:ObjectProperty;
964
+ rdfs:comment "The organization that published the work.";
618
965
  rdfs:subPropertyOf :creator;
619
- :domainIncludes :CreativeWork;
620
- :rangeIncludes :Organization .
621
- :creator a rdf:Property;
966
+ rdfs:domain :CreativeWork;
967
+ rdfs:range :Organization;
968
+ skos:exactMatch schemaorg:publisher .
969
+ :creator a owl:ObjectProperty;
622
970
  :propagatesEncounter true;
623
- rdfs:comment "An agent who brought the work into existence (authored, produced, or released it).";
971
+ rdfs:comment "An agent who brought the work into being, such as by writing, producing, or releasing it.";
624
972
  rdfs:subPropertyOf :attribution;
625
- :domainIncludes :CreativeWork;
626
- :rangeIncludes :Agent .
973
+ rdfs:domain :CreativeWork;
974
+ rdfs:range :Agent;
975
+ skos:exactMatch schemaorg:creator .
627
976
 
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.";
977
+ :ReadAction a owl:Class;
978
+ rdfs:comment "The agent read the :object, such as a book, an article, or a document.";
979
+ rdfs:subClassOf :ConsumeAction;
980
+ skos:broadMatch schemaorg:ReadAction .
981
+ :QuoteAction a owl:Class;
982
+ 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
983
  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 .
984
+ :Quotation a owl:Class;
985
+ 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.";
986
+ rdfs:subClassOf :CreativeWork;
987
+ skos:broadMatch schemaorg:Quotation .
637
988
 
638
- :Category a rdfs:Class;
639
- rdfs:comment "A classification drawn from a fixed set of kinds, as distinct from a free-form :Tag.";
989
+ :Category a owl:Class;
990
+ rdfs:comment "A classification from a fixed set of kinds. A free-form label is a :Tag.";
640
991
  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.";
992
+ :Selector a owl:Class;
993
+ 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
994
  rdfs:subClassOf :Intangible .
644
- :PageSelector a rdfs:Class;
645
- rdfs:comment "A position in a paginated document, addressed by page number.";
995
+ :PageSelector a owl:Class;
996
+ rdfs:comment "A position in a paginated document, given by page number.";
646
997
  rdfs:subClassOf :Selector .
647
- :EpubCfiSelector a rdfs:Class;
648
- rdfs:comment "A position in an EPUB, addressed by a Canonical Fragment Identifier.";
998
+ :EpubCfiSelector a owl:Class;
999
+ rdfs:comment "A position in an EPUB, given by a Canonical Fragment Identifier.";
649
1000
  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.";
1001
+ :Article a owl:Class;
1002
+ 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.";
1003
+ rdfs:subClassOf :CreativeWork;
1004
+ skos:broadMatch schemaorg:Article .
1005
+ :Note a owl:Class;
1006
+ rdfs:comment "A text that its author keeps and edits, such as a note in a notes app or a page in a personal wiki. Its :body is its text. A document file, such as a PDF or an attachment, is a :DocumentObject.";
1007
+ rdfs:subClassOf :CreativeWork;
1008
+ skos:closeMatch schemaorg:NoteDigitalDocument .
1009
+ :snapshotOf a owl:ObjectProperty;
1010
+ 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.";
1011
+ rdfs:subPropertyOf :relation;
1012
+ rdfs:domain :MediaObject;
1013
+ rdfs:range :Entity .
1014
+ :color a owl:DatatypeProperty;
1015
+ rdfs:comment "A color associated with the entity, as a hex code or a name, such as `#ffcc00` or `yellow`.";
1016
+ rdfs:domain [ a owl:Class; owl:unionOf ( :Tag :Quotation :Category ) ];
1017
+ rdfs:range :Text;
1018
+ skos:closeMatch schemaorg:color .
1019
+ [] a sh:PropertyShape; sh:path :color; sh:targetSubjectsOf :color; sh:maxCount 1 .
1020
+ :annotationStyle a owl:DatatypeProperty;
1021
+ rdfs:comment "The kind of visual annotation, such as `highlight`, `underline`, `strikethrough`, `squiggly`, `box`, or `margin`.";
1022
+ rdfs:domain :Quotation;
1023
+ rdfs:range :Text .
1024
+ [] a sh:PropertyShape; sh:path :annotationStyle; sh:targetSubjectsOf :annotationStyle; sh:maxCount 1 .
1025
+ :selector a owl:ObjectProperty;
1026
+ rdfs:comment "A position of the quotation in its work.";
1027
+ rdfs:domain :Quotation;
1028
+ rdfs:range :Selector .
1029
+ :selectorValue a owl:DatatypeProperty;
1030
+ rdfs:comment "The position as machines read it, such as an EPUB CFI, a media fragment, or a page number.";
1031
+ rdfs:domain :Selector;
1032
+ rdfs:range :Text .
1033
+ [] a sh:PropertyShape; sh:path :selectorValue; sh:targetSubjectsOf :selectorValue; sh:maxCount 1 .
1034
+ :selectorLabel a owl:DatatypeProperty;
1035
+ rdfs:comment "The position as people read it, such as `pt3ch1p40`, `p215`, or `23:43`.";
1036
+ rdfs:domain :Selector;
1037
+ rdfs:range :Text .
1038
+ [] a sh:PropertyShape; sh:path :selectorLabel; sh:targetSubjectsOf :selectorLabel; sh:maxCount 1 .
1039
+
1040
+ :tags a owl:DatatypeProperty;
1041
+ rdfs:comment "A text label for the entity. A label that is an entity of its own is a :Tag.";
1042
+ rdfs:domain :Entity;
1043
+ rdfs:range :Text;
1044
+ skos:closeMatch schemaorg:keywords .
1045
+ :caption a owl:DatatypeProperty;
1046
+ rdfs:comment "A caption or description of the picture or video, written by a person.";
1047
+ rdfs:domain [ a owl:Class; owl:unionOf ( :StillImage :MovingImage :ImageObject ) ];
1048
+ rdfs:range :Text;
1049
+ skos:exactMatch schemaorg:caption .
1050
+ [] a sh:PropertyShape; sh:path :caption; sh:targetSubjectsOf :caption; sh:maxCount 1 .
1051
+ :exifData a owl:DatatypeProperty;
1052
+ rdfs:comment "What the image's file records about how it was taken, as EXIF tags. Each key is the tag's name in EXIF 3.0, such as `FNumber`, `ExposureTime`, or `LensModel`. Each value is the tag's value as EXIF defines it. A fraction is a decimal (`0.008`), a code is its number (`5`), and text is as written. Not allowed: another name for a tag (`ISO` for `PhotographicSensitivity`), a fraction as text (`1/125`), or a code's meaning (`Pattern`).";
1053
+ rdfs:domain :ImageObject;
1054
+ rdfs:range :JSONObject;
1055
+ skos:closeMatch schemaorg:exifData .
1056
+ [] a sh:PropertyShape; sh:path :exifData; sh:targetSubjectsOf :exifData; sh:maxCount 1 .
1057
+ :depicts a owl:ObjectProperty;
1058
+ rdfs:comment "Something that appears in the picture or video, such as a person, an animal, or a building.";
1059
+ rdfs:subPropertyOf :relation;
1060
+ rdfs:domain [ a owl:Class; owl:unionOf ( :StillImage :MovingImage ) ];
1061
+ rdfs:range :Entity .
1062
+ :SoftwareSourceCode a owl:Class;
1063
+ rdfs:comment "Source code as a work, such as a snippet, a script, or a program's code.";
1064
+ rdfs:subClassOf :CreativeWork;
1065
+ skos:exactMatch schemaorg:SoftwareSourceCode .
1066
+ :Repository a owl:Class;
1067
+ 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.";
1068
+ rdfs:subClassOf :CreativeWork .
1069
+ :Changeset a owl:Class;
1070
+ rdfs:comment "A set of changes to a work, made as a unit, such as a pull request, a suggested edit to a document, or the text a writer added to a note in one sitting. Its :body is the text it adds. It :isPartOf the work it changes. One applied directly is the :result of the :UpdateAction that made it. One proposed is put forward by a :PublishAction and can be revised until an :AcceptAction, :RejectAction, or :CancelAction decides it. A version of a work, such as a commit, is a :Revision.";
1071
+ rdfs:subClassOf :CreativeWork .
1072
+ :AcceptAction a owl:Class;
1073
+ 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.";
1074
+ rdfs:subClassOf :Action;
1075
+ skos:exactMatch schemaorg:AcceptAction .
1076
+ :RejectAction a owl:Class;
1077
+ rdfs:comment "The agent declined what was put forward, such as closing a changeset without taking it in. The :object is what was declined.";
1078
+ rdfs:subClassOf :Action;
1079
+ skos:exactMatch schemaorg:RejectAction .
1080
+ :Revision a owl:Class;
1081
+ 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.";
652
1082
  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.";
1083
+ :isBasedOn a owl:ObjectProperty;
1084
+ 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.";
655
1085
  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 .
1086
+ skos:exactMatch schemaorg:isBasedOn;
1087
+ rdfs:domain :CreativeWork;
1088
+ rdfs:range :CreativeWork .
684
1089
 
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 .
1090
+ :TradeAction a owl:Class;
1091
+ rdfs:comment "The agent exchanged something of value with another agent, such as by buying, selling, or paying.";
1092
+ rdfs:subClassOf :Action;
1093
+ skos:broadMatch schemaorg:TradeAction .
1094
+ :PayAction a owl:Class;
1095
+ rdfs:comment "The agent paid money to another agent, such as for a purchase with a card. Its :result is the :FinancialTransaction, which gives how much was paid and to whom.";
1096
+ rdfs:subClassOf :TradeAction;
1097
+ skos:closeMatch schemaorg:PayAction .
1098
+ :FinancialTransaction a owl:Class;
1099
+ rdfs:comment "A movement of money, such as a card purchase, a transfer between accounts, or a trade. It is the :result of the action that moved the money, such as a :PayAction, which gives when it happened and who paid. Its :amount gives how much moved, and its :recipient is who received it. Its change to each account is a :FinancialPosting that is :isPartOf it.";
1100
+ rdfs:subClassOf :Intangible .
1101
+ :PaymentCard a owl:Class;
1102
+ rdfs:comment "A numbered card that payments draw on, such as a credit card or a debit card. It is the card as issued, so a card reissued with a new number is a new :PaymentCard, while the account behind it continues. The same card added to several devices is one :PaymentCard. It is the :instrument of a :PayAction, and the account it draws on is its :inAccount. Its :category is its kind, such as `credit` or `debit`.";
1103
+ rdfs:subClassOf :Intangible;
1104
+ skos:closeMatch schemaorg:PaymentCard .
1105
+ :MonetaryAmount a owl:Class;
1106
+ rdfs:comment "A sum of money: its :value in its :currency. It has no identity of its own.";
1107
+ rdfs:subClassOf :StructuredValue;
1108
+ skos:closeMatch schemaorg:MonetaryAmount .
1109
+ :value a owl:DatatypeProperty;
1110
+ rdfs:comment "The number of units of the :currency, such as `69.93`.";
1111
+ rdfs:domain :MonetaryAmount;
1112
+ rdfs:range :Number;
1113
+ skos:exactMatch schemaorg:value .
1114
+ [] a sh:PropertyShape; sh:path :value; sh:targetSubjectsOf :value; sh:maxCount 1 .
1115
+ :currency a owl:DatatypeProperty;
1116
+ rdfs:comment "The currency the :value is in, as its ISO 4217 code, such as `CAD` or `USD`. Not allowed: a symbol (`$`) or a name (`dollars`).";
1117
+ rdfs:domain :MonetaryAmount;
1118
+ rdfs:range :Text;
1119
+ skos:closeMatch schemaorg:currency .
1120
+ [] a sh:PropertyShape; sh:path :currency; sh:targetSubjectsOf :currency; sh:maxCount 1 .
1121
+ :amount a owl:ObjectProperty;
1122
+ rdfs:comment "How much money moved. On a :FinancialTransaction, it is the whole amount, and its :value is positive. The action that produced the transaction says who paid and who was paid. On a :FinancialPosting, it is the change to the posting's account, and its :value is signed. It is negative where the money came from and positive where it went. A positive value increases an asset or an expense account, and a negative one increases a liability, an income, or an equity account, so a purchase paid with a card is negative on the card's account.";
1123
+ rdfs:domain [ a owl:Class; owl:unionOf ( :FinancialTransaction :FinancialPosting ) ];
1124
+ rdfs:range :MonetaryAmount;
1125
+ skos:closeMatch schemaorg:amount .
1126
+ [] a sh:PropertyShape; sh:path :amount; sh:targetSubjectsOf :amount; sh:maxCount 1 .
1127
+ :FinancialAccount a owl:Class;
1128
+ rdfs:comment "An account that money is counted in, as one line of a chart of accounts. It is a real account held with an institution, such as a bank account or a credit card account, or a nominal one that classifies money, such as an expense or income category. Its :financialAccountType says which of the five kinds it is. The account above it in the chart is what it :isPartOf.";
1129
+ rdfs:subClassOf :Intangible .
1130
+ :FinancialPosting a owl:Class;
1131
+ rdfs:comment "One side of a :FinancialTransaction: the change it made to one :FinancialAccount. It is :isPartOf the transaction, its :inAccount is the account, and its :amount is the change. A negative amount is where the money came from, and a positive one is where it went. A transaction whose postings sum to zero is complete.";
1132
+ rdfs:subClassOf :Intangible .
1133
+ :financialAccountType a owl:DatatypeProperty;
1134
+ rdfs:comment "The kind of :FinancialAccount, one of `asset`, `liability`, `equity`, `income`, or `expense`. An asset is money held, a liability is money owed, income is where money comes from, expense is where it goes, and equity is what is left when liabilities are taken from assets. Not allowed: another kind (`credit-card`) or another case (`Asset`).";
1135
+ rdfs:domain :FinancialAccount;
1136
+ rdfs:range :Text .
1137
+ [] a sh:PropertyShape; sh:path :financialAccountType; sh:targetSubjectsOf :financialAccountType; sh:maxCount 1 .