@prefix : <https://ontology.inferal.com/modules/conversation/> .
@prefix conf: <https://ontology.inferal.com/modules/confidence/> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix loc: <https://ontology.inferal.com/modules/localization/> .
@prefix mod: <https://w3id.org/mod#> .
@prefix ord: <https://ontology.inferal.com/modules/ordering/> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix prof: <http://www.w3.org/ns/dx/prof/> .
@prefix prov: <http://www.w3.org/ns/prov#> .
@prefix pubacc: <https://ontology.inferal.com/modules/publication-access/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix rng: <https://ontology.inferal.com/modules/range/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

:
    a owl:Ontology, pubacc:PublicationManagedOntology ;
    dcterms:accessRights pubacc:PublicAccess ;
    owl:imports <http://www.w3.org/ns/prov> ;
    owl:imports <http://www.w3.org/2004/02/skos/core> ;
    dcterms:title "Conversational Interaction Ontology"@en ;
    dcterms:alternative "Conversation Ontology"@en ;
    dcterms:description "A domain-neutral ontology for conversational interactions, contributions, threads, records, ordered views, addressing, semantic reactions, artifact discussions, targeted comments, lifecycle state, and human or software-agent execution."@en ;
    dcterms:abstract "The ontology separates a conversation activity from the informational contributions and records that participate in or represent it. Reply topology, reaction meaning, membership, presentation order, transport, targeting, and execution provenance remain independent dimensions. Optional SHACL profiles add requirements without splitting the vocabulary into separate namespaces."@en ;
    dcterms:issued "2026-07-11"^^xsd:date ;
    dcterms:license <https://creativecommons.org/licenses/by/4.0/> ;
    dcterms:source <http://www.w3.org/ns/prov>, <http://www.w3.org/2004/02/skos/core> ;
    dcterms:references loc:, ord:, rng:, conf: ;
    vann:preferredNamespacePrefix "convo" ;
    vann:preferredNamespaceUri "https://ontology.inferal.com/modules/conversation/" ;
    voaf:reliesOn <http://www.w3.org/ns/prov>, <http://www.w3.org/2004/02/skos/core> ;
    voaf:reliesOn loc:, ord:, rng:, conf: ;
    mod:status "draft" ;
    rdfs:label "Conversational Interaction Ontology"@en ;
    rdfs:comment "Provides one coherent vocabulary for conversation structure and richer optional profiles while reusing PROV-O for provenance and the Inferal Localization family for position-aware data."@en ;
    rdfs:seeAlso
        <https://www.w3.org/TR/prov-o/> ,
        <https://www.w3.org/TR/skos-reference/> ,
        <https://ontology.inferal.com/modules/localization/spec/> ;
    owl:versionInfo "0.1.0" .

# Interaction and participation

:Conversation
    a rdfs:Class ;
    rdfs:subClassOf prov:Activity ;
    rdfs:label "conversation"@en ;
    rdfs:comment "A communicative interaction that occurs over time among zero or more agents and may be represented by contributions, threads, records, or transcripts."@en ;
    dcterms:description "A conversation is the interaction itself, not a stored platform object or transcript. An open conversation can exist before any contribution is recorded and can have several distinct records."@en ;
    rdfs:isDefinedBy : .

:Participation
    a rdfs:Class ;
    rdfs:label "participation"@en ;
    rdfs:comment "A context-specific relation recording that an agent participates in a conversation, optionally in one or more roles and during a stated interval."@en ;
    dcterms:description "Generic participation does not imply PROV responsibility. Passive observers, audience members, or recipients can participate without becoming prov:Association instances."@en ;
    rdfs:isDefinedBy : .

:ResponsibleParticipation
    a rdfs:Class ;
    rdfs:subClassOf :Participation, prov:Association ;
    rdfs:label "responsible participation"@en ;
    rdfs:comment "A participation in which the participant bears responsibility for the conversation activity in the sense of a qualified PROV association."@en ;
    rdfs:isDefinedBy : .

:ParticipantRole
    a rdfs:Class ;
    rdfs:subClassOf prov:Role ;
    rdfs:label "participant role"@en ;
    rdfs:comment "A role held by an agent within the scope of a particular conversation participation."@en ;
    rdfs:isDefinedBy : .

:Participant
    a :ParticipantRole ;
    rdfs:label "participant"@en ;
    rdfs:comment "The ordinary role of an agent taking part in a conversation without a more specific responsibility."@en ;
    rdfs:isDefinedBy : .

:Moderator
    a :ParticipantRole ;
    rdfs:label "moderator"@en ;
    rdfs:comment "A participant role responsible for applying moderation policy to a conversation or its contributions."@en ;
    rdfs:isDefinedBy : .

:Facilitator
    a :ParticipantRole ;
    rdfs:label "facilitator"@en ;
    rdfs:comment "A participant role responsible for guiding the conduct or progress of a conversation."@en ;
    rdfs:isDefinedBy : .

:hasParticipation
    a rdf:Property ;
    rdfs:domain :Conversation ;
    rdfs:range :Participation ;
    rdfs:label "has participation"@en ;
    rdfs:comment "Connects a conversation to a qualified participation in it."@en ;
    rdfs:isDefinedBy : .

:participationIn
    a rdf:Property ;
    rdfs:domain :Participation ;
    rdfs:range :Conversation ;
    rdfs:label "participation in"@en ;
    rdfs:comment "Connects a qualified participation to its conversation."@en ;
    rdfs:isDefinedBy : .

:hasParticipant
    a rdf:Property ;
    rdfs:domain :Participation ;
    rdfs:range prov:Agent ;
    rdfs:label "has participant"@en ;
    rdfs:comment "Identifies the agent participating through a qualified participation."@en ;
    rdfs:isDefinedBy : .

:participationRole
    a rdf:Property ;
    rdfs:domain :Participation ;
    rdfs:range :ParticipantRole ;
    rdfs:label "has participation role"@en ;
    rdfs:comment "Identifies a role held by the participant in the scoped conversation."@en ;
    rdfs:isDefinedBy : .

:beganAt
    a rdf:Property ;
    rdfs:domain :Participation ;
    rdfs:range xsd:dateTime ;
    rdfs:label "began at"@en ;
    rdfs:comment "The time at which a qualified participation began."@en ;
    rdfs:isDefinedBy : .

