# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [2.0.0] - 2025-12-17

Description : Namespace migration, import time and geo concepts, integration of temporal and geographical concepts, and addition of product variant concepts.

### Namespace 
The namespace is updated to be related to w3id : https://w3id.org/dfc/ontology/


### Import

#### Class
- http://www.w3.org/2002/12/cal/icaltz#Vevent
- http://www.w3.org/2002/12/cal/icaltz#Value_RECUR
- https://purl.org/geojson/vocab#Feature
- https://purl.org/geojson/vocab#Properties
- https://purl.org/geojson/vocab#Geometry
- https://purl.org/geojson/vocab#Point
- https://purl.org/geojson/vocab#Polygon

#### ObjectProperty
- http://www.w3.org/2002/12/cal/icaltz#rrule
- https://purl.org/geojson/vocab#geometry
- https://purl.org/geojson/vocab#properties

#### DataProperty
- http://www.w3.org/2002/12/cal/icaltz#byday
- http://www.w3.org/2002/12/cal/icaltz#bymonth
- http://www.w3.org/2002/12/cal/icaltz#dtend
- http://www.w3.org/2002/12/cal/icaltz#dtstart
- http://www.w3.org/2002/12/cal/icaltz#freq
- http://www.w3.org/2002/12/cal/icaltz#interval
- https://purl.org/geojson/vocab#coordinates

### Added

#### Class
- ProductOption, subClassOf Option
- ProductOptionValue, subClassOf What_Subject
- Variant, subClassOf What_Subject
- VariantCaracteristic, subClassOf What_Subject
- TemplateSaleSession, subClassOf DFC_BusinessOntology_Relation
- Route, subClassOf Where_Subject
- Step, subClassOf Where_Subject
- PickUpStep, subClassOf Step
- DeliveryStep, subClassOf Step

#### Property
- hasTemplateSaleSession, domain : Organization, inverseOf : isTemplateSaleSessionOf
- isTemplateSaleSessionOf, domain: TemplateSaleSession, inverseOf : hasTemplateSaleSession
- occursAt, domain: SaleSession, range: cal:Vevent
- hasGeoJsonFeature, domain: (PhysicalPlace or Route), range: geojson:Feature
- hasMember, domain: CustomerCategory, inverseOf: isMemberOf
- hasProductOption, domain: VariantCaracteristic, range: ProductOption
- hasProductOptionValue, domain: VariantCaracteristic, range: ProductOptionValue
- hasReferenceProductOption, domain: DefinedProduct, range: ProductOption
- hasReferenceProductOptionValue, domain: ProductOption, range: ProductOptionValue
- hasVariantCaracteristic, domain: Variant, range: VariantCaracteristic
- isMemberOf, domain: Agent, inverseOf: hasMember
- isCertifiedBy, domain: Organization, inverseOf: certifies
- certifies, domain: Certification, inverseOf: isCertifiedBy
- hasStep, domain: Route, inverseOf: isStepOf
- isStepOf, domain: Step, inverseOf: hasStep
- usedInRoute, domain: Step, range: Route
- useVehicle, domain: Step, range: Vehicle

#### DataProperty
- operatorid, domain: Certification, range: xsd:string
- certificationScore, domain: Certification, range: xsd:string,
- certificationReference, domain: Certification, range: xsd:string
- arrivalDate, domain: Step, range: xsd:dateTime
- duration, domain: Step, range: xsd:duration

### Changed
- Namespace: https://github.com/datafoodconsortium/... -> https://w3id.org/dfc/...
- Rename:: Enterprise -> Organization
- EquivalentClass: Agent and http://www.w3.org/2006/vcard/ns#Agent
- EquivalentClass: Person and http://www.w3.org/2006/vcard/ns#Individual
- EquivalentClass: Organization and http://www.w3.org/2006/vcard/ns#Organization
- Disjunction: Point and Polygon
- Constraint 1:1 for Stock:availabilityDate
- Constraint 1:1 for PaymentMethod:paymentMethodProvider
- Constraint 1:1 for PaymentMethod:paymentMethodType
- Domain : beginDate, (AsPlannedLocalTransformation | AsRealizedTransformation | SaleSession | Shipment | Shipping option) -> (AsPlannedTransformation | AsRealizedTransformation | Catalog | SaleSession | Shipment | Shipping option)
- Domain : endDate, (AsPlannedLocalTransformation | AsRealizedTransformation | SaleSession | Shipment | Shipping option) -> (AsPlannedTransformation | AsRealizedTransformation | Catalog | SaleSession | Shipment | Shipping option)
- Domain : isVariantOf, DefinedProduct -> Variant

