@prefix lack: <https://purl.net/climatesense/lack/ns#> .
@prefix owl:  <http://www.w3.org/2002/07/owl#> .
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix xsd:  <http://www.w3.org/2001/XMLSchema#> .
@prefix dc:   <http://purl.org/dc/terms/> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix vann: <http://purl.org/vocab/vann/> .
@prefix voaf: <http://purl.org/vocommons/voaf#> .
@prefix cc:   <http://creativecommons.org/ns#> .
@prefix vs:   <http://www.w3.org/2003/06/sw-vocab-status/ns#> .
# ---------------------------------------------------------------
# Ontology declaration
# ---------------------------------------------------------------

<https://purl.net/climatesense/lack/ns#>
    a owl:Ontology ;
    rdfs:label "LACK Ontology"@en ;
    rdfs:comment "Lobbying Against Climate science Knowledge — a lightweight ontology for describing relationships between people and organisations relevant to lobbying against climate change awareness and policies."@en ;
    a voaf:Vocabulary ;
    vann:preferredNamespacePrefix "lack" ;
    vann:preferredNamespaceUri    "https://purl.net/climatesense/lack/ns#" ;
    dc:title                      "LACK Ontology"@en ;
    dc:description                "Lobbying Against Climate science Knowledge — a lightweight ontology for describing relationships between people and organisations relevant to lobbying against climate change awareness and policies."@en ;
    dc:issued                     "2026-04-26"^^xsd:date ;
    dc:modified                   "2026-04-28"^^xsd:date ;
    owl:versionInfo               "1.0" ;
    dc:creator                    <https://orcid.org/0000-0002-3184-5407> ;
    dc:publisher                  <https://climatesense-project.eu/> ;
    dc:rights                     "Copyright © 2026 Climate Sense Project"@en ;
    cc:license                    <https://creativecommons.org/licenses/by/4.0/> .

<https://orcid.org/0000-0002-3184-5407>
    a foaf:Person ;
    foaf:name "Enrico Daga" .

<https://climatesense-project.eu/>
    a foaf:Organization ;
    foaf:name "Climate Sense Project" .
# ---------------------------------------------------------------
# Classes
# ---------------------------------------------------------------

lack:Person
    a owl:Class ;
    rdfs:label "Person"@en ;
    rdfs:comment "An individual human being."@en .

lack:Collective
    a owl:Class ;
    rdfs:label "Collective"@en ;
    rdfs:comment "Any group of people organised around a shared purpose. Includes companies, NGOs, think tanks, news agencies, political assemblies, events, committees, and networks."@en .

# ---------------------------------------------------------------
# Top-level relation
# ---------------------------------------------------------------

lack:associatedWith
    a owl:ObjectProperty , owl:SymmetricProperty ;
    rdfs:label "associated with"@en ;
    rdfs:comment "General-purpose association or affiliation. Top-level relation from which most other relations in this ontology are derived."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

# ---------------------------------------------------------------
# Membership
# ---------------------------------------------------------------

lack:memberOf
    a owl:ObjectProperty ;
    rdfs:label "member of"@en ;
    rdfs:comment "Indicates that a person is a member of a collective."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:hasMember ;
    rdfs:domain lack:Person ;
    rdfs:range  lack:Collective .

lack:hasMember
    a owl:ObjectProperty ;
    rdfs:label "has member"@en ;
    rdfs:comment "Indicates that a collective has a person as a member."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:memberOf ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Person .

# ---------------------------------------------------------------
# Employment
# ---------------------------------------------------------------

lack:employedBy
    a owl:ObjectProperty ;
    rdfs:label "employed by"@en ;
    rdfs:comment "Indicates that a person is employed by a collective."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:hasEmployee ;
    rdfs:domain lack:Person ;
    rdfs:range  lack:Collective .

lack:hasEmployee
    a owl:ObjectProperty ;
    rdfs:label "has employee"@en ;
    rdfs:comment "Indicates that a collective employs a person."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:employedBy ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Person .