:endedAt
    a rdf:Property ;
    rdfs:domain :Participation ;
    rdfs:range xsd:dateTime ;
    rdfs:label "ended at"@en ;
    rdfs:comment "The time at which a qualified participation ended."@en ;
    rdfs:isDefinedBy : .

# Contributions, content, membership, and reply topology

:Contribution
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "contribution"@en ;
    rdfs:comment "An identifiable informational entity introduced into a conversation, such as an utterance, message, comment, question, answer, reaction, notice, tool call, or tool result."@en ;
    rdfs:isDefinedBy : .

:Message
    a rdfs:Class ;
    rdfs:subClassOf :Contribution ;
    rdfs:label "message"@en ;
    rdfs:comment "A contribution packaged or presented as a communicative message, whether or not its transport is represented."@en ;
    rdfs:isDefinedBy : .

:Utterance
    a rdfs:Class ;
    rdfs:subClassOf :Contribution ;
    rdfs:label "utterance"@en ;
    rdfs:comment "A contribution expressed as an act of speaking or otherwise uttering content, without requiring electronic message transport."@en ;
    rdfs:isDefinedBy : .

:Comment
    a rdfs:Class ;
    rdfs:subClassOf :Message ;
    rdfs:label "comment"@en ;
    rdfs:comment "A message that comments on a resource, contribution, or selected part of one."@en ;
    rdfs:isDefinedBy : .

:Question
    a rdfs:Class ;
    rdfs:subClassOf :Message ;
    rdfs:label "question"@en ;
    rdfs:comment "A message that requests information, clarification, confirmation, or a decision."@en ;
    rdfs:isDefinedBy : .

:Answer
    a rdfs:Class ;
    rdfs:subClassOf :Message ;
    rdfs:label "answer"@en ;
    rdfs:comment "A message presented as answering one or more questions."@en ;
    rdfs:isDefinedBy : .

:Reaction
    a rdfs:Class ;
    rdfs:subClassOf :Contribution ;
    rdfs:label "reaction"@en ;
    rdfs:comment "A lightweight contribution expressing a reaction to another contribution or resource."@en ;
    rdfs:isDefinedBy : .

:ReactionType
    a rdfs:Class ;
    rdfs:subClassOf skos:Concept ;
    rdfs:label "reaction type"@en ;
    rdfs:comment "An open controlled concept describing the communicative meaning or platform-defined kind of a reaction."@en ;
    dcterms:description "Reaction types may come from the built-in Conversation concept scheme or from external platform schemes. Multiple classifications are allowed because a source token and a normalized semantic interpretation may both be retained."@en ;
    rdfs:isDefinedBy : .

:SystemNotice
    a rdfs:Class ;
    rdfs:subClassOf :Contribution ;
    rdfs:label "system notice"@en ;
    rdfs:comment "A contribution emitted by a system to report conversational, operational, or moderation state rather than ordinary participant prose."@en ;
    rdfs:isDefinedBy : .

:ToolCall
    a rdfs:Class ;
    rdfs:subClassOf :Contribution ;
    rdfs:label "tool call"@en ;
    rdfs:comment "A contribution that records or communicates a request to invoke a tool."@en ;
    rdfs:isDefinedBy : .

:ToolResult
    a rdfs:Class ;
    rdfs:subClassOf :Contribution ;
    rdfs:label "tool result"@en ;
    rdfs:comment "A contribution carrying the result of a tool invocation."@en ;
    rdfs:isDefinedBy : .

:Content
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "content"@en ;
    rdfs:comment "An identifiable textual, structured, binary, or media representation communicated by a contribution."@en ;
    dcterms:description "Content is separate from contribution identity so translations, encodings, redactions, and unavailable payloads can have their own provenance."@en ;
    rdfs:isDefinedBy : .

:Thread
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "thread"@en ;
    rdfs:comment "A structural grouping of contributions within one conversation, independent of the reply graph and any presentation order."@en ;
    rdfs:isDefinedBy : .

:hasThread
    a rdf:Property ;
    rdfs:domain :Conversation ;
    rdfs:range :Thread ;
    rdfs:label "has thread"@en ;
    rdfs:comment "Connects a conversation to a structural thread belonging to it."@en ;
    rdfs:isDefinedBy : .

:threadOfConversation
    a rdf:Property ;
    rdfs:domain :Thread ;
    rdfs:range :Conversation ;
    rdfs:label "thread of conversation"@en ;
    rdfs:comment "Connects a thread to the conversation whose contributions it groups."@en ;
    rdfs:isDefinedBy : .

:hasContribution
    a rdf:Property ;
    rdfs:domain :Conversation ;
    rdfs:range :Contribution ;
    rdfs:label "has contribution"@en ;
    rdfs:comment "Connects a conversation to a contribution participating in it."@en ;
    rdfs:isDefinedBy : .

:contributionOf
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Conversation ;
    rdfs:label "contribution of"@en ;
    rdfs:comment "Connects a contribution to a conversation in which it participates."@en ;
    rdfs:isDefinedBy : .

:hasThreadContribution
    a rdf:Property ;
    rdfs:domain :Thread ;
    rdfs:range :Contribution ;
    rdfs:label "has thread contribution"@en ;
    rdfs:comment "Connects a thread to a contribution grouped in that thread."@en ;
    rdfs:isDefinedBy : .

:inThread
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Thread ;
    rdfs:label "in thread"@en ;
    rdfs:comment "Connects a contribution to a thread that groups it."@en ;
    rdfs:isDefinedBy : .

:inReplyTo
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Contribution ;
    rdfs:label "in reply to"@en ;
    rdfs:comment "Connects a contribution to another contribution to which it is a communicative response."@en ;
    dcterms:description "Reply edges define communicative topology. They do not by themselves assert thread membership, chronological order, presentation order, generation input, or derivation."@en ;
    rdfs:isDefinedBy : .

:hasReply
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Contribution ;
    rdfs:label "has reply"@en ;
    rdfs:comment "Connects a contribution to another contribution that replies to it."@en ;
    rdfs:isDefinedBy : .