## [1.16.0] - 2025-07-10

Description : Addition of reference list for country

### Added

#### ObjectProperty
- hasCountry, domain: Address, range: skos:concept and (skos:inScheme value http://publications.europa.eu/resource/authority/country/0001)

#### AnnotationProperty
- terms:requires

### Deleted

#### ObjectProperty
- composes/composedBy

#### DataProperty
- country

### Changed
- Range : hasFulfilmentStatus (skos:Concept and (skos:broader value FulfilmentState) and (skos:inScheme value DFC_Vocabulary)) -> (skos:Concept and (skos:broader value FulfilmentStatus) and (skos:inScheme value DFC_Vocabulary))
- Range : hasOrderStatus (skos:Concept and (skos:broader value OrderState) and (skos:inScheme value DFC_Vocabulary)) -> (skos:Concept and (skos:broader value OrderStatus) and (skos:inScheme value DFC_Vocabulary))
- Range : hasPaymentStatus (skos:Concept and (skos:broader value PaymenttState) and (skos:inScheme value DFC_Vocabulary)) -> (skos:Concept and (skos:broader value PaymenttStatus) and (skos:inScheme value DFC_Vocabulary))

## [1.15.0] - 2025-02-17

Description : Addition of variant product description and logisitics concepts

### Import

#### Class 
- https://schema.org/OpeningHoursSpecification

#### DataProperty
- https://schema.org/opens
- https://schema.org/closes
- https://schema.org/dayOfWeek

#### DataTypes
- https://schema.org/DayOfWeek

### Added

#### Class
- Shipment, subClassOf DFC_BusinessOntology_Relation
- Vehicle, subClassOf What_Subject

#### Property
- hasVariant, domain: DefinedProduct, inverseOf: isVariantOf
- isVariantOf, domain: DefinedProduct, inverseOf : hasVariant
- isOpenDuring, domain : PhysicalPlace, range : OpeningHoursSpecification
- isAvailableDuring, domain : Vehicle, range : OpeningHoursSpecification
- basedAt, domain : Vehicle, range : PhysicalPlace
- transportedBy, domain : Stock, inverseOf : transports
- transports, domain : Shipment, inverseOf : transportedBy
- startsAt, domain : Shipment, range : PhysicalPlace
- endsAt, domain : Shipment, range : PhysicalPlace
- ships, domain : Vehicle, inverseOf : isShippedIn
- isShippedIn, domain : Shipment, inverseOf : ships

### Deleted

#### Property
- quantity

### Changed
- Domain : hasQuantity, (DefinedProduct | Ingredient | OrderLine) -> (ConsumptionFlow | DefinedProduct | Ingredient | LocalizedProduct | OrderLine | PhysicalProduct | ProductionFlow | SaleSession | ShippingOption | Stock | Transaction | Vehicle)
- Domain : beginDate, (AsPlannedLocalTransformation | AsRealizedTransformation | SaleSession | Shipping option) ->  (AsPlannedLocalTransformation | AsRealizedTransformation | SaleSession | Shipment | Shipping option)
- Domain : endDate, (AsPlannedLocalTransformation | AsRealizedTransformation | SaleSession | Shipping option) ->  (AsPlannedLocalTransformation | AsRealizedTransformation | SaleSession | Shipment | Shipping option)


## [1.14.0] - 2024-11-13

Description : Addition of a link to connect a command line and the physical product for logistics and traceability, and definitions of classes and properties to enrich the ontology description.

### Added

#### Definitions
- A list of definitions has been added to the ontologie to describe Classes

#### Property
- fulfills, domain: PhysicalProduct, inverseOf: fullfilledBy
- fulfilledBy, domain: OrderLine, inverseOf: fullfills

#### Context
- 1.9.0, 1.10.0, 1.11.0, 1.11.1, 1.12.0, 1.13.0

#### Scripts
- context-generator : python script to generate context from rdf ontology file
- uri_standerdizer  : python script to standardized uris from predefied format and deprecated last uris

### Changed
#### Property
- concerns, domain: Offer, inverseOf: concernedBy
- Domain : hasPrice, (Offer|PaymentMethod|Transaction) -> (Offer|PaymentMethod|Transaction|OrderLine)

## [1.13.0] - 2024-05-30

Descriptin : Addition of classes to describe a product's weight, volume, and length more precisely.

### Added

#### Class
-   Weight, subClassOf: QuantitativeValue.
-   Volume, subClassOf: QuantitativeValue.
-   Length, subClassOf: QuantitativeValue.

#### Property
- holds, domain: SaleSession, inverseOf: belongsTo
- hasOffer, domain: CustomerCategory, inverseOf: offersTo
- selectedBy, domain: ShippingOption, inverseOf: selects

### Changed
- added missing `InverseObjectProperties` opening bracket for `sells`/`soldBy` (owl file now parses/loads in Protege)
- Domain : belongsTo, (Order | Agent) -> Order
- Rename: sold -> sells
- subpropertyOf hasStatus : DFC_BusinessOntology_ObjectProperty -> subpropertyOf DFC_Interface_Property
- subpropertyOf hasTransformationType : DFC_BusinessOntology_ObjectProperty -> subpropertyOf DFC_Interface_Property

### Deleted

#### Property (deprecated)
- refersTo
- suppliesTo
- uses

## [1.12.1] - 2024-02-01
### Added
- file context_1.8.2.json

## [1.12.0] - 2024-02-01

Description : Add a link to describe the agent who made a sale.

### Added

#### Property
- sold, domain: Agent, inverseOf: soldBy
- soldBy, domain: Order, inverseOf: sold
- hasTransformationType, domain: AsPlannedTransformation, range: skos:Concept and (skos:broader value TransformationType) and (skos:inScheme value DFC_Vocabulary)

## [1.11.1] - 2024-01-29
### Added
- upgrade context.json to add tech ontology object property and owner (required to prototype)
    - dfc-t:represent
    - dfc-t:hasPivot
    - dfc-t:hostedBy
    - dfc:owner

## [1.11.0] - 2024-01-11

Description : Added region to describe geolocation.

### Added

#### Property
- region, domain: Address, range: xsd:string

### Changed
- Rename: hasIncome -> hasInput
- Rename: hasOutcome -> hasOutput
- Rename: incomeOf -> inputOf
- Rename: outcomeOf -> outputOf


## [1.10.0] - 2023-12-22

Description : Addition of fulfillment, order, and payment statuses to characterize the order during its process from purchase to delivery.

### Added

#### Property
- hasStatus
- hasFulfilmentStatus, domain: Order, range: skos:Concept and (skos:broader value FulfilmentState) and (skos:inScheme value DFC_Vocabulary), subpropertyOf: hasStatus
- hasOrderStatus, domain: Order, range: skos:Concept and (skos:broader value OrderState) and (skos:inScheme value DFC_Vocabulary), subpropertyOf: hasStatus
- hasPaymentStatus, domain: Order, range: skos:Concept and (skos:broader value PaymentState) and (skos:inScheme value DFC_Vocabulary), subpropertyOf: hasStatus

#### Domain
- physicalCharacteristicsOf: PhysicalCharacteristic

#### Range
- stocklimitation: xsd:float
- totalTheoreticalStock: xsd:float

#### Properties characteristics
- inverse property: hasLabellingCharacteristic inverseOf labellingCharacteristicOf

### Changed
- PhysicalProduct: subClassOf (consumedBy only AsRealisedProductionFlow) -> subClassOf (consumedBy only AsRealisedConsumptionFlow)
- Address: subClassOf addressOf only Person and subClassOf addressOf only PhysicalPlace -> subClassOf addressOf only (Person or PhysicalPlace)
- Agent: subClassOf owns only PhysicalProduct -> subClassOf owns only (PhysicalProduct or Brand)
- mainContactOf: subPropertyOf affiliatedBy -> mainContactOf subPropertyOf DFC_BusinessOntology_ObjectProperty
- hasMainContact: subPropertyOf affiliates -> hasMainContact subPropertyOf  DFC_BusinessOntology_ObjectProperty
- Person: mainContactOf only Enterprise -> mainContactOf only (Enterprise or PhysicalPlace)
- Domain: magages, Agent -> Enterprise
- Domain: affiliatedTo, Enterprise -> Agent
- Domain: websitePage, (Agent or VirtualPlace) -> (Agent or VirtualPlace or SocialMedia)
- Rename: affiliatedBy -> affiliatedTo

### Removed

#### Properties characteristics
- symmetry: referencedBy

### Fixed
- upgrade context.json to match ontology
    - replace dfc-b:offeres by dfc-b:offers
    - add dfc-b:offersTo as uri predicate
    - add dfc-b:affiliatedB as uri predicate
    - add dfc-b:orders as uri predicate
    - add dfc-b:orderedBy as uri predicate
    - add dfc-b:hasPart as uri predicate
    - add dfc-b:partOf as uri predicate
    - add dfc-b:belongsTo as uri predicate
    - add dfc-b:selects as uri predicate
    - add dfc-b:concerns as uri predicate
    - add dfc-b:uses as uri predicate
    - add dfc-b:hasOption as uri predicate
    - add dfc-b:hostedAt as uri predicate
    - add dfc-b:lists as uri predicate
    - add dfc-b:listedIn as uri predicate
    - add dfc-b:objectOf as uri predicate
    - add dfc-b:managedBy as uri predicate
    - add dfc-b:coordinatedBy as uri predicate
    - add dfc-b:hasObject as uri predicate
    - add dfc-b:localizedBy as uri predicate
    - add dfc-b:constitutes as uri predicate
    - add dfc-b:identifiedBy as uri predicate
    - add dfc-b:storedIn as uri predicate

## [1.9.0] - 2023-10-05

Description : Information on temperature (refrigerated, frozen, ambient), delivery options, payment methods, packaging, and delivery restrictions has been included in the common protocol.

### Added

#### Class

-   Temperature, subClassOf: QuantitativeValue.

#### ObjectProperty

-   containerInformationOf, domain: skos:Concept and (skos:broader value ContainerInformation) and (skos:inScheme value DFC_ProductGlossary_Facet), subPropertyOf: facetOf, inverseOf: hasContainerInformation.
-   hasContainerInformation, domain: DefinedProduct, subPropertyOf: hasFacet, inverseOf: containterInformationOf.
-   deliveredAt, domain: DeliveryOption.
-   pickedUpAt, domain: PickupOption.
-   hasPaymentMethod, domain: Order, inverseOf: paidWith.
-   paidWith, domain: PaymentMethod, inverseOf: hasPaymentMethod.
-   hasTemperature, domain: SuppliedProduct, inverseOf: hasTemperature.
-   isTemperatureOf, domain: Temperature, inverseOf: hasTemperature.

#### DataProperty

-   minValue, domain: QuantitativeValue, range: float, subPropertyOf: value.
-   maxValue, domain: QuantitativeValue, range: float, subPropertyOf: value.
-   accessibilityInfo, domain: DeliveryOpiton, range: string.
-   deliveryConstraint, domain: DeliveryOption, range: string.
-   frozen, domain: SuppliedProduct, range: boolean.
-   refrigerated, domain: SuppliedProduct, range: boolean.

### Changed

-   Domain hasMainContact: Enterprise -> (Enterprise or PhysicalPlace).
-   Domain hasPhoneNumber: Agent -> (Agent or PhysicalPlace).

### Removed

####

-   Facets classes

#### ObjectProperty

-   refersTo.
-   uses.

## [1.8.0] - 2023-10-03

Context : Addition of telephone numbers (necessary for communication between parties at the time of delivery).

### Added

-   Add creators: florenceA, baptisteD.
-   Add contributors: maximeL, garetheH.
-   Add .gitignore file.
-   Add the DFC_BusinessOntology.graphml file in the conception folder.

#### Class

-   PhoneNumber subClassOf What Subject.
-   SocialMedia subClassOf What Subject.

#### ObjectProperty

-   hasPhoneNumber: domain Agent, inverse: phoneNumberOf.
-   phoneNumberOf: domain PhoneNumber, inverse: hasPhoneNumber.
-   hasSocialMedia: domain Agent, inverse: socialMediaOf.
-   socialMediaOf: domain SocialMedia, inverse: hasSocialMedia.

#### DataProperty

-   discount: domain (Offer | Order | OrderLine), range: float.
-   websitePage: domain (Agent | VirtualPlace), range: anyURI.
-   countryCode: domain PhoneNumber, range: nonNegativeInteger

### Changed

-   Domain hasQuantity: (DefinedProduct | Ingredient) -> (DefinedProduct | Ingredient | OrderLine).
-   Domain concernedBy: (DefinedProduct | PhysicalProduct) -> (Offer | PhysicalProduct).
-   Domain manages: Enterprise -> Agent.
-   Domain logo: Enterprise -> Agent.
-   ClassName: Repository -> Catalog.
-   Domain phoneNumber: Agent -> PhoneNumber.
-   Range date: date -> dateTime.
-   Replace all links to "static.datafoodconsortium.org" by links to "github.com/datafoodconsortium/.../releases/latest/".
-   Remove link to contributors file.
-   Version number updated to 1.8.0.
-   Last modified date to 2023-02-13.
-   Moved the "context.json" file at the root.

### Removed

-   InstagramPage, LinkedinPage, TwitterPage, facebookPage.
-   Cardiality: stockLimitation.
-   The file `ontologies/catalog-v001.xml` was auto-generated by Protégé.
-   The `businessAPI/` folder has been moved to a [dedicated repository](https://github.com/datafoodconsortium/business-api).
-   The conception PDF files are now released as assets.
-   The `img/` folder contained only the DFC logo wich is hosted [here](https://www.datafoodconsortium.org/wp-content/uploads/2021/04/dfc-logo.png).
-   The `uml/` folder containing the data model has been moved to a [dedicated repository](https://github.com/datafoodconsortium/data-model-uml).
-   The `data/` folder containing taxonomies has been moved to a [dedicated repository](https://github.com/datafoodconsortium/taxonomies).
-   The "static.datafoodconsortium.org" site is replaced by our GitHub home pages so the `CNAME` file and `index.html` are now removed.

## [1.7.3] - 2022-06-03

### Added

#### Class

-   LabellingCharacteristic.

#### ObjectProperty

-   hasLabellingCharacteristic, domain: DefinedProduct.
-   hasLabellingDimension, domain: LabellingCharacteristic.
-   labellingCharacteristicOf, domain: LabellingCharacteristic.
-   labellingDimensionOf, domain: Dimension.

#### DataProperty

-   availabilityDate, domain: Stock.
-   bestBeforeDate, domain: ProductBatch, range: xsd:date.

#### Changed

-   Domain: date, Stock -> (DFC_BusinessOntology_Relation | DFC_BusinessOntology_Subject).

## [1.7.2] - 2022-06-02

### Added

#### Class

-   Ingredient

#### Property

-   composedOf, domain: Ingredient, inverseOf: composes.
-   composes, domain: DefinedProduct, inverseOf: composedOf.
-   hasIngredient, domain: DefinedProduct, inverseOf: isIngredientOf.
-   isIngredientOf, domain: Ingredient, inverseOf: hasIngredient.

### Changed

-   Domain: DefinedProduct hasQuantity -> (DefinedProduct | Ingredient) hasQuantity.

## [1.7.1] - 2022-05-17

### Added

#### Class

-   Price: subpropertyOf QuantitativeValue.

#### ObjectProperty

-   (Offer | PaymentMethod | Transaction ) hasPrice, inverse of isPriceOf.
-   Price isPriceOf, inverse of hasPrice.

#### DataProperty

-   VATrate, domain: Price, range: float.
-   availabilityTime, domain: SuppliedProduct, range: xsd:duration.
-   deliveryCondition, domain: SuppliedProduct, range: xsd:string.
-   extraAvailabilityTime, domain: CatalogItem, range: xsd:duration.
-   extraDeliveryCondition, domain: CatalogItem, range: xsd:string.
-   name, domain: DFC_BusinessOntology_Subject, range: xsd:Name.

#### Changed

-   Domain: VirtualPlace URL -> (DefinedProduct | VirtualPlace) URL.

#### DataProperty

-   price, domain: (Offer | PaymentMethod | Transaction), range: float.

## [1.7.0] - 2022-04-11

-   Introduction of facets vocabulary, remove link to ProductGlossary.

### Added

#### Class

-   Brand: A product can be from an entreprise but an entreprise can manage different brands.

#### Changed

-   http://static.datafoodconsortium.org/ontologies/DFC_ProductGlossary.owl# -> http://static.- datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#.
-   Domain for subproperty of facetOf: http://static.datafoodconsortium.org/ontologies/- DFC_ProductGlossary.owl#{Facet} -> INSTANCE a skos:Concept AND skos:inScheme http://static.- datafoodconsortium.org/ontologies/DFC_ProductGlossary.owl#{Facet}.
-   dfc_b:referencedBy inverseOf dfc_b:referencedBy -> dfc_b:referencedBy inverseOf references.

#### Removed

-   Brand as a Facet.

[unreleased]: https://github.com/datafoodconsortium/ontology/compare/v2.0.0...master
[2.0.0]: https://github.com/datafoodconsortium/ontology/compare/v1.16.0...v2.0.0    
[1.16.0]: https://github.com/datafoodconsortium/ontology/compare/v1.15.0...1.16.0
[1.15.0]: https://github.com/datafoodconsortium/ontology/compare/v1.14.0...1.15.0
[1.14.0]: https://github.com/datafoodconsortium/ontology/compare/v1.13.0...1.14.0
[1.13.0]: https://github.com/datafoodconsortium/ontology/compare/v1.12.1...1.13.0
[1.12.1]: https://github.com/datafoodconsortium/ontology/compare/v1.12.0...v1.12.1
[1.12.0]: https://github.com/datafoodconsortium/ontology/compare/v1.11.1...v1.12.0
[1.11.1]: https://github.com/datafoodconsortium/ontology/compare/v1.11.0...v1.11.1
[1.11.0]: https://github.com/datafoodconsortium/ontology/compare/v1.10.0...v1.11.0
[1.10.0]: https://github.com/datafoodconsortium/ontology/compare/v1.9.2...v1.10.0
[1.9.2]: https://github.com/datafoodconsortium/ontology/compare/v1.9.1...v1.9.2
[1.9.1]: https://github.com/datafoodconsortium/ontology/compare/v1.9.0...v1.9.1
[1.9.0]: https://github.com/datafoodconsortium/ontology/compare/v1.8.0...v1.9.0
[1.8.0]: https://github.com/datafoodconsortium/ontology/compare/v1.7.3...v1.8.0
[1.7.3]: https://github.com/datafoodconsortium/ontology/compare/v1.7.2...v1.7.3
[1.7.2]: https://github.com/datafoodconsortium/ontology/compare/v1.7.1...v1.7.2
[1.7.1]: https://github.com/datafoodconsortium/ontology/compare/v1.7.0...v1.7.1
[1.7.0]: https://github.com/datafoodconsortium/ontology/tree/v1.7.0