# ---------------------------------------------------------------
# Leadership
# ---------------------------------------------------------------

lack:leadsAt
    a owl:ObjectProperty ;
    rdfs:label "leads at"@en ;
    rdfs:comment "Indicates that a person holds a named leadership or responsibility role within an organisation or department. Covers CEO, president, chair, director, VP, treasurer, secretary, COO, and department-level director roles."@en ;
    rdfs:subPropertyOf lack:employedBy ;
    owl:inverseOf lack:hasLeader ;
    rdfs:domain lack:Person ;
    rdfs:range  lack:Collective .

lack:hasLeader
    a owl:ObjectProperty ;
    rdfs:label "has leader"@en ;
    rdfs:comment "Indicates that a collective has a person in a leadership or responsibility role."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:leadsAt ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Person .

# ---------------------------------------------------------------
# Funding
# ---------------------------------------------------------------

lack:fundedBy
    a owl:ObjectProperty ;
    rdfs:label "funded by"@en ;
    rdfs:comment "Indicates that an entity is funded by another. Covers funding, donation, commissioning, and award receipt."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:hasFunder ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

lack:hasFunder
    a owl:ObjectProperty ;
    rdfs:label "has funder"@en ;
    rdfs:comment "Indicates that an entity funds another."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:fundedBy ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

# ---------------------------------------------------------------
# Founding & Creation
# ---------------------------------------------------------------

lack:founded
    a owl:ObjectProperty ;
    rdfs:label "founded"@en ;
    rdfs:comment "Indicates that a person or collective founded another collective. Covers founding, co-founding, creation, incorporation, and launch."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:wasFoundedBy ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  lack:Collective .

lack:wasFoundedBy
    a owl:ObjectProperty ;
    rdfs:label "was founded by"@en ;
    rdfs:comment "Indicates that a collective was founded by a person or another collective."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:founded ;
    rdfs:domain lack:Collective ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

# ---------------------------------------------------------------
# Contribution
# ---------------------------------------------------------------

lack:contributedTo
    a owl:ObjectProperty ;
    rdfs:label "contributed to"@en ;
    rdfs:comment "Indicates that a person or collective contributed to a collective. Covers contribution, authorship, distribution, presentation, and reposting."@en ;
    owl:inverseOf lack:hasContributor ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  lack:Collective .

lack:hasContributor
    a owl:ObjectProperty ;
    rdfs:label "has contributor"@en ;
    rdfs:comment "Indicates that a collective has a person or collective as a contributor."@en ;
    owl:inverseOf lack:contributedTo ;
    rdfs:domain lack:Collective ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

# ---------------------------------------------------------------
# Partnership
# ---------------------------------------------------------------

lack:hasPartner
    a owl:ObjectProperty , owl:SymmetricProperty ;
    rdfs:label "has partner"@en ;
    rdfs:comment "Indicates an organisational partnership between two collectives."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Collective .

# ---------------------------------------------------------------
# Sponsorship
# ---------------------------------------------------------------

lack:sponsored
    a owl:ObjectProperty ;
    rdfs:label "sponsored"@en ;
    rdfs:comment "Indicates that an entity sponsored another. Covers sponsorship, promotion, patronage, and support."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:wasSponsoredBy ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

lack:wasSponsoredBy
    a owl:ObjectProperty ;
    rdfs:label "was sponsored by"@en ;
    rdfs:comment "Indicates that an entity was sponsored by another."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:sponsored ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

# ---------------------------------------------------------------
# Ownership & Acquisition
# ---------------------------------------------------------------

lack:acquired
    a owl:ObjectProperty ;
    rdfs:label "acquired"@en ;
    rdfs:comment "Indicates that a collective acquired another. Covers acquisition, ownership, controlling interest, and shareholding."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:wasAcquiredBy ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Collective .

lack:wasAcquiredBy
    a owl:ObjectProperty ;
    rdfs:label "was acquired by"@en ;
    rdfs:comment "Indicates that a collective was acquired by another."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:acquired ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Collective .