:answers
    a rdf:Property ;
    rdfs:subPropertyOf :inReplyTo ;
    rdfs:domain :Answer ;
    rdfs:range :Question ;
    rdfs:label "answers"@en ;
    rdfs:comment "Connects an answer to a question that it answers and, by subproperty entailment, replies to."@en ;
    rdfs:isDefinedBy : .

:reactsTo
    a rdf:Property ;
    rdfs:domain :Reaction ;
    rdfs:range rdfs:Resource ;
    rdfs:label "reacts to"@en ;
    rdfs:comment "Connects a lightweight reaction to the contribution or other resource that elicited it."@en ;
    rdfs:isDefinedBy : .

:hasReactionType
    a rdf:Property ;
    rdfs:domain :Reaction ;
    rdfs:range :ReactionType ;
    rdfs:label "has reaction type"@en ;
    rdfs:comment "Classifies a reaction using one or more open reaction-type concepts."@en ;
    dcterms:description "A reaction may retain an exact platform reaction type, a built-in semantic type, or both. Values are not mutually exclusive and do not by themselves prove the reacting agent's internal emotional state."@en ;
    rdfs:isDefinedBy : .

# Open semantic reaction type scheme

:ReactionTypes
    a skos:ConceptScheme ;
    dcterms:title "Conversation reaction types"@en ;
    dcterms:description "Open semantic pivot vocabulary for common conversational reactions. External schemes may map platform-specific concepts to these values using SKOS mapping relations."@en ;
    rdfs:label "Conversation reaction types"@en ;
    rdfs:comment "Concept scheme containing useful non-exclusive built-in reaction types without closing the space to external platform or community vocabularies."@en ;
    rdfs:isDefinedBy : .

:Like
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "like"@en ;
    rdfs:label "like"@en ;
    rdfs:comment "Expresses a lightweight positive endorsement or preference."@en ;
    rdfs:isDefinedBy : .

:Dislike
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "dislike"@en ;
    rdfs:label "dislike"@en ;
    rdfs:comment "Expresses a lightweight negative assessment or preference."@en ;
    rdfs:isDefinedBy : .

:Love
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "love"@en ;
    rdfs:label "love"@en ;
    rdfs:comment "Expresses a strong positive or affectionate response."@en ;
    rdfs:isDefinedBy : .

:Agree
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "agree"@en ;
    rdfs:label "agree"@en ;
    rdfs:comment "Expresses concurrence with the target's content or position."@en ;
    rdfs:isDefinedBy : .

:Disagree
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "disagree"@en ;
    rdfs:label "disagree"@en ;
    rdfs:comment "Expresses dissent from the target's content or position."@en ;
    rdfs:isDefinedBy : .

:Acknowledge
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "acknowledge"@en ;
    rdfs:label "acknowledge"@en ;
    rdfs:comment "Indicates that the target was seen or received without necessarily expressing agreement."@en ;
    rdfs:isDefinedBy : .

:Appreciate
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "appreciate"@en ;
    rdfs:label "appreciate"@en ;
    rdfs:comment "Expresses gratitude or appreciation for the target."@en ;
    rdfs:isDefinedBy : .

:Support
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "support"@en ;
    rdfs:label "support"@en ;
    rdfs:comment "Expresses solidarity, encouragement, or support."@en ;
    rdfs:isDefinedBy : .

:Amused
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "amused"@en ;
    rdfs:label "amused"@en ;
    rdfs:comment "Expresses amusement or laughter in response to the target."@en ;
    rdfs:isDefinedBy : .

:Celebrate
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "celebrate"@en ;
    rdfs:label "celebrate"@en ;
    rdfs:comment "Expresses celebration, congratulations, or enthusiasm."@en ;
    rdfs:isDefinedBy : .

:Interested
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "interested"@en ;
    rdfs:label "interested"@en ;
    rdfs:comment "Expresses interest, attention, curiosity, or a desire to follow the target."@en ;
    rdfs:isDefinedBy : .

:Confused
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "confused"@en ;
    rdfs:label "confused"@en ;
    rdfs:comment "Expresses confusion or difficulty understanding the target."@en ;
    rdfs:isDefinedBy : .

:Surprised
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "surprised"@en ;
    rdfs:label "surprised"@en ;
    rdfs:comment "Expresses surprise in response to the target without implying positive or negative sentiment."@en ;
    rdfs:isDefinedBy : .

:Concerned
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "concerned"@en ;
    rdfs:label "concerned"@en ;
    rdfs:comment "Expresses concern, caution, or worry about the target."@en ;
    rdfs:isDefinedBy : .

:Sadness
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "sadness"@en ;
    rdfs:label "sadness"@en ;
    rdfs:comment "Expresses sadness or sympathy without asserting the reacting agent's internal emotional state."@en ;
    rdfs:isDefinedBy : .

:Anger
    a :ReactionType ;
    skos:inScheme :ReactionTypes ;
    skos:prefLabel "anger"@en ;
    rdfs:label "anger"@en ;
    rdfs:comment "Expresses anger or strong objection without asserting the reacting agent's internal emotional state."@en ;
    rdfs:isDefinedBy : .

:hasContent
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Content ;
    rdfs:label "has content"@en ;
    rdfs:comment "Connects a contribution to an identifiable content representation it communicates."@en ;
    rdfs:isDefinedBy : .

:text
    a rdf:Property ;
    rdfs:range rdfs:Literal ;
    rdfs:label "text"@en ;
    rdfs:comment "A direct plain-text representation of a contribution or content entity."@en ;
    dcterms:description "The property deliberately has no RDFS domain so it can be used on a contribution for compact data or on a Content entity for representation-level provenance. Values should be xsd:string or language-tagged rdf:langString literals."@en ;
    rdfs:isDefinedBy : .

:hasAttachment
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range prov:Entity ;
    rdfs:label "has attachment"@en ;
    rdfs:comment "Connects a contribution to an entity attached to or transmitted with it."@en ;
    rdfs:isDefinedBy : .

:authoredBy
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasAttributedTo ;
    rdfs:domain :Contribution ;
    rdfs:range prov:Agent ;
    rdfs:label "authored by"@en ;
    rdfs:comment "Attributes intellectual or content responsibility for a contribution to an agent."@en ;
    rdfs:isDefinedBy : .

:submittedBy
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range rdfs:Resource ;
    rdfs:label "submitted by"@en ;
    rdfs:comment "Identifies the agent, account, or service that submitted a contribution, without necessarily attributing authorship."@en ;
    rdfs:isDefinedBy : .

:quotes
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasQuotedFrom ;
    rdfs:domain :Contribution ;
    rdfs:range prov:Entity ;
    rdfs:label "quotes"@en ;
    rdfs:comment "Connects a contribution to an entity from which it quotes content."@en ;
    rdfs:isDefinedBy : .

:mentions
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range rdfs:Resource ;
    rdfs:label "mentions"@en ;
    rdfs:comment "Connects a contribution to an agent, contribution, topic, or other resource explicitly mentioned by it."@en ;
    rdfs:isDefinedBy : .

:references
    a rdf:Property ;
    rdfs:subPropertyOf dcterms:references ;
    rdfs:domain :Contribution ;
    rdfs:range rdfs:Resource ;
    rdfs:label "references"@en ;
    rdfs:comment "Connects a contribution to a resource it references without asserting reply, quotation, or derivation."@en ;
    rdfs:isDefinedBy : .

# Conversation records, views, and position-aware order

:ConversationRecord
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "conversation record"@en ;
    rdfs:comment "An information entity that records, reconstructs, or otherwise represents a conversation activity."@en ;
    rdfs:isDefinedBy : .

:OrderedView
    a rdfs:Class ;
    rdfs:subClassOf :ConversationRecord ;
    rdfs:label "ordered view"@en ;
    rdfs:comment "A conversation record that presents selected contributions through contextual ordered memberships."@en ;
    rdfs:isDefinedBy : .

:Transcript
    a rdfs:Class ;
    rdfs:subClassOf :OrderedView ;
    rdfs:label "transcript"@en ;
    rdfs:comment "An ordered conversation record presenting contributions as a transcript of the interaction."@en ;
    rdfs:isDefinedBy : .

:OrderedMembership
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "ordered membership"@en ;
    rdfs:comment "A contextual membership connecting one contribution to one ordered view and to a locus in that view's position frame."@en ;
    rdfs:isDefinedBy : .

:ContributionSequenceFrame
    a rdfs:Class ;
    rdfs:subClassOf loc:Frame ;
    rdfs:label "contribution sequence frame"@en ;
    rdfs:comment "A localization frame whose loci denote contribution positions in an ordered or partially ordered conversation view."@en ;
    rdfs:isDefinedBy : .

:recordsConversation
    a rdf:Property ;
    rdfs:domain :ConversationRecord ;
    rdfs:range :Conversation ;
    rdfs:label "records conversation"@en ;
    rdfs:comment "Connects a conversation record to the conversation activity it represents."@en ;
    rdfs:isDefinedBy : .

:hasOrderedMembership
    a rdf:Property ;
    rdfs:domain :OrderedView ;
    rdfs:range :OrderedMembership ;
    rdfs:label "has ordered membership"@en ;
    rdfs:comment "Connects an ordered view to a contextual membership occurrence in that view."@en ;
    rdfs:isDefinedBy : .

:orderedMembershipOf
    a rdf:Property ;
    rdfs:domain :OrderedMembership ;
    rdfs:range :OrderedView ;
    rdfs:label "ordered membership of"@en ;
    rdfs:comment "Connects an ordered membership occurrence to the view in which it applies."@en ;
    rdfs:isDefinedBy : .

:membershipContribution
    a rdf:Property ;
    rdfs:domain :OrderedMembership ;
    rdfs:range :Contribution ;
    rdfs:label "membership contribution"@en ;
    rdfs:comment "Identifies the contribution positioned by an ordered membership occurrence."@en ;
    rdfs:isDefinedBy : .

:membershipLocus
    a rdf:Property ;
    rdfs:domain :OrderedMembership ;
    rdfs:range loc:Locus ;
    rdfs:label "membership locus"@en ;
    rdfs:comment "Identifies the locus occupied by an ordered membership in the view's position frame."@en ;
    rdfs:isDefinedBy : .

:hasPositionFrame
    a rdf:Property ;
    rdfs:domain :OrderedView ;
    rdfs:range loc:Frame ;
    rdfs:label "has position frame"@en ;
    rdfs:comment "Identifies the localization frame that gives ordered-membership loci meaning within a view."@en ;
    rdfs:isDefinedBy : .

:hasGenerationLocus
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range loc:Locus ;
    rdfs:label "has generation locus"@en ;
    rdfs:comment "Connects a contribution to a stable temporal locus for its generation when a direct timestamp is insufficient."@en ;
    rdfs:isDefinedBy : .

# Accounts, addressing, transmission, and delivery

:Account
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "account"@en ;
    rdfs:comment "A platform, channel, or service identity that can represent an agent in conversational data."@en ;
    rdfs:isDefinedBy : .

:Addressing
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "addressing"@en ;
    rdfs:comment "A qualified assertion that a contribution is addressed to a resource in a particular addressing role."@en ;
    rdfs:isDefinedBy : .

:AddressingRole
    a rdfs:Class ;
    rdfs:label "addressing role"@en ;
    rdfs:comment "A role describing how an addressee relates to a contribution or delivery."@en ;
    rdfs:isDefinedBy : .

:PrimaryRecipient
    a :AddressingRole ;
    rdfs:label "primary recipient"@en ;
    rdfs:comment "An addressing role for a resource to which a contribution is directly addressed."@en ;
    rdfs:isDefinedBy : .

:CopyRecipient
    a :AddressingRole ;
    rdfs:label "copy recipient"@en ;
    rdfs:comment "An addressing role for a resource openly copied on a contribution."@en ;
    rdfs:isDefinedBy : .

:BlindCopyRecipient
    a :AddressingRole ;
    rdfs:label "blind-copy recipient"@en ;
    rdfs:comment "An addressing role for a resource privately copied on a contribution; publishers must consider confidentiality before exposing such assertions."@en ;
    rdfs:isDefinedBy : .

:AudienceMember
    a :AddressingRole ;
    rdfs:label "audience member"@en ;
    rdfs:comment "An addressing role identifying a resource included in the intended audience without direct delivery semantics."@en ;
    rdfs:isDefinedBy : .