# ---------------------------------------------------------------
# Derivation
# ---------------------------------------------------------------

lack:derivedFrom
    a owl:ObjectProperty ;
    rdfs:label "derived from"@en ;
    rdfs:comment "Indicates that a collective is derived from another."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:hasDerivation ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Collective .

lack:hasDerivation
    a owl:ObjectProperty ;
    rdfs:label "has derivation"@en ;
    rdfs:comment "Indicates that a collective has another collective derived from it."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:derivedFrom ;
    rdfs:domain lack:Collective ;
    rdfs:range  lack:Collective .

# ---------------------------------------------------------------
# Event Organisation
# ---------------------------------------------------------------

lack:organised
    a owl:ObjectProperty ;
    rdfs:label "organised"@en ;
    rdfs:comment "Indicates that a person or collective organised an event or collective."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:wasOrganisedBy ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  lack:Collective .

lack:wasOrganisedBy
    a owl:ObjectProperty ;
    rdfs:label "was organised by"@en ;
    rdfs:comment "Indicates that a collective was organised by a person or another collective."@en ;
    rdfs:subPropertyOf lack:associatedWith ;
    owl:inverseOf lack:organised ;
    rdfs:domain lack:Collective ;
    rdfs:range  [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] .

# ---------------------------------------------------------------
# Temporal Activity — entity-level (datatype properties)
# ---------------------------------------------------------------

lack:activeSince
    a owl:DatatypeProperty ;
    rdfs:label "active since"@en ;
    rdfs:comment "The year from which a person or collective has been active."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  xsd:gYear .

lack:activeUntil
    a owl:DatatypeProperty ;
    rdfs:label "active until"@en ;
    rdfs:comment "The year until which a person or collective was active."@en ;
    rdfs:domain [ a owl:Class ; owl:unionOf ( lack:Person lack:Collective ) ] ;
    rdfs:range  xsd:gYear .

# ---------------------------------------------------------------
# Temporal annotation — reification-level (datatype properties)
#
# Used to annotate rdf:Statement instances produced by reifying
# any lack: object property triple that carries temporal metadata.
#
# Convention:
#   lack:since  — start year of the relation
#   lack:until  — end year of the relation
#   when        — point in time: set both lack:since and lack:until
#                 to the same year value
#
# The base triple is always asserted directly alongside the
# reified statement. Example:
#
#   :Alice lack:employedBy :Org .
#
#   :stmt1 a rdf:Statement ;
#       rdf:subject   :Alice ;
#       rdf:predicate lack:employedBy ;
#       rdf:object    :Org ;
#       lack:since    "2010"^^xsd:gYear ;
#       lack:until    "2020"^^xsd:gYear .
# ---------------------------------------------------------------

lack:since
    a owl:DatatypeProperty ;
    rdfs:label "since"@en ;
    rdfs:comment "The start year of a reified relation. Applied to an rdf:Statement instance."@en ;
    rdfs:domain rdf:Statement ;
    rdfs:range  xsd:gYear .

lack:until
    a owl:DatatypeProperty ;
    rdfs:label "until"@en ;
    rdfs:comment "The end year of a reified relation. Applied to an rdf:Statement instance. When the source annotation is 'when', set to the same value as lack:since."@en ;
    rdfs:domain rdf:Statement ;
    rdfs:range  xsd:gYear .

### STATUS
lack:Person
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:Collective
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:associatedWith
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:memberOf
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasMember
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:employedBy
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasEmployee
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:leadsAt
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasLeader
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:fundedBy
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasFunder
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:founded
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:wasFoundedBy
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:contributedTo
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasContributor
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasPartner
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:sponsored
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:wasSponsoredBy
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:acquired
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:wasAcquiredBy
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:derivedFrom
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:hasDerivation
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:organised
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:wasOrganisedBy
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:activeSince
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:activeUntil
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:since
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .

lack:until
    rdfs:isDefinedBy <https://purl.net/climatesense/lack/ns#> ;
    vs:term_status   "stable" .