:MessageTransmission
    a rdfs:Class ;
    rdfs:subClassOf prov:Activity ;
    rdfs:label "message transmission"@en ;
    rdfs:comment "An activity that transmits a contribution through a channel, account, or service."@en ;
    rdfs:isDefinedBy : .

:Delivery
    a rdfs:Class ;
    rdfs:subClassOf prov:Activity ;
    rdfs:label "delivery"@en ;
    rdfs:comment "An activity or attempt that delivers a transmitted contribution to a particular recipient or destination."@en ;
    rdfs:isDefinedBy : .

:representsAgent
    a rdf:Property ;
    rdfs:domain :Account ;
    rdfs:range prov:Agent ;
    rdfs:label "represents agent"@en ;
    rdfs:comment "Connects an account to the agent it represents without asserting identity between them."@en ;
    rdfs:isDefinedBy : .

:hasAddressing
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Addressing ;
    rdfs:label "has addressing"@en ;
    rdfs:comment "Connects a contribution to a qualified addressing assertion."@en ;
    rdfs:isDefinedBy : .

:addressingOf
    a rdf:Property ;
    rdfs:domain :Addressing ;
    rdfs:range :Contribution ;
    rdfs:label "addressing of"@en ;
    rdfs:comment "Connects a qualified addressing assertion to its contribution."@en ;
    rdfs:isDefinedBy : .

:addressee
    a rdf:Property ;
    rdfs:domain :Addressing ;
    rdfs:range rdfs:Resource ;
    rdfs:label "addressee"@en ;
    rdfs:comment "Identifies the agent, account, group, channel, or other resource addressed by a contribution."@en ;
    rdfs:isDefinedBy : .

:hasAddressingRole
    a rdf:Property ;
    rdfs:domain :Addressing ;
    rdfs:range :AddressingRole ;
    rdfs:label "has addressing role"@en ;
    rdfs:comment "Identifies how an addressee is addressed by a contribution."@en ;
    rdfs:isDefinedBy : .

:addressedTo
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range rdfs:Resource ;
    rdfs:label "addressed to"@en ;
    rdfs:comment "Direct convenience relation from a contribution to an addressee when qualified addressing details are unnecessary."@en ;
    rdfs:isDefinedBy : .

:hasAudience
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range rdfs:Resource ;
    rdfs:label "has audience"@en ;
    rdfs:comment "Connects a contribution to a resource representing its intended audience, without implying direct delivery."@en ;
    rdfs:isDefinedBy : .

:transmitsContribution
    a rdf:Property ;
    rdfs:subPropertyOf prov:used ;
    rdfs:domain :MessageTransmission ;
    rdfs:range :Contribution ;
    rdfs:label "transmits contribution"@en ;
    rdfs:comment "Identifies the contribution used as the informational object of a transmission activity."@en ;
    rdfs:isDefinedBy : .

:transmissionSender
    a rdf:Property ;
    rdfs:domain :MessageTransmission ;
    rdfs:range rdfs:Resource ;
    rdfs:label "transmission sender"@en ;
    rdfs:comment "Identifies the agent, account, or service acting as sender in a transmission, independently of contribution authorship."@en ;
    rdfs:isDefinedBy : .

:hasDelivery
    a rdf:Property ;
    rdfs:domain :MessageTransmission ;
    rdfs:range :Delivery ;
    rdfs:label "has delivery"@en ;
    rdfs:comment "Connects a message transmission to a recipient-specific delivery activity or attempt."@en ;
    rdfs:isDefinedBy : .

:deliveryOf
    a rdf:Property ;
    rdfs:domain :Delivery ;
    rdfs:range :MessageTransmission ;
    rdfs:label "delivery of"@en ;
    rdfs:comment "Connects a delivery activity to the message transmission it realizes for a recipient."@en ;
    rdfs:isDefinedBy : .

:deliveryRecipient
    a rdf:Property ;
    rdfs:domain :Delivery ;
    rdfs:range rdfs:Resource ;
    rdfs:label "delivery recipient"@en ;
    rdfs:comment "Identifies the agent, account, destination, or channel to which a delivery is directed."@en ;
    rdfs:isDefinedBy : .

# Topics, discussions, and targeted comments

:Target
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "target"@en ;
    rdfs:comment "A contextual target identifying a resource or selected part of a resource addressed by a contribution."@en ;
    rdfs:isDefinedBy : .

:discusses
    a rdf:Property ;
    rdfs:domain :Conversation ;
    rdfs:range rdfs:Resource ;
    rdfs:label "discusses"@en ;
    rdfs:comment "Connects a conversation to a resource it discusses, without requiring every conversation to have an external subject."@en ;
    rdfs:isDefinedBy : .

:hasTopic
    a rdf:Property ;
    rdfs:range rdfs:Resource ;
    rdfs:label "has topic"@en ;
    rdfs:comment "Connects a conversation, thread, or contribution to a topical resource."@en ;
    dcterms:description "The property deliberately has no RDFS domain because topics apply to conversations, threads, and contributions without forcing an artificial common superclass."@en ;
    rdfs:isDefinedBy : .

:hasTarget
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Target ;
    rdfs:label "has target"@en ;
    rdfs:comment "Connects a contribution to a contextual target resource."@en ;
    rdfs:isDefinedBy : .

:sourceResource
    a rdf:Property ;
    rdfs:domain :Target ;
    rdfs:range rdfs:Resource ;
    rdfs:label "source resource"@en ;
    rdfs:comment "Identifies the resource, document, contribution, or artifact from which a target is selected."@en ;
    rdfs:isDefinedBy : .

:selector
    a rdf:Property ;
    rdfs:domain :Target ;
    rdfs:range rdfs:Resource ;
    rdfs:label "selector"@en ;
    rdfs:comment "Identifies an external or locally defined selector that selects a part of the target's source resource."@en ;
    rdfs:isDefinedBy : .

:targetPurpose
    a rdf:Property ;
    rdfs:domain :Target ;
    rdfs:range rdfs:Resource ;
    rdfs:label "target purpose"@en ;
    rdfs:comment "Identifies the purpose served by a target in the contribution, such as commenting, questioning, replying, or reviewing."@en ;
    rdfs:isDefinedBy : .

# Lifecycle, revisions, alternatives, and moderation

:ConversationStatus
    a rdfs:Class ;
    rdfs:label "conversation status"@en ;
    rdfs:comment "A controlled status value describing an operational, resolution, or retention state of a conversation or thread."@en ;
    rdfs:isDefinedBy : .

:StatusDimension
    a rdfs:Class ;
    rdfs:label "status dimension"@en ;
    rdfs:comment "A facet that distinguishes operational, resolution, and retention meanings carried by conversation status values."@en ;
    rdfs:isDefinedBy : .

:OperationalStatusDimension
    a :StatusDimension ;
    rdfs:label "operational status dimension"@en ;
    rdfs:comment "Status facet describing whether and how a conversation or thread is accepting and processing participation."@en ;
    rdfs:isDefinedBy : .

:ResolutionStatusDimension
    a :StatusDimension ;
    rdfs:label "resolution status dimension"@en ;
    rdfs:comment "Status facet describing whether the matter addressed by a conversation or thread has been resolved."@en ;
    rdfs:isDefinedBy : .

:RetentionStatusDimension
    a :StatusDimension ;
    rdfs:label "retention status dimension"@en ;
    rdfs:comment "Status facet describing whether a conversation or thread is retained primarily as an archive."@en ;
    rdfs:isDefinedBy : .

:hasStatusDimension
    a rdf:Property ;
    rdfs:domain :ConversationStatus ;
    rdfs:range :StatusDimension ;
    rdfs:label "has status dimension"@en ;
    rdfs:comment "Identifies the semantic facet in which a conversation status value applies."@en ;
    rdfs:isDefinedBy : .

:Proposed
    a :ConversationStatus ;
    :hasStatusDimension :OperationalStatusDimension ;
    rdfs:label "proposed"@en ;
    rdfs:comment "Status indicating that a conversation has been proposed but has not yet begun."@en ;
    rdfs:isDefinedBy : .

:Open
    a :ConversationStatus ;
    :hasStatusDimension :OperationalStatusDimension ;
    rdfs:label "open"@en ;
    rdfs:comment "Status indicating that a conversation accepts further participation or contributions."@en ;
    rdfs:isDefinedBy : .

:Active
    a :ConversationStatus ;
    :hasStatusDimension :OperationalStatusDimension ;
    rdfs:label "active"@en ;
    rdfs:comment "Status indicating that a conversation is currently active."@en ;
    rdfs:isDefinedBy : .

:Paused
    a :ConversationStatus ;
    :hasStatusDimension :OperationalStatusDimension ;
    rdfs:label "paused"@en ;
    rdfs:comment "Status indicating that a conversation is temporarily paused."@en ;
    rdfs:isDefinedBy : .

:Resolved
    a :ConversationStatus ;
    :hasStatusDimension :ResolutionStatusDimension ;
    rdfs:label "resolved"@en ;
    rdfs:comment "Status indicating that the matter addressed by a conversation is considered resolved."@en ;
    rdfs:isDefinedBy : .

:Closed
    a :ConversationStatus ;
    :hasStatusDimension :OperationalStatusDimension ;
    rdfs:label "closed"@en ;
    rdfs:comment "Status indicating that a conversation no longer accepts ordinary contributions."@en ;
    rdfs:isDefinedBy : .

:Archived
    a :ConversationStatus ;
    :hasStatusDimension :RetentionStatusDimension ;
    rdfs:label "archived"@en ;
    rdfs:comment "Status indicating that a conversation is retained primarily as an archive."@en ;
    rdfs:isDefinedBy : .

:ConversationStatusAssignment
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "conversation status assignment"@en ;
    rdfs:comment "A provenance-bearing assertion assigning a status to a conversation or thread at a particular time."@en ;
    rdfs:isDefinedBy : .

:ModerationAction
    a rdfs:Class ;
    rdfs:subClassOf prov:Activity ;
    rdfs:label "moderation action"@en ;
    rdfs:comment "An activity applying moderation policy to a conversation, thread, contribution, participation, or account."@en ;
    rdfs:isDefinedBy : .

:Tombstone
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "tombstone"@en ;
    rdfs:comment "A retained entity standing in for an invalidated or unavailable contribution so identifiers and topology can remain addressable."@en ;
    rdfs:isDefinedBy : .

:hasStatus
    a rdf:Property ;
    rdfs:range :ConversationStatus ;
    rdfs:label "has status"@en ;
    rdfs:comment "Connects a conversation or thread to a status reported as currently applicable."@en ;
    dcterms:description "The property deliberately has no RDFS domain because both conversation activities and thread entities can carry status without a false shared superclass. Multiple values may coexist, including conflicting reports in one dimension; publishers should use qualified status assignments when provenance, disagreement, or history matters."@en ;
    rdfs:isDefinedBy : .

:statusOf
    a rdf:Property ;
    rdfs:domain :ConversationStatusAssignment ;
    rdfs:range rdfs:Resource ;
    rdfs:label "status of"@en ;
    rdfs:comment "Identifies the conversation or thread whose state is described by a status assignment."@en ;
    rdfs:isDefinedBy : .

:assignedStatus
    a rdf:Property ;
    rdfs:domain :ConversationStatusAssignment ;
    rdfs:range :ConversationStatus ;
    rdfs:label "assigned status"@en ;
    rdfs:comment "Identifies the status value asserted by a status assignment."@en ;
    rdfs:isDefinedBy : .

:assignedAt
    a rdf:Property ;
    rdfs:domain :ConversationStatusAssignment ;
    rdfs:range xsd:dateTime ;
    rdfs:label "assigned at"@en ;
    rdfs:comment "The time at which a status assignment was made or became applicable."@en ;
    rdfs:isDefinedBy : .

:revisionOf
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasRevisionOf ;
    rdfs:domain prov:Entity ;
    rdfs:range prov:Entity ;
    rdfs:label "revision of"@en ;
    rdfs:comment "Connects a revised contribution or record to the earlier entity it revises."@en ;
    rdfs:isDefinedBy : .

:supersedes
    a rdf:Property ;
    rdfs:domain prov:Entity ;
    rdfs:range prov:Entity ;
    rdfs:label "supersedes"@en ;
    rdfs:comment "Connects an entity to another entity it replaces, without necessarily asserting derivation or identity."@en ;
    rdfs:isDefinedBy : .

:alternativeTo
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :Contribution ;
    rdfs:label "alternative to"@en ;
    rdfs:comment "Relates contributions that are alternatives without asserting that either was derived from the other."@en ;
    rdfs:isDefinedBy : .

:regenerationOf
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasDerivedFrom ;
    rdfs:domain :Contribution ;
    rdfs:range :Contribution ;
    rdfs:label "regeneration of"@en ;
    rdfs:comment "Connects a separately generated contribution to an earlier alternative generated for substantially the same request or conversational position."@en ;
    rdfs:isDefinedBy : .

:redactedVersionOf
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasDerivedFrom ;
    rdfs:domain prov:Entity ;
    rdfs:range prov:Entity ;
    rdfs:label "redacted version of"@en ;
    rdfs:comment "Connects a deliberately reduced or obscured entity to the fuller entity from which it was derived."@en ;
    rdfs:isDefinedBy : .

:summaryOf
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasDerivedFrom ;
    rdfs:domain prov:Entity ;
    rdfs:range prov:Entity ;
    rdfs:label "summary of"@en ;
    rdfs:comment "Connects a summary entity to the entity from which its summarized information was derived."@en ;
    rdfs:isDefinedBy : .

:moderates
    a rdf:Property ;
    rdfs:domain :ModerationAction ;
    rdfs:range rdfs:Resource ;
    rdfs:label "moderates"@en ;
    rdfs:comment "Identifies the conversation resource affected by a moderation action."@en ;
    rdfs:isDefinedBy : .

:tombstoneFor
    a rdf:Property ;
    rdfs:domain :Tombstone ;
    rdfs:range :Contribution ;
    rdfs:label "tombstone for"@en ;
    rdfs:comment "Identifies the unavailable or invalidated contribution represented by a tombstone."@en ;
    rdfs:isDefinedBy : .

# Contribution production and software-agent execution

:ContributionAct
    a rdfs:Class ;
    rdfs:subClassOf prov:Activity ;
    rdfs:label "contribution act"@en ;
    rdfs:comment "An activity that generates one or more conversation contributions."@en ;
    rdfs:isDefinedBy : .

:HumanContributionAct
    a rdfs:Class ;
    rdfs:subClassOf :ContributionAct ;
    rdfs:label "human contribution act"@en ;
    rdfs:comment "A contribution act performed by or attributed to a human agent."@en ;
    rdfs:isDefinedBy : .

:Model
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "model"@en ;
    rdfs:comment "A computational model used by a model invocation to generate or transform conversational entities."@en ;
    rdfs:isDefinedBy : .

:ModelConfiguration
    a rdfs:Class ;
    rdfs:subClassOf prov:Entity ;
    rdfs:label "model configuration"@en ;
    rdfs:comment "An identifiable configuration or parameter set used by a model invocation."@en ;
    rdfs:isDefinedBy : .

:ModelInvocation
    a rdfs:Class ;
    rdfs:subClassOf :ContributionAct ;
    rdfs:label "model invocation"@en ;
    rdfs:comment "A contribution act in which a computational model uses input entities and generates one or more conversational entities."@en ;
    rdfs:isDefinedBy : .

:Tool
    a rdfs:Class ;
    rdfs:subClassOf prov:SoftwareAgent ;
    rdfs:label "tool"@en ;
    rdfs:comment "A software agent that can be invoked to perform work and produce results used in a conversation."@en ;
    rdfs:isDefinedBy : .

:ToolInvocation
    a rdfs:Class ;
    rdfs:subClassOf :ContributionAct ;
    rdfs:label "tool invocation"@en ;
    rdfs:comment "A contribution act that invokes a tool, uses request or input entities, and generates a tool-result contribution."@en ;
    rdfs:isDefinedBy : .

:ContributionRole
    a rdfs:Class ;
    rdfs:label "contribution role"@en ;
    rdfs:comment "A controlled role describing how a contribution functions in an agent-oriented conversation."@en ;
    rdfs:isDefinedBy : .

:UserRole
    a :ContributionRole ;
    rdfs:label "user role"@en ;
    rdfs:comment "Role for a contribution supplied as user input to a conversational system."@en ;
    rdfs:isDefinedBy : .

:AssistantRole
    a :ContributionRole ;
    rdfs:label "assistant role"@en ;
    rdfs:comment "Role for a contribution supplied by a conversational assistant."@en ;
    rdfs:isDefinedBy : .

:SystemRole
    a :ContributionRole ;
    rdfs:label "system role"@en ;
    rdfs:comment "Role for a contribution conveying system-level instructions or state."@en ;
    rdfs:isDefinedBy : .

:ToolRole
    a :ContributionRole ;
    rdfs:label "tool role"@en ;
    rdfs:comment "Role for a contribution conveying a tool request or tool result."@en ;
    rdfs:isDefinedBy : .

:usedModel
    a rdf:Property ;
    rdfs:subPropertyOf prov:used ;
    rdfs:domain :ModelInvocation ;
    rdfs:range :Model ;
    rdfs:label "used model"@en ;
    rdfs:comment "Identifies the computational model used by a model invocation."@en ;
    rdfs:isDefinedBy : .

:usedConfiguration
    a rdf:Property ;
    rdfs:subPropertyOf prov:used ;
    rdfs:domain :ModelInvocation ;
    rdfs:range :ModelConfiguration ;
    rdfs:label "used configuration"@en ;
    rdfs:comment "Identifies a model configuration used by a model invocation."@en ;
    rdfs:isDefinedBy : .

:invokedTool
    a rdf:Property ;
    rdfs:subPropertyOf prov:wasAssociatedWith ;
    rdfs:domain :ToolInvocation ;
    rdfs:range :Tool ;
    rdfs:label "invoked tool"@en ;
    rdfs:comment "Identifies the software tool associated with a tool invocation."@en ;
    rdfs:isDefinedBy : .

:requestedBy
    a rdf:Property ;
    rdfs:domain :ToolInvocation ;
    rdfs:range rdfs:Resource ;
    rdfs:label "requested by"@en ;
    rdfs:comment "Identifies the contribution or activity that requested a tool invocation."@en ;
    rdfs:isDefinedBy : .

:hasContributionRole
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range :ContributionRole ;
    rdfs:label "has contribution role"@en ;
    rdfs:comment "Identifies the role a contribution plays in an agent-oriented conversation."@en ;
    rdfs:isDefinedBy : .

# Direct time convenience properties

:authoredAt
    a rdf:Property ;
    rdfs:domain :Contribution ;
    rdfs:range xsd:dateTime ;
    rdfs:label "authored at"@en ;
    rdfs:comment "The time at which the content of a contribution was authored, when distinct from generation or transmission time."@en ;
    rdfs:isDefinedBy : .

:sentAt
    a rdf:Property ;
    rdfs:domain :MessageTransmission ;
    rdfs:range xsd:dateTime ;
    rdfs:label "sent at"@en ;
    rdfs:comment "The time at which a message transmission was sent."@en ;
    rdfs:isDefinedBy : .

:deliveredAt
    a rdf:Property ;
    rdfs:domain :Delivery ;
    rdfs:range xsd:dateTime ;
    rdfs:label "delivered at"@en ;
    rdfs:comment "The time at which a delivery reached its recipient or destination."@en ;
    rdfs:isDefinedBy : .

:receivedAt
    a rdf:Property ;
    rdfs:domain :Delivery ;
    rdfs:range xsd:dateTime ;
    rdfs:label "received at"@en ;
    rdfs:comment "The time at which a recipient recorded receipt of a delivery."@en ;
    rdfs:isDefinedBy : .

:displayedAt
    a rdf:Property ;
    rdfs:domain :OrderedMembership ;
    rdfs:range xsd:dateTime ;
    rdfs:label "displayed at"@en ;
    rdfs:comment "The time at which a contribution membership was displayed in a particular view."@en ;
    rdfs:isDefinedBy : .

:closedAt
    a rdf:Property ;
    rdfs:domain :Conversation ;
    rdfs:range xsd:dateTime ;
    rdfs:label "closed at"@en ;
    rdfs:comment "The time at which a conversation stopped accepting ordinary contributions."@en ;
    rdfs:isDefinedBy : .

# Conformance profile identifiers

:ConversationCoreProfile
    a prof:Profile ;
    dcterms:title "Conversation Core Profile"@en ;
    dcterms:description "Constrains core conversation membership and participation while treating unavailable content and attribution as reportable completeness warnings rather than invalid data."@en ;
    rdfs:label "Conversation Core Profile"@en ;
    rdfs:comment "Minimum structural requirements for conversation membership, with completeness warnings for locally absent content and attribution."@en ;
    rdfs:isDefinedBy : .

:ThreadedConversationProfile
    a prof:Profile ;
    dcterms:title "Threaded Conversation Profile"@en ;
    dcterms:description "Constrains explicit thread membership and acyclic reply topology while requiring contributions grouped by a thread to belong to that thread's conversation."@en ;
    rdfs:label "Threaded Conversation Profile"@en ;
    rdfs:comment "Requirements for explicit threads and acyclic reply topology."@en ;
    rdfs:isDefinedBy : .

:TranscriptProfile
    a prof:Profile ;
    dcterms:title "Transcript Profile"@en ;
    dcterms:description "Constrains conversation records, ordered views, contextual memberships, and consistency between a view's recorded conversation and positioned contributions."@en ;
    rdfs:label "Transcript Profile"@en ;
    rdfs:comment "Requirements for conversation records, ordered views, and contextual memberships."@en ;
    rdfs:isDefinedBy : .

:AddressedMessageProfile
    a prof:Profile ;
    dcterms:title "Addressed Message Profile"@en ;
    dcterms:description "Constrains qualified addressing, message transmissions, account-or-agent senders, and recipient-specific deliveries."@en ;
    rdfs:label "Addressed Message Profile"@en ;
    rdfs:comment "Requirements for qualified addressing, transmissions, senders, deliveries, and recipients."@en ;
    rdfs:isDefinedBy : .

:ArtifactDiscussionProfile
    a prof:Profile ;
    dcterms:title "Artifact Discussion Profile"@en ;
    dcterms:description "Constrains conversations that claim to discuss managed artifacts by requiring at least one explicit discussed resource."@en ;
    rdfs:label "Artifact Discussion Profile"@en ;
    rdfs:comment "Requirements for conversations explicitly discussing one or more managed resources."@en ;
    rdfs:isDefinedBy : .

:TargetedCommentProfile
    a prof:Profile ;
    dcterms:title "Targeted Comment Profile"@en ;
    dcterms:description "Constrains comments that address whole resources or selected fragments through qualified targets and external selector vocabularies."@en ;
    rdfs:label "Targeted Comment Profile"@en ;
    rdfs:comment "Requirements for contributions targeting resources or selected fragments."@en ;
    rdfs:isDefinedBy : .

:ProvenanceRichProfile
    a prof:Profile ;
    dcterms:title "Provenance-Rich Profile"@en ;
    dcterms:description "Constrains contribution generation and attribution, reciprocal generation links, responsible activity association, and conditional revision, redaction, summary, regeneration, and invalidation provenance."@en ;
    rdfs:label "Provenance-Rich Profile"@en ;
    rdfs:comment "Requirements for explicit contribution generation, attribution, association, and derivation provenance."@en ;
    rdfs:isDefinedBy : .

:PositionAwareProfile
    a prof:Profile ;
    dcterms:title "Position-Aware Profile"@en ;
    dcterms:description "Combines conversation view constraints with Localization and Ordering validation for frame-aware positions and separate contested localization claims."@en ;
    rdfs:label "Position-Aware Profile"@en ;
    rdfs:comment "Requirements for loci, reference frames, contextual order, and contested temporal positions."@en ;
    rdfs:isDefinedBy : .

:AgentExecutionProfile
    a prof:Profile ;
    dcterms:title "Agent Execution Profile"@en ;
    dcterms:description "Constrains contribution roles, model invocations, tool requests, generated tool results, and the reciprocal PROV links between activities and outputs."@en ;
    rdfs:label "Agent Execution Profile"@en ;
    rdfs:comment "Requirements for model invocations, tool invocations, contribution roles, and generated tool results."@en ;
    rdfs:isDefinedBy : .
