diff --git a/.github/workflows/ruby.yml b/.github/workflows/ruby.yml index 85a53b5..f71629c 100644 --- a/.github/workflows/ruby.yml +++ b/.github/workflows/ruby.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - ruby-version: ['3.1', '3.2', '3.3', '3.4'] + ruby-version: ['3.2', '3.3', '3.4'] steps: - uses: actions/checkout@v3 diff --git a/CHANGELOG.md b/CHANGELOG.md index 58f07c3..fecd8cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,73 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [1.4.0] - 2026-06-15 + +Generated from [UML model 3.4.0](https://github.com/datafoodconsortium/data-model-uml/releases/tag/v3.4.0) using the [Connector codegen 1.2.0](https://github.com/datafoodconsortium/connector-codegen/releases/tag/v1.2.0). + +To avoid name conflict with newer major versions, this version has been published as a new package https://rubygems.org/gems/datafoodconsortium-connector-v1. + +The module name has been changed to DataFoodConsortium::ConnectorV1, the package files and folder were renamed to connector_v1. + +**This version contains breaking changes introduced by the ontology, see below.** + +### Added + +Accessors and mutators: +- Add `Agent:socialMedias` setter. +- Add `Agent:websites` setter. +- Add `Agent:emails` setter. +- Add `Catalog:maintainers` setter and remover. +- Add `Catalog:items` setter. +- Add `CatalogItem:catalogs` setter and wrong remover. +- Add `CatalogItem:offers` setter and remover. +- Add `CustomerCategory:name` getter and setter. +- Add `DefinedProduct:partOrigin` setter. +- Add `DefinedProduct:natureOrigin` setter. +- Add `DefinedProduct:certifications` setter. +- Add `DefinedProduct:localizedProducts` accessors and mutators. +- Add `DefinedProduct:catalogItems` setter and remover. +- Add `DefinedProduct:images` adder, getter, setter and remover. +- Add `DefinedProduct:physicalCharacteristics` setter. +- Add `DefinedProduct:nutrientCharacteristics` setter. +- Add `DefinedProduct:allergenCharacteristics` setter. +- Add `DefinedProduct:claims` setter. +- Add `Enterprise:affiliates` accessors and mutators (affiliates). +- Add `Enterprise:technicalProducts` setter and remover. +- Add `Enterprise:catalogItems` setter and remover. +- Add `Enterprise:customerCategories` setter and remover. +- Add `Enterprise:suppliedProducts` setter and remover. +- Add `Order:lines` setter and remover. +- Add `Order:paymentMethod` getter and setter. +- Add `Person:affiliatedOrgs` setter. +- Add `SaleSession:offers` setter and remover. + +New objects: +- Add `OpeningHoursSpecification`. + +Tests: +- Add test for `Catalog`. +- Add test for `LocalizedProduct`. + +### Fixed + +- Fix `Agent:localizations` setter. +- Fix `Agent:phoneNumbers` setter. +- Fix `LocalizedProduct:theoreticalStocks` wrong type (now `ITheoreticalStock`). + +### Changed + +- `Address:country` is now a `ISKOSConcept` to reflect ontology v1.16 state (**breaking change**). +- Rename `hasIncome` -> `hasInput` and `hasOutcome` -> `hasOutput` in `PlannedTransformation` (**breaking change**). +- Rename `incomeOf` > `inputOf` in `PlannedConsumptionFlow` (**breaking change**). +- Rename `outcomeOf` -> `outpufOf` in `PlannedProductionFlow` (**breaking change**). +- Rename `PhysicalPlace:addresses` to `PhysicalPlace:address` (singular) to support correct cardinatility (**breaking change**). +- Rename `PhysicalPlace:mainContact` to `PhysicalPlace:mainContacts` (plural) to support correct cardinatility (**breaking change**). + +### Removed + +- Remove the `Quantity` class as there is no such class in the ontology. We should use `QuantitativeValue` (**breaking change**). + ## [1.3.0] - 2025-12-17 This version has been generated using: @@ -191,7 +258,10 @@ This version has been generated using the [code generator](https://github.com/da - Initial version of this library. -[unreleased]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.1.0...HEAD +[unreleased]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.4.0...HEAD +[1.4.0]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.3.0...v1.4.0 +[1.3.0]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.2.0...v1.3.0 +[1.2.0]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.0.0...v1.1.0 [1.0.0]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.0.0-alpha.13...v1.0.0 [1.0.0-alpha.13]: https://github.com/datafoodconsortium/connector-ruby/compare/v1.0.0-alpha.12...v1.0.0-alpha.13 diff --git a/Gemfile.lock b/Gemfile.lock index 1b27cdc..c583eec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - datafoodconsortium-connector (1.3.0) + datafoodconsortium-connector-v1 (1.4.0.pre.beta8) virtual_assembly-semantizer (~> 1.0, >= 1.0.5) GEM @@ -23,9 +23,9 @@ GEM rexml (~> 3.2) link_header (0.0.8) logger (1.7.0) - multi_json (1.18.0) + multi_json (1.21.1) ostruct (0.6.3) - rack (3.2.4) + rack (3.2.6) rdf (3.3.4) bcp47_spec (~> 0.2) bigdecimal (~> 3.1, >= 3.1.5) @@ -47,19 +47,45 @@ GEM rspec-expectations (3.13.5) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.7) + rspec-mocks (3.13.8) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-support (3.13.6) + rspec-support (3.13.7) virtual_assembly-semantizer (1.1.1) json-ld (~> 3.2, >= 3.2.3) PLATFORMS + ruby x86_64-linux DEPENDENCIES - datafoodconsortium-connector! + datafoodconsortium-connector-v1! rspec +CHECKSUMS + bcp47_spec (0.2.1) sha256=3fd62edf96c126bd9624e4319ac74082a966081859d1ee0ef3c3041640a37810 + bigdecimal (3.3.1) sha256=eaa01e228be54c4f9f53bf3cc34fe3d5e845c31963e7fcc5bedb05a4e7d52218 + datafoodconsortium-connector-v1 (1.4.0.pre.beta8) + diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962 + htmlentities (4.4.2) sha256=bbafbdf69f2eca9262be4efef7e43e6a1de54c95eb600f26984f71d2fe96c5c3 + io-console (0.8.2) sha256=d6e3ae7a7cc7574f4b8893b4fca2162e57a825b223a177b7afa236c5ef9814cc + json-canonicalization (1.0.0) sha256=d4848a8cca7534455c6721f2d9fc9e5e9adca49486864a898810024f67d59446 + json-ld (3.3.2) sha256=b9531893bf5bdc01db428e96953845a23adb1097125ce918ae0f97c4a6e1ab27 + link_header (0.0.8) sha256=15c65ce43b29f739b30d05e5f25c22c23797e89cf6f905dbb595fb4c70cb55f9 + logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 + multi_json (1.21.1) sha256=e6126a31808e3b4d19f483c775ceac34df190dffa62adfb63a165ee14ba68080 + ostruct (0.6.3) sha256=95a2ed4a4bd1d190784e666b47b2d3f078e4a9efda2fccf18f84ddc6538ed912 + rack (3.2.6) sha256=5ed78e1f73b2e25679bec7d45ee2d4483cc4146eb1be0264fc4d94cb5ef212c2 + rdf (3.3.4) sha256=a77fa0821e5b4e2bea9fdbb7c9d980564c89d27e81979690ce5c9e6bc80859c1 + readline (0.0.4) sha256=6138eef17be2b98298b672c3ea63bf9cb5158d401324f26e1e84f235879c1d6a + reline (0.6.3) sha256=1198b04973565b36ec0f11542ab3f5cfeeec34823f4e54cebde90968092b1835 + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587 + rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d + rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836 + rspec-mocks (3.13.8) sha256=086ad3d3d17533f4237643de0b5c42f04b66348c28bf6b9c2d3f4a3b01af1d47 + rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c + virtual_assembly-semantizer (1.1.1) sha256=a8ce46cd525ce7875a07da7f513c7045cb9c2ee6c32980f7245ffd0d718ba94f + BUNDLED WITH - 2.6.9 + 4.0.3 diff --git a/README.md b/README.md index 1c122be..8b6d7fd 100644 --- a/README.md +++ b/README.md @@ -234,3 +234,9 @@ To run them, just type `rspec`. Contributions are welcome. The Pull Requests should be made on our [source code generator repository](https://github.com/datafoodconsortium/connector-codegen-ruby) as the code hosted on this repository is generated. + +To make the lockfile (*Gemfile.lock*), type `bundler lock`. + +To generate the *.gem*, type `gem build connector_v1.gemspec`. + +To push the generated gem to rubygem.org, type `gem push -k dfc datafoodconsortium-connector-<...>.gem` where *dfc* is your credential key. \ No newline at end of file diff --git a/connector.gemspec b/connector_v1.gemspec similarity index 57% rename from connector.gemspec rename to connector_v1.gemspec index 2fa02a3..f587159 100644 --- a/connector.gemspec +++ b/connector_v1.gemspec @@ -1,19 +1,19 @@ Gem::Specification.new do |s| - s.name = "datafoodconsortium-connector" - s.version = "1.3.0" - s.summary = "Data Food Consortium connector" + s.name = "datafoodconsortium-connector-v1" + s.version = "1.4.0-beta8" + s.summary = "Data Food Consortium connector version 1 (legacy)" s.description = "A library to easily integrate the DFC standard within your application." s.authors = ["Maxime Lecoq", "Maikel Linke"] s.email = "maxime@lecoqlibre.fr" s.files = Dir["lib/**/*.*"] - s.homepage = "https://github.com/datafoodconsortium/connector-ruby/" + s.homepage = "https://github.com/datafoodconsortium/connector-ruby/releases/tag/v1.4.0" s.license = "MIT" s.metadata = { "changelog_uri" => - "https://github.com/datafoodconsortium/connector-ruby/blob/main/CHANGELOG.md", + "https://github.com/datafoodconsortium/connector-ruby/releases/tag/v1.4.0/blob/main/CHANGELOG.md", "source_code_uri" => - "https://github.com/datafoodconsortium/connector-ruby/", + "https://github.com/datafoodconsortium/connector-ruby/releases/tag/v1.4.0/", } s.add_runtime_dependency "virtual_assembly-semantizer", "~> 1.0", ">= 1.0.5" diff --git a/lib/datafoodconsortium/connector.rb b/lib/datafoodconsortium/connector.rb deleted file mode 100644 index cf94694..0000000 --- a/lib/datafoodconsortium/connector.rb +++ /dev/null @@ -1,59 +0,0 @@ -module DataFoodConsortium - module Connector - require 'datafoodconsortium/connector/connector' - require 'datafoodconsortium/connector/json_ld_serializer' - require 'datafoodconsortium/connector/skos_parser_element' - require 'datafoodconsortium/connector/skos_parser' - require 'datafoodconsortium/connector/agent.rb' - require 'datafoodconsortium/connector/customer_category.rb' - require 'datafoodconsortium/connector/enterprise.rb' - require 'datafoodconsortium/connector/person.rb' - require 'datafoodconsortium/connector/phone_number.rb' - require 'datafoodconsortium/connector/social_media.rb' - require 'datafoodconsortium/connector/address.rb' - require 'datafoodconsortium/connector/allergen_characteristic.rb' - require 'datafoodconsortium/connector/characteristic.rb' - require 'datafoodconsortium/connector/nutrient_characteristic.rb' - require 'datafoodconsortium/connector/physical_characteristic.rb' - require 'datafoodconsortium/connector/quantitative_value.rb' - require 'datafoodconsortium/connector/quantity.rb' - require 'datafoodconsortium/connector/defined_product.rb' - require 'datafoodconsortium/connector/flow.rb' - require 'datafoodconsortium/connector/localized_product.rb' - require 'datafoodconsortium/connector/physical_product.rb' - require 'datafoodconsortium/connector/planned_consumption_flow.rb' - require 'datafoodconsortium/connector/planned_local_consumption_flow.rb' - require 'datafoodconsortium/connector/planned_local_production_flow.rb' - require 'datafoodconsortium/connector/planned_local_transformation.rb' - require 'datafoodconsortium/connector/planned_production_flow.rb' - require 'datafoodconsortium/connector/planned_transformation.rb' - require 'datafoodconsortium/connector/realized_consumption_flow.rb' - require 'datafoodconsortium/connector/realized_production_flow.rb' - require 'datafoodconsortium/connector/realized_transformation.rb' - require 'datafoodconsortium/connector/supplied_product.rb' - require 'datafoodconsortium/connector/technical_product.rb' - require 'datafoodconsortium/connector/catalog.rb' - require 'datafoodconsortium/connector/catalog_item.rb' - require 'datafoodconsortium/connector/delivery_option.rb' - require 'datafoodconsortium/connector/offer.rb' - require 'datafoodconsortium/connector/order.rb' - require 'datafoodconsortium/connector/order_line.rb' - require 'datafoodconsortium/connector/payment_method.rb' - require 'datafoodconsortium/connector/physical_place.rb' - require 'datafoodconsortium/connector/pickup_option.rb' - require 'datafoodconsortium/connector/price.rb' - require 'datafoodconsortium/connector/product_batch.rb' - require 'datafoodconsortium/connector/real_stock.rb' - require 'datafoodconsortium/connector/sale_session.rb' - require 'datafoodconsortium/connector/shipping_option.rb' - require 'datafoodconsortium/connector/theoretical_stock.rb' - require 'datafoodconsortium/connector/virtual_place.rb' - require 'datafoodconsortium/connector/skos_concept.rb' - - def self.semantic_types - constants.map(&method(:const_get)).select do |c| - c.constants.include?(:SEMANTIC_TYPE) - end - end - end -end diff --git a/lib/datafoodconsortium/connector_v1.rb b/lib/datafoodconsortium/connector_v1.rb new file mode 100644 index 0000000..f7d99a3 --- /dev/null +++ b/lib/datafoodconsortium/connector_v1.rb @@ -0,0 +1,59 @@ +module DataFoodConsortium + module ConnectorV1 + require 'datafoodconsortium/connector_v1/connector' + require 'datafoodconsortium/connector_v1/json_ld_serializer' + require 'datafoodconsortium/connector_v1/skos_parser_element' + require 'datafoodconsortium/connector_v1/skos_parser' + require 'datafoodconsortium/connector_v1/agent.rb' + require 'datafoodconsortium/connector_v1/customer_category.rb' + require 'datafoodconsortium/connector_v1/enterprise.rb' + require 'datafoodconsortium/connector_v1/person.rb' + require 'datafoodconsortium/connector_v1/phone_number.rb' + require 'datafoodconsortium/connector_v1/social_media.rb' + require 'datafoodconsortium/connector_v1/address.rb' + require 'datafoodconsortium/connector_v1/allergen_characteristic.rb' + require 'datafoodconsortium/connector_v1/characteristic.rb' + require 'datafoodconsortium/connector_v1/nutrient_characteristic.rb' + require 'datafoodconsortium/connector_v1/opening_hours_specification.rb' + require 'datafoodconsortium/connector_v1/physical_characteristic.rb' + require 'datafoodconsortium/connector_v1/quantitative_value.rb' + require 'datafoodconsortium/connector_v1/defined_product.rb' + require 'datafoodconsortium/connector_v1/flow.rb' + require 'datafoodconsortium/connector_v1/localized_product.rb' + require 'datafoodconsortium/connector_v1/physical_product.rb' + require 'datafoodconsortium/connector_v1/planned_consumption_flow.rb' + require 'datafoodconsortium/connector_v1/planned_local_consumption_flow.rb' + require 'datafoodconsortium/connector_v1/planned_local_production_flow.rb' + require 'datafoodconsortium/connector_v1/planned_local_transformation.rb' + require 'datafoodconsortium/connector_v1/planned_production_flow.rb' + require 'datafoodconsortium/connector_v1/planned_transformation.rb' + require 'datafoodconsortium/connector_v1/realized_consumption_flow.rb' + require 'datafoodconsortium/connector_v1/realized_production_flow.rb' + require 'datafoodconsortium/connector_v1/realized_transformation.rb' + require 'datafoodconsortium/connector_v1/supplied_product.rb' + require 'datafoodconsortium/connector_v1/technical_product.rb' + require 'datafoodconsortium/connector_v1/catalog.rb' + require 'datafoodconsortium/connector_v1/catalog_item.rb' + require 'datafoodconsortium/connector_v1/delivery_option.rb' + require 'datafoodconsortium/connector_v1/offer.rb' + require 'datafoodconsortium/connector_v1/order.rb' + require 'datafoodconsortium/connector_v1/order_line.rb' + require 'datafoodconsortium/connector_v1/payment_method.rb' + require 'datafoodconsortium/connector_v1/physical_place.rb' + require 'datafoodconsortium/connector_v1/pickup_option.rb' + require 'datafoodconsortium/connector_v1/price.rb' + require 'datafoodconsortium/connector_v1/product_batch.rb' + require 'datafoodconsortium/connector_v1/real_stock.rb' + require 'datafoodconsortium/connector_v1/sale_session.rb' + require 'datafoodconsortium/connector_v1/shipping_option.rb' + require 'datafoodconsortium/connector_v1/theoretical_stock.rb' + require 'datafoodconsortium/connector_v1/virtual_place.rb' + require 'datafoodconsortium/connector_v1/skos_concept.rb' + + def self.semantic_types + constants.map(&method(:const_get)).select do |c| + c.constants.include?(:SEMANTIC_TYPE) + end + end + end +end diff --git a/lib/datafoodconsortium/connector/address.rb b/lib/datafoodconsortium/connector_v1/address.rb similarity index 96% rename from lib/datafoodconsortium/connector/address.rb rename to lib/datafoodconsortium/connector_v1/address.rb index 424504d..caf5e71 100644 --- a/lib/datafoodconsortium/connector/address.rb +++ b/lib/datafoodconsortium/connector_v1/address.rb @@ -23,7 +23,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Address +class DataFoodConsortium::ConnectorV1::Address include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:Address".freeze @@ -37,7 +37,7 @@ class DataFoodConsortium::Connector::Address # @return [String] attr_accessor :city - # @return [String] + # @return [ISKOSConcept] attr_accessor :country # @return [Real] @@ -53,7 +53,7 @@ class DataFoodConsortium::Connector::Address # @param street [String] # @param postalCode [String] # @param city [String] - # @param country [String] + # @param country [ISKOSConcept] # @param latitude [Real] # @param longitude [Real] # @param region [String] diff --git a/lib/datafoodconsortium/connector/agent.rb b/lib/datafoodconsortium/connector_v1/agent.rb similarity index 98% rename from lib/datafoodconsortium/connector/agent.rb rename to lib/datafoodconsortium/connector_v1/agent.rb index 31a2c67..d9a079b 100644 --- a/lib/datafoodconsortium/connector/agent.rb +++ b/lib/datafoodconsortium/connector_v1/agent.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Agent +class DataFoodConsortium::ConnectorV1::Agent include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:Agent".freeze diff --git a/lib/datafoodconsortium/connector/allergen_characteristic.rb b/lib/datafoodconsortium/connector_v1/allergen_characteristic.rb similarity index 91% rename from lib/datafoodconsortium/connector/allergen_characteristic.rb rename to lib/datafoodconsortium/connector_v1/allergen_characteristic.rb index 0d473e8..a33f87d 100644 --- a/lib/datafoodconsortium/connector/allergen_characteristic.rb +++ b/lib/datafoodconsortium/connector_v1/allergen_characteristic.rb @@ -20,12 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/characteristic" +require "datafoodconsortium/connector_v1/characteristic" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::AllergenCharacteristic < DataFoodConsortium::Connector::Characteristic +class DataFoodConsortium::ConnectorV1::AllergenCharacteristic < DataFoodConsortium::ConnectorV1::Characteristic SEMANTIC_TYPE = "dfc-b:AllergenCharacteristic".freeze diff --git a/lib/datafoodconsortium/connector/catalog.rb b/lib/datafoodconsortium/connector_v1/catalog.rb similarity index 97% rename from lib/datafoodconsortium/connector/catalog.rb rename to lib/datafoodconsortium/connector_v1/catalog.rb index 5acbc7d..8d1ff95 100644 --- a/lib/datafoodconsortium/connector/catalog.rb +++ b/lib/datafoodconsortium/connector_v1/catalog.rb @@ -26,7 +26,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Catalog +class DataFoodConsortium::ConnectorV1::Catalog include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:Catalog".freeze diff --git a/lib/datafoodconsortium/connector/catalog_item.rb b/lib/datafoodconsortium/connector_v1/catalog_item.rb similarity index 97% rename from lib/datafoodconsortium/connector/catalog_item.rb rename to lib/datafoodconsortium/connector_v1/catalog_item.rb index 1aa5656..94fbdbc 100644 --- a/lib/datafoodconsortium/connector/catalog_item.rb +++ b/lib/datafoodconsortium/connector_v1/catalog_item.rb @@ -26,7 +26,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::CatalogItem +class DataFoodConsortium::ConnectorV1::CatalogItem include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:CatalogItem".freeze diff --git a/lib/datafoodconsortium/connector/characteristic.rb b/lib/datafoodconsortium/connector_v1/characteristic.rb similarity index 88% rename from lib/datafoodconsortium/connector/characteristic.rb rename to lib/datafoodconsortium/connector_v1/characteristic.rb index 8edb35e..39b2647 100644 --- a/lib/datafoodconsortium/connector/characteristic.rb +++ b/lib/datafoodconsortium/connector_v1/characteristic.rb @@ -22,10 +22,10 @@ -require "datafoodconsortium/connector/quantitative_value" +require "datafoodconsortium/connector_v1/quantitative_value" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Characteristic < DataFoodConsortium::Connector::QuantitativeValue +class DataFoodConsortium::ConnectorV1::Characteristic < DataFoodConsortium::ConnectorV1::QuantitativeValue # @param unit [ISKOSConcept] diff --git a/lib/datafoodconsortium/connector/connector.rb b/lib/datafoodconsortium/connector_v1/connector.rb similarity index 92% rename from lib/datafoodconsortium/connector/connector.rb rename to lib/datafoodconsortium/connector_v1/connector.rb index 43fe2db..a5a3ac8 100644 --- a/lib/datafoodconsortium/connector/connector.rb +++ b/lib/datafoodconsortium/connector_v1/connector.rb @@ -21,11 +21,11 @@ # SOFTWARE. require 'singleton' -require 'datafoodconsortium/connector/context' -require 'datafoodconsortium/connector/importer' -require 'datafoodconsortium/connector/json_ld_serializer' +require 'datafoodconsortium/connector_v1/context' +require 'datafoodconsortium/connector_v1/importer' +require 'datafoodconsortium/connector_v1/json_ld_serializer' -module DataFoodConsortium::Connector +module DataFoodConsortium::ConnectorV1 class Connector include Singleton diff --git a/lib/datafoodconsortium/connector/context.rb b/lib/datafoodconsortium/connector_v1/context.rb similarity index 98% rename from lib/datafoodconsortium/connector/context.rb rename to lib/datafoodconsortium/connector_v1/context.rb index 3aaf5cb..37033e8 100644 --- a/lib/datafoodconsortium/connector/context.rb +++ b/lib/datafoodconsortium/connector_v1/context.rb @@ -3,7 +3,7 @@ require 'json/ld' module DataFoodConsortium - module Connector + module ConnectorV1 # Preload the DFC context. # # Similar to: https://github.com/ruby-rdf/json-ld-preloaded/ diff --git a/lib/datafoodconsortium/connector/context_1.16.0.json b/lib/datafoodconsortium/connector_v1/context_1.16.0.json similarity index 100% rename from lib/datafoodconsortium/connector/context_1.16.0.json rename to lib/datafoodconsortium/connector_v1/context_1.16.0.json diff --git a/lib/datafoodconsortium/connector/customer_category.rb b/lib/datafoodconsortium/connector_v1/customer_category.rb similarity index 85% rename from lib/datafoodconsortium/connector/customer_category.rb rename to lib/datafoodconsortium/connector_v1/customer_category.rb index 182e119..aa3a5ed 100644 --- a/lib/datafoodconsortium/connector/customer_category.rb +++ b/lib/datafoodconsortium/connector_v1/customer_category.rb @@ -23,20 +23,26 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::CustomerCategory +class DataFoodConsortium::ConnectorV1::CustomerCategory include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:CustomerCategory".freeze + # @return [String] + attr_accessor :name + # @return [String] attr_accessor :description # @param semanticId [String] + # @param name [String] # @param description [String] - def initialize(semanticId, description: nil) + def initialize(semanticId, name: nil, description: nil) super(semanticId) + @name = name @description = description self.semanticType = "dfc-b:CustomerCategory" + registerSemanticProperty("dfc-b:name", &method("name")).valueSetter = method("name=") registerSemanticProperty("dfc-b:description", &method("description")).valueSetter = method("description=") end diff --git a/lib/datafoodconsortium/connector/defined_product.rb b/lib/datafoodconsortium/connector_v1/defined_product.rb similarity index 99% rename from lib/datafoodconsortium/connector/defined_product.rb rename to lib/datafoodconsortium/connector_v1/defined_product.rb index 6273a04..3b7d441 100644 --- a/lib/datafoodconsortium/connector/defined_product.rb +++ b/lib/datafoodconsortium/connector_v1/defined_product.rb @@ -29,7 +29,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::DefinedProduct +class DataFoodConsortium::ConnectorV1::DefinedProduct include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:DefinedProduct".freeze diff --git a/lib/datafoodconsortium/connector/delivery_option.rb b/lib/datafoodconsortium/connector_v1/delivery_option.rb similarity index 94% rename from lib/datafoodconsortium/connector/delivery_option.rb rename to lib/datafoodconsortium/connector_v1/delivery_option.rb index 15357af..d979c07 100644 --- a/lib/datafoodconsortium/connector/delivery_option.rb +++ b/lib/datafoodconsortium/connector_v1/delivery_option.rb @@ -23,10 +23,10 @@ -require "datafoodconsortium/connector/shipping_option" +require "datafoodconsortium/connector_v1/shipping_option" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::DeliveryOption < DataFoodConsortium::Connector::ShippingOption +class DataFoodConsortium::ConnectorV1::DeliveryOption < DataFoodConsortium::ConnectorV1::ShippingOption SEMANTIC_TYPE = "dfc-b:DeliveryOption".freeze diff --git a/lib/datafoodconsortium/connector/enterprise.rb b/lib/datafoodconsortium/connector_v1/enterprise.rb similarity index 89% rename from lib/datafoodconsortium/connector/enterprise.rb rename to lib/datafoodconsortium/connector_v1/enterprise.rb index b6b9fec..56e03f1 100644 --- a/lib/datafoodconsortium/connector/enterprise.rb +++ b/lib/datafoodconsortium/connector_v1/enterprise.rb @@ -20,7 +20,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/agent" +require "datafoodconsortium/connector_v1/agent" + @@ -33,7 +34,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Enterprise < DataFoodConsortium::Connector::Agent +class DataFoodConsortium::ConnectorV1::Enterprise < DataFoodConsortium::ConnectorV1::Agent SEMANTIC_TYPE = "dfc-b:Enterprise".freeze @@ -64,6 +65,9 @@ class DataFoodConsortium::Connector::Enterprise < DataFoodConsortium::Connector: # @return [IPerson] attr_accessor :mainContact + # @return [IPerson] + attr_accessor :affiliates + # @param semanticId [String] # @param name [String] # @param description [String] @@ -74,13 +78,14 @@ class DataFoodConsortium::Connector::Enterprise < DataFoodConsortium::Connector: # @param suppliedProducts [ISuppliedProduct] # @param technicalProducts [ITechnicalProduct] # @param mainContact [IPerson] + # @param affiliates [IPerson] # @param localizations [IAddress] # @param phoneNumbers [IPhoneNumber] # @param emails [String] # @param websites [String] # @param socialMedias [ISocialMedia] # @param logo [String] - def initialize(semanticId, name: nil, description: nil, vatNumber: nil, customerCategories: [], catalogs: [], catalogItems: [], suppliedProducts: [], technicalProducts: [], mainContact: nil, localizations: [], phoneNumbers: [], emails: [], websites: [], socialMedias: [], logo: nil) + def initialize(semanticId, name: nil, description: nil, vatNumber: nil, customerCategories: [], catalogs: [], catalogItems: [], suppliedProducts: [], technicalProducts: [], mainContact: nil, affiliates: [], localizations: [], phoneNumbers: [], emails: [], websites: [], socialMedias: [], logo: nil) super(semanticId, localizations: localizations, phoneNumbers: phoneNumbers, emails: emails, websites: websites, socialMedias: socialMedias, logo: logo) @name = name @description = description @@ -91,6 +96,7 @@ def initialize(semanticId, name: nil, description: nil, vatNumber: nil, customer @suppliedProducts = suppliedProducts @technicalProducts = technicalProducts @mainContact = mainContact + @affiliates = affiliates self.semanticType = "dfc-b:Enterprise" registerSemanticProperty("dfc-b:name", &method("name")).valueSetter = method("name=") registerSemanticProperty("dfc-b:hasDescription", &method("description")).valueSetter = method("description=") @@ -101,6 +107,7 @@ def initialize(semanticId, name: nil, description: nil, vatNumber: nil, customer registerSemanticProperty("dfc-b:supplies", &method("suppliedProducts")).valueSetter = method("suppliedProducts=") registerSemanticProperty("dfc-b:proposes", &method("technicalProducts")).valueSetter = method("technicalProducts=") registerSemanticProperty("dfc-b:hasMainContact", &method("mainContact")).valueSetter = method("mainContact=") + registerSemanticProperty("dfc-b:affiliates", &method("affiliates")).valueSetter = method("affiliates=") end diff --git a/lib/datafoodconsortium/connector/flow.rb b/lib/datafoodconsortium/connector_v1/flow.rb similarity index 97% rename from lib/datafoodconsortium/connector/flow.rb rename to lib/datafoodconsortium/connector_v1/flow.rb index 6566224..0c0665d 100644 --- a/lib/datafoodconsortium/connector/flow.rb +++ b/lib/datafoodconsortium/connector_v1/flow.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::Flow include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "".freeze diff --git a/lib/datafoodconsortium/connector/importer.rb b/lib/datafoodconsortium/connector_v1/importer.rb similarity index 96% rename from lib/datafoodconsortium/connector/importer.rb rename to lib/datafoodconsortium/connector_v1/importer.rb index fec9fab..7e184f4 100644 --- a/lib/datafoodconsortium/connector/importer.rb +++ b/lib/datafoodconsortium/connector_v1/importer.rb @@ -3,12 +3,12 @@ require_relative "skos_parser" module DataFoodConsortium - module Connector + module ConnectorV1 class Importer def self.type_map unless @type_map @type_map = {} - DataFoodConsortium::Connector.semantic_types.each do |type| + DataFoodConsortium::ConnectorV1.semantic_types.each do |type| register_type(type) end end diff --git a/lib/datafoodconsortium/connector/json_ld_serializer.rb b/lib/datafoodconsortium/connector_v1/json_ld_serializer.rb similarity index 97% rename from lib/datafoodconsortium/connector/json_ld_serializer.rb rename to lib/datafoodconsortium/connector_v1/json_ld_serializer.rb index 74797c4..229a483 100644 --- a/lib/datafoodconsortium/connector/json_ld_serializer.rb +++ b/lib/datafoodconsortium/connector_v1/json_ld_serializer.rb @@ -23,7 +23,7 @@ require 'virtual_assembly/semantizer' require 'json/ld' -class DataFoodConsortium::Connector::JsonLdSerializer +class DataFoodConsortium::ConnectorV1::JsonLdSerializer def initialize(outputContext = nil, inputContext = nil) @outputContext = outputContext diff --git a/lib/datafoodconsortium/connector/localized_product.rb b/lib/datafoodconsortium/connector_v1/localized_product.rb similarity index 96% rename from lib/datafoodconsortium/connector/localized_product.rb rename to lib/datafoodconsortium/connector_v1/localized_product.rb index 19fb3d0..86561ab 100644 --- a/lib/datafoodconsortium/connector/localized_product.rb +++ b/lib/datafoodconsortium/connector_v1/localized_product.rb @@ -29,7 +29,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::LocalizedProduct +class DataFoodConsortium::ConnectorV1::LocalizedProduct include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:LocalizedProduct".freeze @@ -49,7 +49,7 @@ class DataFoodConsortium::Connector::LocalizedProduct # @return [Real] attr_accessor :cost - # @return [Real] + # @return [ITheoreticalStock] attr_accessor :theoreticalStocks # @return [ISuppliedProduct] @@ -70,7 +70,7 @@ class DataFoodConsortium::Connector::LocalizedProduct # @param images [String] # @param quantity [IQuantity] # @param cost [Real] - # @param theoreticalStocks [Real] + # @param theoreticalStocks [ITheoreticalStock] # @param suppliedProducts [ISuppliedProduct] # @param physicalProducts [IPhysicalProduct] # @param plannedLocalProductionFlows [IPlannedLocalProductionFlow] diff --git a/lib/datafoodconsortium/connector/nutrient_characteristic.rb b/lib/datafoodconsortium/connector_v1/nutrient_characteristic.rb similarity index 91% rename from lib/datafoodconsortium/connector/nutrient_characteristic.rb rename to lib/datafoodconsortium/connector_v1/nutrient_characteristic.rb index fcdcc28..7617f27 100644 --- a/lib/datafoodconsortium/connector/nutrient_characteristic.rb +++ b/lib/datafoodconsortium/connector_v1/nutrient_characteristic.rb @@ -20,12 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/characteristic" +require "datafoodconsortium/connector_v1/characteristic" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::NutrientCharacteristic < DataFoodConsortium::Connector::Characteristic +class DataFoodConsortium::ConnectorV1::NutrientCharacteristic < DataFoodConsortium::ConnectorV1::Characteristic SEMANTIC_TYPE = "dfc-b:NutrientCharacteristic".freeze diff --git a/lib/datafoodconsortium/connector/offer.rb b/lib/datafoodconsortium/connector_v1/offer.rb similarity index 98% rename from lib/datafoodconsortium/connector/offer.rb rename to lib/datafoodconsortium/connector_v1/offer.rb index 5ba52a1..6c19c8b 100644 --- a/lib/datafoodconsortium/connector/offer.rb +++ b/lib/datafoodconsortium/connector_v1/offer.rb @@ -26,7 +26,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Offer +class DataFoodConsortium::ConnectorV1::Offer include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:Offer".freeze diff --git a/lib/datafoodconsortium/connector/quantity.rb b/lib/datafoodconsortium/connector_v1/opening_hours_specification.rb similarity index 57% rename from lib/datafoodconsortium/connector/quantity.rb rename to lib/datafoodconsortium/connector_v1/opening_hours_specification.rb index 0b4f0b6..94d6163 100644 --- a/lib/datafoodconsortium/connector/quantity.rb +++ b/lib/datafoodconsortium/connector_v1/opening_hours_specification.rb @@ -21,29 +21,35 @@ # SOFTWARE. - require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Quantity +class DataFoodConsortium::ConnectorV1::OpeningHoursSpecification include VirtualAssembly::Semantizer::SemanticObject - SEMANTIC_TYPE = "dfc-b:Quantity".freeze - - # @return [ISKOSConcept] - attr_accessor :unit - - # @return [Real] - attr_accessor :value - - # @param unit [ISKOSConcept] - # @param value [Real] - def initialize(unit: nil, value: nil) - super() - @unit = unit - @value = value - self.semanticType = "dfc-b:Quantity" - registerSemanticProperty("dfc-b:hasUnit", &method("unit")).valueSetter = method("unit=") - registerSemanticProperty("dfc-b:value", &method("value")).valueSetter = method("value=") + SEMANTIC_TYPE = "https://schema.org/OpeningHoursSpecification".freeze + + # @return [String] + attr_accessor :dayOfWeek + + # @return [Time] + attr_accessor :opens + + # @return [Time] + attr_accessor :closes + + # @param semanticId [String] + # @param dayOfWeek [String] + # @param opens [Time] + # @param closes [Time] + def initialize(semanticId, dayOfWeek: nil, opens: nil, closes: nil) + super(semanticId) + @dayOfWeek = dayOfWeek + @opens = opens + @closes = closes + self.semanticType = "https://schema.org/OpeningHoursSpecification" + registerSemanticProperty("https://schema.org/dayOfWeek", &method("dayOfWeek")).valueSetter = method("dayOfWeek=") + registerSemanticProperty("https://schema.org/opens", &method("opens")).valueSetter = method("opens=") + registerSemanticProperty("https://schema.org/closes", &method("closes")).valueSetter = method("closes=") end diff --git a/lib/datafoodconsortium/connector/order.rb b/lib/datafoodconsortium/connector_v1/order.rb similarity index 90% rename from lib/datafoodconsortium/connector/order.rb rename to lib/datafoodconsortium/connector_v1/order.rb index fa5f3b5..3f9462c 100644 --- a/lib/datafoodconsortium/connector/order.rb +++ b/lib/datafoodconsortium/connector_v1/order.rb @@ -24,9 +24,10 @@ + require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Order +class DataFoodConsortium::ConnectorV1::Order include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:Order".freeze @@ -58,6 +59,9 @@ class DataFoodConsortium::Connector::Order # @return [ISKOSConcept] attr_accessor :paymentStatus + # @return [IPaymentMethod] + attr_accessor :paymentMethod + # @param semanticId [String] # @param number [String] # @param date [String] @@ -68,7 +72,8 @@ class DataFoodConsortium::Connector::Order # @param fulfilmentStatus [ISKOSConcept] # @param orderStatus [ISKOSConcept] # @param paymentStatus [ISKOSConcept] - def initialize(semanticId, number: nil, date: nil, saleSession: nil, lines: [], client: nil, soldBy: nil, fulfilmentStatus: nil, orderStatus: nil, paymentStatus: nil) + # @param paymentMethod [IPaymentMethod] + def initialize(semanticId, number: nil, date: nil, saleSession: nil, lines: [], client: nil, soldBy: nil, fulfilmentStatus: nil, orderStatus: nil, paymentStatus: nil, paymentMethod: nil) super(semanticId) @number = number @date = date @@ -79,6 +84,7 @@ def initialize(semanticId, number: nil, date: nil, saleSession: nil, lines: [], @fulfilmentStatus = fulfilmentStatus @orderStatus = orderStatus @paymentStatus = paymentStatus + @paymentMethod = paymentMethod self.semanticType = "dfc-b:Order" registerSemanticProperty("dfc-b:orderNumber", &method("number")).valueSetter = method("number=") registerSemanticProperty("dfc-b:date", &method("date")).valueSetter = method("date=") @@ -89,6 +95,7 @@ def initialize(semanticId, number: nil, date: nil, saleSession: nil, lines: [], registerSemanticProperty("dfc-b:hasFulfilmentStatus", &method("fulfilmentStatus")).valueSetter = method("fulfilmentStatus=") registerSemanticProperty("dfc-b:hasOrderStatus", &method("orderStatus")).valueSetter = method("orderStatus=") registerSemanticProperty("dfc-b:hasPaymentStatus", &method("paymentStatus")).valueSetter = method("paymentStatus=") + registerSemanticProperty("dfc-b:hasPaymentMethod", &method("paymentMethod")).valueSetter = method("paymentMethod=") end diff --git a/lib/datafoodconsortium/connector/order_line.rb b/lib/datafoodconsortium/connector_v1/order_line.rb similarity index 98% rename from lib/datafoodconsortium/connector/order_line.rb rename to lib/datafoodconsortium/connector_v1/order_line.rb index d2b5675..f69b3ab 100644 --- a/lib/datafoodconsortium/connector/order_line.rb +++ b/lib/datafoodconsortium/connector_v1/order_line.rb @@ -26,7 +26,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::OrderLine +class DataFoodConsortium::ConnectorV1::OrderLine include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:OrderLine".freeze diff --git a/lib/datafoodconsortium/connector/payment_method.rb b/lib/datafoodconsortium/connector_v1/payment_method.rb similarity index 97% rename from lib/datafoodconsortium/connector/payment_method.rb rename to lib/datafoodconsortium/connector_v1/payment_method.rb index c37f016..ef0dc96 100644 --- a/lib/datafoodconsortium/connector/payment_method.rb +++ b/lib/datafoodconsortium/connector_v1/payment_method.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PaymentMethod +class DataFoodConsortium::ConnectorV1::PaymentMethod include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:PaymentMethod".freeze diff --git a/lib/datafoodconsortium/connector/person.rb b/lib/datafoodconsortium/connector_v1/person.rb similarity index 94% rename from lib/datafoodconsortium/connector/person.rb rename to lib/datafoodconsortium/connector_v1/person.rb index eefda19..19a5270 100644 --- a/lib/datafoodconsortium/connector/person.rb +++ b/lib/datafoodconsortium/connector_v1/person.rb @@ -20,13 +20,13 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/agent" +require "datafoodconsortium/connector_v1/agent" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Person < DataFoodConsortium::Connector::Agent +class DataFoodConsortium::ConnectorV1::Person < DataFoodConsortium::ConnectorV1::Agent SEMANTIC_TYPE = "dfc-b:Person".freeze diff --git a/lib/datafoodconsortium/connector/phone_number.rb b/lib/datafoodconsortium/connector_v1/phone_number.rb similarity index 97% rename from lib/datafoodconsortium/connector/phone_number.rb rename to lib/datafoodconsortium/connector_v1/phone_number.rb index 86efd2f..d22ddb2 100644 --- a/lib/datafoodconsortium/connector/phone_number.rb +++ b/lib/datafoodconsortium/connector_v1/phone_number.rb @@ -23,7 +23,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PhoneNumber +class DataFoodConsortium::ConnectorV1::PhoneNumber include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:PhoneNumber".freeze diff --git a/lib/datafoodconsortium/connector/physical_characteristic.rb b/lib/datafoodconsortium/connector_v1/physical_characteristic.rb similarity index 91% rename from lib/datafoodconsortium/connector/physical_characteristic.rb rename to lib/datafoodconsortium/connector_v1/physical_characteristic.rb index d916a73..61b2d35 100644 --- a/lib/datafoodconsortium/connector/physical_characteristic.rb +++ b/lib/datafoodconsortium/connector_v1/physical_characteristic.rb @@ -20,12 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/characteristic" +require "datafoodconsortium/connector_v1/characteristic" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PhysicalCharacteristic < DataFoodConsortium::Connector::Characteristic +class DataFoodConsortium::ConnectorV1::PhysicalCharacteristic < DataFoodConsortium::ConnectorV1::Characteristic SEMANTIC_TYPE = "dfc-b:PhysicalCharacteristic".freeze diff --git a/lib/datafoodconsortium/connector/physical_place.rb b/lib/datafoodconsortium/connector_v1/physical_place.rb similarity index 86% rename from lib/datafoodconsortium/connector/physical_place.rb rename to lib/datafoodconsortium/connector_v1/physical_place.rb index 2a99c46..f62e2e0 100644 --- a/lib/datafoodconsortium/connector/physical_place.rb +++ b/lib/datafoodconsortium/connector_v1/physical_place.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PhysicalPlace +class DataFoodConsortium::ConnectorV1::PhysicalPlace include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:PhysicalPlace".freeze @@ -45,10 +45,10 @@ class DataFoodConsortium::Connector::PhysicalPlace attr_accessor :openingHours # @return [IAddress] - attr_accessor :addresses + attr_accessor :address # @return [IPerson] - attr_accessor :mainContact + attr_accessor :mainContacts # @return [ITheoreticalStock] attr_accessor :theoreticalStocks @@ -62,19 +62,19 @@ class DataFoodConsortium::Connector::PhysicalPlace # @param hostedSaleSessions [ISaleSession] # @param phoneNumbers [IPhoneNumber] # @param openingHours [IOpeningHoursSpecification] - # @param addresses [IAddress] - # @param mainContact [IPerson] + # @param address [IAddress] + # @param mainContacts [IPerson] # @param theoreticalStocks [ITheoreticalStock] # @param realStocks [IRealStock] - def initialize(semanticId, name: nil, description: nil, hostedSaleSessions: [], phoneNumbers: [], openingHours: [], addresses: [], mainContact: nil, theoreticalStocks: [], realStocks: []) + def initialize(semanticId, name: nil, description: nil, hostedSaleSessions: [], phoneNumbers: [], openingHours: [], address: nil, mainContacts: [], theoreticalStocks: [], realStocks: []) super(semanticId) @name = name @description = description @hostedSaleSessions = hostedSaleSessions @phoneNumbers = phoneNumbers @openingHours = openingHours - @addresses = addresses - @mainContact = mainContact + @address = address + @mainContacts = mainContacts @theoreticalStocks = theoreticalStocks @realStocks = realStocks self.semanticType = "dfc-b:PhysicalPlace" @@ -83,8 +83,8 @@ def initialize(semanticId, name: nil, description: nil, hostedSaleSessions: [], registerSemanticProperty("dfc-b:hosts", &method("hostedSaleSessions")).valueSetter = method("hostedSaleSessions=") registerSemanticProperty("dfc-b:hasPhoneNumber", &method("phoneNumbers")).valueSetter = method("phoneNumbers=") registerSemanticProperty("dfc-b:hasOpeningHours", &method("openingHours")).valueSetter = method("openingHours=") - registerSemanticProperty("dfc-b:hasAddress", &method("addresses")).valueSetter = method("addresses=") - registerSemanticProperty("dfc-b:hasMainContact", &method("mainContact")).valueSetter = method("mainContact=") + registerSemanticProperty("dfc-b:hasAddress", &method("address")).valueSetter = method("address=") + registerSemanticProperty("dfc-b:hasMainContact", &method("mainContacts")).valueSetter = method("mainContacts=") registerSemanticProperty("dfc-b:localizes", &method("theoreticalStocks")).valueSetter = method("theoreticalStocks=") registerSemanticProperty("dfc-b:stores", &method("realStocks")).valueSetter = method("realStocks=") end diff --git a/lib/datafoodconsortium/connector/physical_product.rb b/lib/datafoodconsortium/connector_v1/physical_product.rb similarity index 98% rename from lib/datafoodconsortium/connector/physical_product.rb rename to lib/datafoodconsortium/connector_v1/physical_product.rb index b5a3f7c..f8cc5dd 100644 --- a/lib/datafoodconsortium/connector/physical_product.rb +++ b/lib/datafoodconsortium/connector_v1/physical_product.rb @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PhysicalProduct +class DataFoodConsortium::ConnectorV1::PhysicalProduct include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:PhysicalProduct".freeze diff --git a/lib/datafoodconsortium/connector/pickup_option.rb b/lib/datafoodconsortium/connector_v1/pickup_option.rb similarity index 92% rename from lib/datafoodconsortium/connector/pickup_option.rb rename to lib/datafoodconsortium/connector_v1/pickup_option.rb index 0fedd17..1ad09fb 100644 --- a/lib/datafoodconsortium/connector/pickup_option.rb +++ b/lib/datafoodconsortium/connector_v1/pickup_option.rb @@ -23,10 +23,10 @@ -require "datafoodconsortium/connector/shipping_option" +require "datafoodconsortium/connector_v1/shipping_option" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PickupOption < DataFoodConsortium::Connector::ShippingOption +class DataFoodConsortium::ConnectorV1::PickupOption < DataFoodConsortium::ConnectorV1::ShippingOption SEMANTIC_TYPE = "dfc-b:PickupOption".freeze diff --git a/lib/datafoodconsortium/connector/planned_consumption_flow.rb b/lib/datafoodconsortium/connector_v1/planned_consumption_flow.rb similarity index 87% rename from lib/datafoodconsortium/connector/planned_consumption_flow.rb rename to lib/datafoodconsortium/connector_v1/planned_consumption_flow.rb index 4de0160..8c0a8f3 100644 --- a/lib/datafoodconsortium/connector/planned_consumption_flow.rb +++ b/lib/datafoodconsortium/connector_v1/planned_consumption_flow.rb @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/flow" +require "datafoodconsortium/connector_v1/flow" @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PlannedConsumptionFlow < DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::PlannedConsumptionFlow < DataFoodConsortium::ConnectorV1::Flow SEMANTIC_TYPE = "dfc-b:AsPlannedConsumptionFlow".freeze @@ -47,7 +47,7 @@ def initialize(semanticId, transformation: nil, product: nil, quantity: nil) @transformation = transformation @product = product self.semanticType = "dfc-b:AsPlannedConsumptionFlow" - registerSemanticProperty("dfc-b:incomeOf", &method("transformation")).valueSetter = method("transformation=") + registerSemanticProperty("dfc-b:inputOf", &method("transformation")).valueSetter = method("transformation=") registerSemanticProperty("dfc-b:consumes", &method("product")).valueSetter = method("product=") end diff --git a/lib/datafoodconsortium/connector/planned_local_consumption_flow.rb b/lib/datafoodconsortium/connector_v1/planned_local_consumption_flow.rb similarity index 87% rename from lib/datafoodconsortium/connector/planned_local_consumption_flow.rb rename to lib/datafoodconsortium/connector_v1/planned_local_consumption_flow.rb index ce915d1..1ba08c4 100644 --- a/lib/datafoodconsortium/connector/planned_local_consumption_flow.rb +++ b/lib/datafoodconsortium/connector_v1/planned_local_consumption_flow.rb @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/flow" +require "datafoodconsortium/connector_v1/flow" @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PlannedLocalConsumptionFlow < DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::PlannedLocalConsumptionFlow < DataFoodConsortium::ConnectorV1::Flow SEMANTIC_TYPE = "dfc-b:AsPlannedLocalConsumptionFlow".freeze @@ -47,7 +47,7 @@ def initialize(semanticId, transformation: nil, product: nil, quantity: nil) @transformation = transformation @product = product self.semanticType = "dfc-b:AsPlannedLocalConsumptionFlow" - registerSemanticProperty("dfc-b:incomeOf", &method("transformation")).valueSetter = method("transformation=") + registerSemanticProperty("dfc-b:inputOf", &method("transformation")).valueSetter = method("transformation=") registerSemanticProperty("dfc-b:consumes", &method("product")).valueSetter = method("product=") end diff --git a/lib/datafoodconsortium/connector/planned_local_production_flow.rb b/lib/datafoodconsortium/connector_v1/planned_local_production_flow.rb similarity index 87% rename from lib/datafoodconsortium/connector/planned_local_production_flow.rb rename to lib/datafoodconsortium/connector_v1/planned_local_production_flow.rb index f08a480..f639864 100644 --- a/lib/datafoodconsortium/connector/planned_local_production_flow.rb +++ b/lib/datafoodconsortium/connector_v1/planned_local_production_flow.rb @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/flow" +require "datafoodconsortium/connector_v1/flow" @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PlannedLocalProductionFlow < DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::PlannedLocalProductionFlow < DataFoodConsortium::ConnectorV1::Flow SEMANTIC_TYPE = "dfc-b:AsPlannedLocalProductionFlow".freeze @@ -47,7 +47,7 @@ def initialize(semanticId, transformation: nil, product: nil, quantity: nil) @transformation = transformation @product = product self.semanticType = "dfc-b:AsPlannedLocalProductionFlow" - registerSemanticProperty("dfc-b:outcomeOf", &method("transformation")).valueSetter = method("transformation=") + registerSemanticProperty("dfc-b:outputOf", &method("transformation")).valueSetter = method("transformation=") registerSemanticProperty("dfc-b:produces", &method("product")).valueSetter = method("product=") end diff --git a/lib/datafoodconsortium/connector/planned_local_transformation.rb b/lib/datafoodconsortium/connector_v1/planned_local_transformation.rb similarity index 90% rename from lib/datafoodconsortium/connector/planned_local_transformation.rb rename to lib/datafoodconsortium/connector_v1/planned_local_transformation.rb index df73c53..cb9066e 100644 --- a/lib/datafoodconsortium/connector/planned_local_transformation.rb +++ b/lib/datafoodconsortium/connector_v1/planned_local_transformation.rb @@ -27,7 +27,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PlannedLocalTransformation +class DataFoodConsortium::ConnectorV1::PlannedLocalTransformation include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:AsPlannedLocalTransformation".freeze @@ -70,8 +70,8 @@ def initialize(semanticId, transformationType: nil, cost: nil, startDate: nil, e registerSemanticProperty("dfc-b:cost", &method("cost")).valueSetter = method("cost=") registerSemanticProperty("dfc-b:startDate", &method("startDate")).valueSetter = method("startDate=") registerSemanticProperty("dfc-b:endDate", &method("endDate")).valueSetter = method("endDate=") - registerSemanticProperty("dfc-b:hasIncome", &method("consumptionFlow")).valueSetter = method("consumptionFlow=") - registerSemanticProperty("dfc-b:hasOutcome", &method("productionFlow")).valueSetter = method("productionFlow=") + registerSemanticProperty("dfc-b:hasInput", &method("consumptionFlow")).valueSetter = method("consumptionFlow=") + registerSemanticProperty("dfc-b:hasOutput", &method("productionFlow")).valueSetter = method("productionFlow=") end diff --git a/lib/datafoodconsortium/connector/planned_production_flow.rb b/lib/datafoodconsortium/connector_v1/planned_production_flow.rb similarity index 87% rename from lib/datafoodconsortium/connector/planned_production_flow.rb rename to lib/datafoodconsortium/connector_v1/planned_production_flow.rb index 0486668..e8c9b33 100644 --- a/lib/datafoodconsortium/connector/planned_production_flow.rb +++ b/lib/datafoodconsortium/connector_v1/planned_production_flow.rb @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/flow" +require "datafoodconsortium/connector_v1/flow" @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PlannedProductionFlow < DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::PlannedProductionFlow < DataFoodConsortium::ConnectorV1::Flow SEMANTIC_TYPE = "dfc-b:AsPlannedProductionFlow".freeze @@ -47,7 +47,7 @@ def initialize(semanticId, transformation: nil, product: nil, quantity: nil) @transformation = transformation @product = product self.semanticType = "dfc-b:AsPlannedProductionFlow" - registerSemanticProperty("dfc-b:outcomeOf", &method("transformation")).valueSetter = method("transformation=") + registerSemanticProperty("dfc-b:outputOf", &method("transformation")).valueSetter = method("transformation=") registerSemanticProperty("dfc-b:produces", &method("product")).valueSetter = method("product=") end diff --git a/lib/datafoodconsortium/connector/planned_transformation.rb b/lib/datafoodconsortium/connector_v1/planned_transformation.rb similarity index 87% rename from lib/datafoodconsortium/connector/planned_transformation.rb rename to lib/datafoodconsortium/connector_v1/planned_transformation.rb index b36dfee..dbe4b44 100644 --- a/lib/datafoodconsortium/connector/planned_transformation.rb +++ b/lib/datafoodconsortium/connector_v1/planned_transformation.rb @@ -26,7 +26,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::PlannedTransformation +class DataFoodConsortium::ConnectorV1::PlannedTransformation include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:AsPlannedTransformation".freeze @@ -51,8 +51,8 @@ def initialize(semanticId, transformationType: nil, consumptionFlow: nil, produc @productionFlow = productionFlow self.semanticType = "dfc-b:AsPlannedTransformation" registerSemanticProperty("dfc-b:hasTransformationType", &method("transformationType")).valueSetter = method("transformationType=") - registerSemanticProperty("dfc-b:hasIncome", &method("consumptionFlow")).valueSetter = method("consumptionFlow=") - registerSemanticProperty("dfc-b:hasOutcome", &method("productionFlow")).valueSetter = method("productionFlow=") + registerSemanticProperty("dfc-b:hasInput", &method("consumptionFlow")).valueSetter = method("consumptionFlow=") + registerSemanticProperty("dfc-b:hasOutput", &method("productionFlow")).valueSetter = method("productionFlow=") end diff --git a/lib/datafoodconsortium/connector/price.rb b/lib/datafoodconsortium/connector_v1/price.rb similarity index 97% rename from lib/datafoodconsortium/connector/price.rb rename to lib/datafoodconsortium/connector_v1/price.rb index 1450e03..ec288a9 100644 --- a/lib/datafoodconsortium/connector/price.rb +++ b/lib/datafoodconsortium/connector_v1/price.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::Price +class DataFoodConsortium::ConnectorV1::Price include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:Price".freeze diff --git a/lib/datafoodconsortium/connector/product_batch.rb b/lib/datafoodconsortium/connector_v1/product_batch.rb similarity index 98% rename from lib/datafoodconsortium/connector/product_batch.rb rename to lib/datafoodconsortium/connector_v1/product_batch.rb index 11af568..51d6809 100644 --- a/lib/datafoodconsortium/connector/product_batch.rb +++ b/lib/datafoodconsortium/connector_v1/product_batch.rb @@ -26,7 +26,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::ProductBatch +class DataFoodConsortium::ConnectorV1::ProductBatch include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:ProductBatch".freeze diff --git a/lib/datafoodconsortium/connector/quantitative_value.rb b/lib/datafoodconsortium/connector_v1/quantitative_value.rb similarity index 96% rename from lib/datafoodconsortium/connector/quantitative_value.rb rename to lib/datafoodconsortium/connector_v1/quantitative_value.rb index 30dc1b2..521f86b 100644 --- a/lib/datafoodconsortium/connector/quantitative_value.rb +++ b/lib/datafoodconsortium/connector_v1/quantitative_value.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::QuantitativeValue +class DataFoodConsortium::ConnectorV1::QuantitativeValue include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:QuantitativeValue".freeze diff --git a/lib/datafoodconsortium/connector/real_stock.rb b/lib/datafoodconsortium/connector_v1/real_stock.rb similarity index 98% rename from lib/datafoodconsortium/connector/real_stock.rb rename to lib/datafoodconsortium/connector_v1/real_stock.rb index 58d3747..0750b29 100644 --- a/lib/datafoodconsortium/connector/real_stock.rb +++ b/lib/datafoodconsortium/connector_v1/real_stock.rb @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::RealStock +class DataFoodConsortium::ConnectorV1::RealStock include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:RealStock".freeze diff --git a/lib/datafoodconsortium/connector/realized_consumption_flow.rb b/lib/datafoodconsortium/connector_v1/realized_consumption_flow.rb similarity index 87% rename from lib/datafoodconsortium/connector/realized_consumption_flow.rb rename to lib/datafoodconsortium/connector_v1/realized_consumption_flow.rb index aa4d149..f56b49f 100644 --- a/lib/datafoodconsortium/connector/realized_consumption_flow.rb +++ b/lib/datafoodconsortium/connector_v1/realized_consumption_flow.rb @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/flow" +require "datafoodconsortium/connector_v1/flow" @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::RealizedConsumptionFlow < DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::RealizedConsumptionFlow < DataFoodConsortium::ConnectorV1::Flow SEMANTIC_TYPE = "dfc-b:AsRealizedConsumptionFlow".freeze @@ -47,7 +47,7 @@ def initialize(semanticId, transformation: nil, product: nil, quantity: nil) @transformation = transformation @product = product self.semanticType = "dfc-b:AsRealizedConsumptionFlow" - registerSemanticProperty("dfc-b:incomeOf", &method("transformation")).valueSetter = method("transformation=") + registerSemanticProperty("dfc-b:inputOf", &method("transformation")).valueSetter = method("transformation=") registerSemanticProperty("dfc-b:consumes", &method("product")).valueSetter = method("product=") end diff --git a/lib/datafoodconsortium/connector/realized_production_flow.rb b/lib/datafoodconsortium/connector_v1/realized_production_flow.rb similarity index 87% rename from lib/datafoodconsortium/connector/realized_production_flow.rb rename to lib/datafoodconsortium/connector_v1/realized_production_flow.rb index cc6a275..e10a896 100644 --- a/lib/datafoodconsortium/connector/realized_production_flow.rb +++ b/lib/datafoodconsortium/connector_v1/realized_production_flow.rb @@ -20,7 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/flow" +require "datafoodconsortium/connector_v1/flow" @@ -28,7 +28,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::RealizedProductionFlow < DataFoodConsortium::Connector::Flow +class DataFoodConsortium::ConnectorV1::RealizedProductionFlow < DataFoodConsortium::ConnectorV1::Flow SEMANTIC_TYPE = "dfc-b:AsRealizedProductionFlow".freeze @@ -47,7 +47,7 @@ def initialize(semanticId, transformation: nil, product: nil, quantity: nil) @transformation = transformation @product = product self.semanticType = "dfc-b:AsRealizedProductionFlow" - registerSemanticProperty("dfc-b:outcomeOf", &method("transformation")).valueSetter = method("transformation=") + registerSemanticProperty("dfc-b:outputOf", &method("transformation")).valueSetter = method("transformation=") registerSemanticProperty("dfc-b:produces", &method("product")).valueSetter = method("product=") end diff --git a/lib/datafoodconsortium/connector/realized_transformation.rb b/lib/datafoodconsortium/connector_v1/realized_transformation.rb similarity index 89% rename from lib/datafoodconsortium/connector/realized_transformation.rb rename to lib/datafoodconsortium/connector_v1/realized_transformation.rb index 9b1ceb2..1248b7d 100644 --- a/lib/datafoodconsortium/connector/realized_transformation.rb +++ b/lib/datafoodconsortium/connector_v1/realized_transformation.rb @@ -27,7 +27,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::RealizedTransformation +class DataFoodConsortium::ConnectorV1::RealizedTransformation include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:AsRealizedTransformation".freeze @@ -64,8 +64,8 @@ def initialize(semanticId, transformationType: nil, startDate: nil, endDate: nil registerSemanticProperty("dfc-b:hasTransformationType", &method("transformationType")).valueSetter = method("transformationType=") registerSemanticProperty("dfc-b:startDate", &method("startDate")).valueSetter = method("startDate=") registerSemanticProperty("dfc-b:endDate", &method("endDate")).valueSetter = method("endDate=") - registerSemanticProperty("dfc-b:hasIncome", &method("consumptionFlow")).valueSetter = method("consumptionFlow=") - registerSemanticProperty("dfc-b:hasOutcome", &method("productionFlow")).valueSetter = method("productionFlow=") + registerSemanticProperty("dfc-b:hasInput", &method("consumptionFlow")).valueSetter = method("consumptionFlow=") + registerSemanticProperty("dfc-b:hasOutput", &method("productionFlow")).valueSetter = method("productionFlow=") end diff --git a/lib/datafoodconsortium/connector/sale_session.rb b/lib/datafoodconsortium/connector_v1/sale_session.rb similarity index 97% rename from lib/datafoodconsortium/connector/sale_session.rb rename to lib/datafoodconsortium/connector_v1/sale_session.rb index ffd7431..c0fdea7 100644 --- a/lib/datafoodconsortium/connector/sale_session.rb +++ b/lib/datafoodconsortium/connector_v1/sale_session.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::SaleSession +class DataFoodConsortium::ConnectorV1::SaleSession include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:SaleSession".freeze diff --git a/lib/datafoodconsortium/connector/shipping_option.rb b/lib/datafoodconsortium/connector_v1/shipping_option.rb similarity index 98% rename from lib/datafoodconsortium/connector/shipping_option.rb rename to lib/datafoodconsortium/connector_v1/shipping_option.rb index 0ff7ef4..32b7613 100644 --- a/lib/datafoodconsortium/connector/shipping_option.rb +++ b/lib/datafoodconsortium/connector_v1/shipping_option.rb @@ -27,7 +27,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::ShippingOption +class DataFoodConsortium::ConnectorV1::ShippingOption include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:PickupOption".freeze diff --git a/lib/datafoodconsortium/connector/skos_concept.rb b/lib/datafoodconsortium/connector_v1/skos_concept.rb similarity index 93% rename from lib/datafoodconsortium/connector/skos_concept.rb rename to lib/datafoodconsortium/connector_v1/skos_concept.rb index 3e9a189..fb55173 100644 --- a/lib/datafoodconsortium/connector/skos_concept.rb +++ b/lib/datafoodconsortium/connector_v1/skos_concept.rb @@ -24,10 +24,10 @@ require "virtual_assembly/semantizer" -require 'datafoodconsortium/connector/skos_helper' -class DataFoodConsortium::Connector::SKOSConcept +require 'datafoodconsortium/connector_v1/skos_helper' +class DataFoodConsortium::ConnectorV1::SKOSConcept include VirtualAssembly::Semantizer::SemanticObject - include DataFoodConsortium::Connector::SKOSHelper + include DataFoodConsortium::ConnectorV1::SKOSHelper SEMANTIC_TYPE = "skos:Concept".freeze diff --git a/lib/datafoodconsortium/connector/skos_helper.rb b/lib/datafoodconsortium/connector_v1/skos_helper.rb similarity index 84% rename from lib/datafoodconsortium/connector/skos_helper.rb rename to lib/datafoodconsortium/connector_v1/skos_helper.rb index 1d4a7e4..3659422 100644 --- a/lib/datafoodconsortium/connector/skos_helper.rb +++ b/lib/datafoodconsortium/connector_v1/skos_helper.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module DataFoodConsortium::Connector::SKOSHelper +module DataFoodConsortium::ConnectorV1::SKOSHelper def addAttribute(name, value) self.instance_variable_set("@#{name}", value) self.define_singleton_method(name) do diff --git a/lib/datafoodconsortium/connector/skos_parser.rb b/lib/datafoodconsortium/connector_v1/skos_parser.rb similarity index 85% rename from lib/datafoodconsortium/connector/skos_parser.rb rename to lib/datafoodconsortium/connector_v1/skos_parser.rb index 22c1db3..48c460d 100644 --- a/lib/datafoodconsortium/connector/skos_parser.rb +++ b/lib/datafoodconsortium/connector_v1/skos_parser.rb @@ -22,12 +22,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require 'datafoodconsortium/connector/skos_helper' -require 'datafoodconsortium/connector/skos_concept' -require 'datafoodconsortium/connector/skos_parser_element' +require 'datafoodconsortium/connector_v1/skos_helper' +require 'datafoodconsortium/connector_v1/skos_concept' +require 'datafoodconsortium/connector_v1/skos_parser_element' -class DataFoodConsortium::Connector::SKOSInstance - include DataFoodConsortium::Connector::SKOSHelper +class DataFoodConsortium::ConnectorV1::SKOSInstance + include DataFoodConsortium::ConnectorV1::SKOSHelper # Return a list of singelton methods, ie the list of Concept available def topConcepts @@ -35,7 +35,7 @@ def topConcepts end end -class DataFoodConsortium::Connector::SKOSParser +class DataFoodConsortium::ConnectorV1::SKOSParser CONCEPT_SCHEMES = ["Facet", "productTypes"].freeze def self.concepts @@ -43,7 +43,7 @@ def self.concepts end def initialize - @results = DataFoodConsortium::Connector::SKOSInstance.new + @results = DataFoodConsortium::ConnectorV1::SKOSInstance.new @skosConcepts = {} @rootElements = [] @broaders = {} @@ -56,7 +56,7 @@ def parse(data) init data.each do |element| - current = DataFoodConsortium::Connector::SKOSParserElement.new(element) + current = DataFoodConsortium::ConnectorV1::SKOSParserElement.new(element) setSkosConceptFlag(current) @@ -91,7 +91,7 @@ def parse(data) protected def createSKOSConcept(element) - skosConcept = DataFoodConsortium::Connector::SKOSConcept.new( + skosConcept = DataFoodConsortium::ConnectorV1::SKOSConcept.new( element.id, broaders: element.broader, narrowers: element.narrower, prefLabels: element.label ) skosConcept.semanticType = element.type @@ -123,7 +123,7 @@ def getValueWithoutPrefix(property) private def init - @results = DataFoodConsortium::Connector::SKOSInstance.new + @results = DataFoodConsortium::ConnectorV1::SKOSInstance.new @skosConcepts = {} @rootElements = [] @broaders = {} @@ -137,7 +137,7 @@ def setResults(parent, id) if @useSkosConcept && @skosConcepts[id] parent.addAttribute(name, @skosConcepts[id]) else - parent.addAttribute(name, DataFoodConsortium::Connector::SKOSInstance.new) + parent.addAttribute(name, DataFoodConsortium::ConnectorV1::SKOSInstance.new) end end diff --git a/lib/datafoodconsortium/connector/skos_parser_element.rb b/lib/datafoodconsortium/connector_v1/skos_parser_element.rb similarity index 98% rename from lib/datafoodconsortium/connector/skos_parser_element.rb rename to lib/datafoodconsortium/connector_v1/skos_parser_element.rb index 1d4b646..97b5d57 100644 --- a/lib/datafoodconsortium/connector/skos_parser_element.rb +++ b/lib/datafoodconsortium/connector_v1/skos_parser_element.rb @@ -22,7 +22,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -class DataFoodConsortium::Connector::SKOSParserElement +class DataFoodConsortium::ConnectorV1::SKOSParserElement attr_reader :id attr_reader :type diff --git a/lib/datafoodconsortium/connector/social_media.rb b/lib/datafoodconsortium/connector_v1/social_media.rb similarity index 97% rename from lib/datafoodconsortium/connector/social_media.rb rename to lib/datafoodconsortium/connector_v1/social_media.rb index 16beefd..c3112f7 100644 --- a/lib/datafoodconsortium/connector/social_media.rb +++ b/lib/datafoodconsortium/connector_v1/social_media.rb @@ -23,7 +23,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::SocialMedia +class DataFoodConsortium::ConnectorV1::SocialMedia include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:SocialMedia".freeze diff --git a/lib/datafoodconsortium/connector/supplied_product.rb b/lib/datafoodconsortium/connector_v1/supplied_product.rb similarity index 76% rename from lib/datafoodconsortium/connector/supplied_product.rb rename to lib/datafoodconsortium/connector_v1/supplied_product.rb index 0598760..19a7e23 100644 --- a/lib/datafoodconsortium/connector/supplied_product.rb +++ b/lib/datafoodconsortium/connector_v1/supplied_product.rb @@ -20,7 +20,8 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/defined_product" +require "datafoodconsortium/connector_v1/defined_product" + @@ -30,19 +31,23 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::SuppliedProduct < DataFoodConsortium::Connector::DefinedProduct +class DataFoodConsortium::ConnectorV1::SuppliedProduct < DataFoodConsortium::ConnectorV1::DefinedProduct SEMANTIC_TYPE = "dfc-b:SuppliedProduct".freeze # @return [Real] attr_accessor :totalTheoreticalStock + # @return [ILocalizedProduct] + attr_accessor :localizedProducts + # @param semanticId [String] # @param totalTheoreticalStock [Real] + # @param localizedProducts [ILocalizedProduct] # @param name [String] # @param description [String] # @param productType [ISKOSConcept] @@ -62,11 +67,13 @@ class DataFoodConsortium::Connector::SuppliedProduct < DataFoodConsortium::Conne # @param images [String] # @param variants [IDefinedProduct] # @param isVariantOf [IDefinedProduct] - def initialize(semanticId, totalTheoreticalStock: nil, name: nil, description: nil, productType: nil, quantity: nil, alcoholPercentage: nil, lifetime: nil, claims: [], usageOrStorageConditions: nil, allergenCharacteristics: [], nutrientCharacteristics: [], physicalCharacteristics: [], geographicalOrigin: nil, catalogItems: [], certifications: [], natureOrigin: [], partOrigin: [], images: [], variants: [], isVariantOf: []) + def initialize(semanticId, totalTheoreticalStock: nil, localizedProducts: [], name: nil, description: nil, productType: nil, quantity: nil, alcoholPercentage: nil, lifetime: nil, claims: [], usageOrStorageConditions: nil, allergenCharacteristics: [], nutrientCharacteristics: [], physicalCharacteristics: [], geographicalOrigin: nil, catalogItems: [], certifications: [], natureOrigin: [], partOrigin: [], images: [], variants: [], isVariantOf: []) super(semanticId, name: name, description: description, productType: productType, quantity: quantity, alcoholPercentage: alcoholPercentage, lifetime: lifetime, claims: claims, usageOrStorageConditions: usageOrStorageConditions, allergenCharacteristics: allergenCharacteristics, nutrientCharacteristics: nutrientCharacteristics, physicalCharacteristics: physicalCharacteristics, geographicalOrigin: geographicalOrigin, catalogItems: catalogItems, certifications: certifications, natureOrigin: natureOrigin, partOrigin: partOrigin, images: images, variants: variants, isVariantOf: isVariantOf) @totalTheoreticalStock = totalTheoreticalStock + @localizedProducts = localizedProducts self.semanticType = "dfc-b:SuppliedProduct" registerSemanticProperty("dfc-b:totalTheoreticalStock", &method("totalTheoreticalStock")).valueSetter = method("totalTheoreticalStock=") + registerSemanticProperty("dfc-b:referenceOf", &method("localizedProducts")).valueSetter = method("localizedProducts=") end diff --git a/lib/datafoodconsortium/connector/technical_product.rb b/lib/datafoodconsortium/connector_v1/technical_product.rb similarity index 94% rename from lib/datafoodconsortium/connector/technical_product.rb rename to lib/datafoodconsortium/connector_v1/technical_product.rb index 7748723..29665f8 100644 --- a/lib/datafoodconsortium/connector/technical_product.rb +++ b/lib/datafoodconsortium/connector_v1/technical_product.rb @@ -20,12 +20,12 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. -require "datafoodconsortium/connector/defined_product" +require "datafoodconsortium/connector_v1/defined_product" require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::TechnicalProduct < DataFoodConsortium::Connector::DefinedProduct +class DataFoodConsortium::ConnectorV1::TechnicalProduct < DataFoodConsortium::ConnectorV1::DefinedProduct SEMANTIC_TYPE = "dfc-b:TechnicalProduct".freeze diff --git a/lib/datafoodconsortium/connector/theoretical_stock.rb b/lib/datafoodconsortium/connector_v1/theoretical_stock.rb similarity index 97% rename from lib/datafoodconsortium/connector/theoretical_stock.rb rename to lib/datafoodconsortium/connector_v1/theoretical_stock.rb index c8dad90..e218150 100644 --- a/lib/datafoodconsortium/connector/theoretical_stock.rb +++ b/lib/datafoodconsortium/connector_v1/theoretical_stock.rb @@ -27,7 +27,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::TheoreticalStock +class DataFoodConsortium::ConnectorV1::TheoreticalStock include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:TheoreticalStock".freeze diff --git a/lib/datafoodconsortium/connector/virtual_place.rb b/lib/datafoodconsortium/connector_v1/virtual_place.rb similarity index 97% rename from lib/datafoodconsortium/connector/virtual_place.rb rename to lib/datafoodconsortium/connector_v1/virtual_place.rb index d5efb03..f61cc7d 100644 --- a/lib/datafoodconsortium/connector/virtual_place.rb +++ b/lib/datafoodconsortium/connector_v1/virtual_place.rb @@ -24,7 +24,7 @@ require "virtual_assembly/semantizer" -class DataFoodConsortium::Connector::VirtualPlace +class DataFoodConsortium::ConnectorV1::VirtualPlace include VirtualAssembly::Semantizer::SemanticObject SEMANTIC_TYPE = "dfc-b:VirtualPlace".freeze diff --git a/spec/address_spec.rb b/spec/address_spec.rb index 16b93d0..19c5714 100644 --- a/spec/address_spec.rb +++ b/spec/address_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::Address do +RSpec.describe DataFoodConsortium::ConnectorV1::Address do it "can be empty when exported" do - subject = DataFoodConsortium::Connector::Address.new( + subject = DataFoodConsortium::ConnectorV1::Address.new( "https://myplatform.com/a" ) result = exported_json(subject) @@ -13,22 +13,28 @@ end it "contains all fields when exported" do - subject = DataFoodConsortium::Connector::Address.new( + subject = DataFoodConsortium::ConnectorV1::Address.new( "https://myplatform.com/a", street: "street", postalCode: "postalCode", city: "city", - country: "country" + latitude: 1.234, + longitude: 2.345, + country: "country", + region: "region", ) result = exported_json(subject) expect(result).to include( { "@id" => "https://myplatform.com/a", "@type" => "dfc-b:Address", + "dfc-b:hasStreet" => "street", + "dfc-b:hasPostalCode" => "postalCode", "dfc-b:hasCity" => "city", + "dfc-b:latitude" => 1.234, + "dfc-b:longitude" => 2.345, "dfc-b:hasCountry" => "country", - "dfc-b:hasPostalCode" => "postalCode", - "dfc-b:hasStreet" => "street", + "dfc-b:region" => "region", } ) end diff --git a/spec/catalog_item_spec.rb b/spec/catalog_item_spec.rb index f1051eb..0251b51 100644 --- a/spec/catalog_item_spec.rb +++ b/spec/catalog_item_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::CatalogItem do +RSpec.describe DataFoodConsortium::ConnectorV1::CatalogItem do it "can be empty when exported" do - subject = DataFoodConsortium::Connector::CatalogItem.new( + subject = DataFoodConsortium::ConnectorV1::CatalogItem.new( "https://myplatform.com/ci" ) result = exported_json(subject) @@ -13,9 +13,9 @@ end it "contains all fields when exported" do - sp = DataFoodConsortium::Connector::CatalogItem.new("https://myplatform.com/sp") - offer = DataFoodConsortium::Connector::CatalogItem.new("https://myplatform.com/o") - subject = DataFoodConsortium::Connector::CatalogItem.new( + sp = DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/sp") + offer = DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/o") + subject = DataFoodConsortium::ConnectorV1::CatalogItem.new( "https://myplatform.com/ci", product: sp, sku: "sku", diff --git a/spec/catalog_spec.rb b/spec/catalog_spec.rb new file mode 100644 index 0000000..138a6fa --- /dev/null +++ b/spec/catalog_spec.rb @@ -0,0 +1,33 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::Catalog do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::Catalog.new( + "https://myplatform.com/c" + ) + result = exported_json(subject) + expect(result).to include( + { + "@id" => "https://myplatform.com/c", + "@type" => "dfc-b:Catalog", + } + ) + end + + it "contains all fields when exported" do + catalogItem = DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/catalogItem") + organization = DataFoodConsortium::ConnectorV1::Enterprise.new("https://myplatform.com/organization") + subject = DataFoodConsortium::ConnectorV1::Catalog.new( + "https://myplatform.com/catalog", + items: [catalogItem], + maintainers: [organization], + ) + result = exported_json(subject) + expect(result).to include( + { + "@id" => "https://myplatform.com/catalog", + "@type" => "dfc-b:Catalog", + "dfc-b:lists" => "https://myplatform.com/catalogItem", + "dfc-b:maintainedBy" => "https://myplatform.com/organization", + } + ) + end +end diff --git a/spec/connector_spec.rb b/spec/connector_spec.rb index f943a80..454b76b 100644 --- a/spec/connector_spec.rb +++ b/spec/connector_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::Connector do +RSpec.describe DataFoodConsortium::ConnectorV1::Connector do let(:product) do - DataFoodConsortium::Connector::SuppliedProduct.new( + DataFoodConsortium::ConnectorV1::SuppliedProduct.new( "https://example.net/tomato", name: "Tomato", description: "Awesome tomato", diff --git a/spec/customer_category_spec.rb b/spec/customer_category_spec.rb index bf5aad4..bda277b 100644 --- a/spec/customer_category_spec.rb +++ b/spec/customer_category_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::CustomerCategory do +RSpec.describe DataFoodConsortium::ConnectorV1::CustomerCategory do it "can be empty when exported" do - subject = DataFoodConsortium::Connector::CustomerCategory.new( + subject = DataFoodConsortium::ConnectorV1::CustomerCategory.new( "https://myplatform.com/cc" ) result = exported_json(subject) @@ -11,14 +11,16 @@ end it "contains all fields when exported" do - subject = DataFoodConsortium::Connector::CustomerCategory.new( + subject = DataFoodConsortium::ConnectorV1::CustomerCategory.new( "https://myplatform.com/cc", - description: "description" + name: "name", + description: "description", ) result = exported_json(subject) expect(result).to include( "@id" => "https://myplatform.com/cc", "@type" => "dfc-b:CustomerCategory", + "dfc-b:name" => "name", "dfc-b:description" => "description", ) end diff --git a/spec/delivery_option_spec.rb b/spec/delivery_option_spec.rb new file mode 100644 index 0000000..8731879 --- /dev/null +++ b/spec/delivery_option_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::DeliveryOption do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::DeliveryOption.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:DeliveryOption", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::DeliveryOption.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:DeliveryOption", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/enterprise_spec.rb b/spec/enterprise_spec.rb index 417886c..97a61b0 100644 --- a/spec/enterprise_spec.rb +++ b/spec/enterprise_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::Enterprise do +RSpec.describe DataFoodConsortium::ConnectorV1::Enterprise do it "can be empty when exported" do - subject = DataFoodConsortium::Connector::Enterprise.new( + subject = DataFoodConsortium::ConnectorV1::Enterprise.new( "https://myplatform.com/e" ) result = exported_json(subject) @@ -13,21 +13,24 @@ end it "contains all fields when exported" do - subject = DataFoodConsortium::Connector::Enterprise.new( + subject = DataFoodConsortium::ConnectorV1::Enterprise.new( "https://myplatform.com/e", name: "name", description: "description", vatNumber: "vatNumber", customerCategories: [ - DataFoodConsortium::Connector::CustomerCategory.new("https://myplatform.com/cc") + DataFoodConsortium::ConnectorV1::CustomerCategory.new("https://myplatform.com/cc") ], suppliedProducts: [ - DataFoodConsortium::Connector::SuppliedProduct.new("https://myplatform.com/sp") + DataFoodConsortium::ConnectorV1::SuppliedProduct.new("https://myplatform.com/sp") ], catalogItems: [ - DataFoodConsortium::Connector::CatalogItem.new("https://myplatform.com/ci") + DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/ci") ], - localizations: [] + localizations: [], + affiliates: [ + DataFoodConsortium::ConnectorV1::Person.new("https://myplatform.com/p1") + ] ) result = exported_json(subject) expect(result).to include( @@ -40,27 +43,28 @@ "dfc-b:manages" => "https://myplatform.com/ci", "dfc-b:name" => "name", "dfc-b:supplies" => "https://myplatform.com/sp", + "dfc-b:affiliates" => "https://myplatform.com/p1", } ) end it "contains collections as arrays when exported" do - subject = DataFoodConsortium::Connector::Enterprise.new( + subject = DataFoodConsortium::ConnectorV1::Enterprise.new( "https://myplatform.com/e", name: "name", description: "description", vatNumber: "vatNumber", customerCategories: [ - DataFoodConsortium::Connector::CustomerCategory.new("https://myplatform.com/cc"), - DataFoodConsortium::Connector::CustomerCategory.new("https://myplatform.com/cc2") + DataFoodConsortium::ConnectorV1::CustomerCategory.new("https://myplatform.com/cc"), + DataFoodConsortium::ConnectorV1::CustomerCategory.new("https://myplatform.com/cc2") ], suppliedProducts: [ - DataFoodConsortium::Connector::SuppliedProduct.new("https://myplatform.com/sp"), - DataFoodConsortium::Connector::SuppliedProduct.new("https://myplatform.com/sp2") + DataFoodConsortium::ConnectorV1::SuppliedProduct.new("https://myplatform.com/sp"), + DataFoodConsortium::ConnectorV1::SuppliedProduct.new("https://myplatform.com/sp2") ], catalogItems: [ - DataFoodConsortium::Connector::CatalogItem.new("https://myplatform.com/ci"), - DataFoodConsortium::Connector::CatalogItem.new("https://myplatform.com/ci2") + DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/ci"), + DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/ci2") ], localizations: [] ) diff --git a/spec/export_spec.rb b/spec/export_spec.rb index 6bbaa3a..21d7bbd 100644 --- a/spec/export_spec.rb +++ b/spec/export_spec.rb @@ -1,4 +1,4 @@ -RSpec.describe DataFoodConsortium::Connector::Connector do +RSpec.describe DataFoodConsortium::ConnectorV1::Connector do it "exports an empty list" do subjects = [] actual = exported_json(*subjects) @@ -9,23 +9,23 @@ end it "exports multiple subjects in a graph" do - a = DataFoodConsortium::Connector::Address.new( + a = DataFoodConsortium::ConnectorV1::Address.new( "https://myplatform.com/a", street: "street", postalCode: "postalCode", city: "city", country: "country" ) - cc = DataFoodConsortium::Connector::CustomerCategory.new( + cc = DataFoodConsortium::ConnectorV1::CustomerCategory.new( "https://myplatform.com/cc", description: "description" ) - sp = DataFoodConsortium::Connector::SuppliedProduct.new( + sp = DataFoodConsortium::ConnectorV1::SuppliedProduct.new( "https://myplatform.com/sp", name: "name", description: "description", productType: connector.PRODUCT_TYPES.VEGETABLE.ARTICHOKE, - quantity: DataFoodConsortium::Connector::QuantitativeValue.new( + quantity: DataFoodConsortium::ConnectorV1::QuantitativeValue.new( unit: connector.MEASURES.KILOGRAM, value: 1.2 ), @@ -41,14 +41,14 @@ ], allergenCharacteristics: [], nutrientCharacteristics: [ - DataFoodConsortium::Connector::NutrientCharacteristic.new( + DataFoodConsortium::ConnectorV1::NutrientCharacteristic.new( nutrientDimension: connector.MEASURES.CALCIUM, unit: connector.MEASURES.GRAM, value: 8.47 ) ], physicalCharacteristics: [ - DataFoodConsortium::Connector::PhysicalCharacteristic.new( + DataFoodConsortium::ConnectorV1::PhysicalCharacteristic.new( physicalDimension: connector.MEASURES.WEIGHT, unit: connector.MEASURES.KILOGRAM, value: 3.25 @@ -58,9 +58,9 @@ natureOrigin: connector.FACETS.NATUREORIGIN.PLANTORIGIN, partOrigin: connector.FACETS.NATUREORIGIN.PLANTORIGIN ) - o = DataFoodConsortium::Connector::Offer.new( + o = DataFoodConsortium::ConnectorV1::Offer.new( "https://myplatform.com/o", - price: DataFoodConsortium::Connector::Price.new( + price: DataFoodConsortium::ConnectorV1::Price.new( value: 12.78, vatRate: 5.22, unit: connector.MEASURES.EURO @@ -68,14 +68,14 @@ stockLimitation: 52, offeredTo: cc ) - ci = DataFoodConsortium::Connector::CatalogItem.new( + ci = DataFoodConsortium::ConnectorV1::CatalogItem.new( "https://myplatform.com/ci", product: sp, sku: "sku", stockLimitation: 10, offers: [o] ) - e = DataFoodConsortium::Connector::Enterprise.new( + e = DataFoodConsortium::ConnectorV1::Enterprise.new( "https://myplatform.com/e", name: "name", description: "description", @@ -85,7 +85,7 @@ catalogItems: [ci], localizations: [] ) - p = DataFoodConsortium::Connector::Person.new( + p = DataFoodConsortium::ConnectorV1::Person.new( "https://myplatform.com/p", firstName: "firstName", lastName: "lastName", diff --git a/spec/importer_spec.rb b/spec/importer_spec.rb index e5d7fbf..e0e4a82 100644 --- a/spec/importer_spec.rb +++ b/spec/importer_spec.rb @@ -1,18 +1,18 @@ -RSpec.describe DataFoodConsortium::Connector::Importer do +RSpec.describe DataFoodConsortium::ConnectorV1::Importer do let(:enterprise) do - DataFoodConsortium::Connector::Enterprise.new( + DataFoodConsortium::ConnectorV1::Enterprise.new( "https://example.net/foo-food-inc", suppliedProducts: [product, second_product], ) end let(:catalog_item) do - DataFoodConsortium::Connector::CatalogItem.new( + DataFoodConsortium::ConnectorV1::CatalogItem.new( "https://example.net/tomatoItem", product: product, ) end let(:product) do - DataFoodConsortium::Connector::SuppliedProduct.new( + DataFoodConsortium::ConnectorV1::SuppliedProduct.new( "https://example.net/tomato", name: "Tomato", description: "Awesome tomato", @@ -55,13 +55,13 @@ JSON end let(:second_product) do - DataFoodConsortium::Connector::SuppliedProduct.new( + DataFoodConsortium::ConnectorV1::SuppliedProduct.new( "https://example.net/ocra", name: "Ocra", ) end let(:quantity) do - DataFoodConsortium::Connector::QuantitativeValue.new( + DataFoodConsortium::ConnectorV1::QuantitativeValue.new( unit: connector.MEASURES.PIECE, value: 5, ) @@ -108,7 +108,7 @@ it "imports an object with referenced context" do result = connector.import(product_data) - expect(result).to be_a DataFoodConsortium::Connector::SuppliedProduct + expect(result).to be_a DataFoodConsortium::ConnectorV1::SuppliedProduct expect(result.semanticType).to eq "dfc-b:SuppliedProduct" expect(result.semanticId).to eq "https://example.net/tomato" expect(result.name).to eq "Tomato" @@ -119,7 +119,7 @@ it "imports an object with included DFC v1.8 context" do result = connector.import(product_data_with_context_v1_8) - expect(result).to be_a DataFoodConsortium::Connector::SuppliedProduct + expect(result).to be_a DataFoodConsortium::ConnectorV1::SuppliedProduct expect(result.semanticType).to eq "dfc-b:SuppliedProduct" expect(result.semanticId).to eq "https://example.net/tomato" expect(result.name).to eq "Tomato" diff --git a/spec/localized_product_spec.rb b/spec/localized_product_spec.rb new file mode 100644 index 0000000..9be851d --- /dev/null +++ b/spec/localized_product_spec.rb @@ -0,0 +1,53 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::LocalizedProduct do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::LocalizedProduct.new( + "https://myplatform.com/subject" + ) + result = exported_json(subject) + expect(result).to include( + { + "@id" => "https://myplatform.com/subject", + "@type" => "dfc-b:LocalizedProduct", + } + ) + end + + it "contains all fields when exported" do + quantity = DataFoodConsortium::ConnectorV1::QuantitativeValue.new() + theoreticalStock = DataFoodConsortium::ConnectorV1::TheoreticalStock.new("https://myplatform.com/theoreticalStock") + suppliedProduct = DataFoodConsortium::ConnectorV1::SuppliedProduct.new("https://myplatform.com/suppliedProduct") + physicalProduct = DataFoodConsortium::ConnectorV1::PhysicalProduct.new("https://myplatform.com/physicalProduct") + plannedLocalProductionFlow = DataFoodConsortium::ConnectorV1::PlannedLocalProductionFlow.new("https://myplatform.com/plannedLocalProductionFlow") + plannedLocalConsumptionFlow = DataFoodConsortium::ConnectorV1::PlannedLocalConsumptionFlow.new("https://myplatform.com/plannedLocalConsumptionFlow") + subject = DataFoodConsortium::ConnectorV1::LocalizedProduct.new( + "https://myplatform.com/subject", + name: "name", + description: "description", + images: ["image"], + quantity: quantity, + cost: 1.0, + theoreticalStocks: [theoreticalStock], + suppliedProducts: [suppliedProduct], + physicalProducts: [physicalProduct], + plannedLocalProductionFlows: [plannedLocalProductionFlow], + plannedLocalConsumptionFlows: [plannedLocalConsumptionFlow], + ) + result = exported_json(subject) + expect(result).to include( + { + "@id" => "https://myplatform.com/subject", + "@type" => "dfc-b:LocalizedProduct", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + "dfc-b:image" => "image", + "dfc-b:hasQuantity" => {"@type" => "dfc-b:QuantitativeValue"}, + "dfc-b:cost" => 1.0, + "dfc-b:constituedBy" => "https://myplatform.com/theoreticalStock", + "dfc-b:hasReference" => "https://myplatform.com/suppliedProduct", + "dfc-b:representedBy" => "https://myplatform.com/physicalProduct", + "dfc-b:producedBy" => "https://myplatform.com/plannedLocalProductionFlow", + "dfc-b:consumedBy" => "https://myplatform.com/plannedLocalConsumptionFlow", + } + ) + end +end diff --git a/spec/offer_spec.rb b/spec/offer_spec.rb index 56f3f16..239b8af 100644 --- a/spec/offer_spec.rb +++ b/spec/offer_spec.rb @@ -1,10 +1,10 @@ -RSpec.describe DataFoodConsortium::Connector::Offer do +RSpec.describe DataFoodConsortium::ConnectorV1::Offer do it "has a type" do expect(described_class::SEMANTIC_TYPE).to eq "dfc-b:Offer" end it "can be empty when exported" do - subject = DataFoodConsortium::Connector::Offer.new( + subject = DataFoodConsortium::ConnectorV1::Offer.new( "https://myplatform.com/o" ) result = exported_json(subject) @@ -15,11 +15,11 @@ end it "contains all fields when exported" do - ci = DataFoodConsortium::Connector::CatalogItem.new("https://myplatform.com/ci") - cc = DataFoodConsortium::Connector::CustomerCategory.new("https://myplatform.com/cc") - subject = DataFoodConsortium::Connector::Offer.new( + ci = DataFoodConsortium::ConnectorV1::CatalogItem.new("https://myplatform.com/ci") + cc = DataFoodConsortium::ConnectorV1::CustomerCategory.new("https://myplatform.com/cc") + subject = DataFoodConsortium::ConnectorV1::Offer.new( "https://myplatform.com/o", - price: DataFoodConsortium::Connector::Price.new( + price: DataFoodConsortium::ConnectorV1::Price.new( value: 12.78, vatRate: 5.22, unit: connector.MEASURES.EURO diff --git a/spec/opening_hours_specification_spec.rb b/spec/opening_hours_specification_spec.rb new file mode 100644 index 0000000..9bdefb2 --- /dev/null +++ b/spec/opening_hours_specification_spec.rb @@ -0,0 +1,25 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::OpeningHoursSpecification do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::OpeningHoursSpecification.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "https://schema.org/OpeningHoursSpecification", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::OpeningHoursSpecification.new( + "https://myplatform.com/cc", + dayOfWeek: "dayOfWeek", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "https://schema.org/OpeningHoursSpecification", + "https://schema.org/dayOfWeek" => "dayOfWeek", + ) + end +end diff --git a/spec/order_spec.rb b/spec/order_spec.rb new file mode 100644 index 0000000..80375df --- /dev/null +++ b/spec/order_spec.rb @@ -0,0 +1,25 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::Order do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::Order.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:Order", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::Order.new( + "https://myplatform.com/cc", + number: "number", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:Order", + "dfc-b:orderNumber" => "number", + ) + end +end diff --git a/spec/parse_with_skos_concept_spec.rb b/spec/parse_with_skos_concept_spec.rb index 93573a1..0ac263c 100644 --- a/spec/parse_with_skos_concept_spec.rb +++ b/spec/parse_with_skos_concept_spec.rb @@ -24,7 +24,7 @@ it "parses the first level" do drink_type = connector.PRODUCT_TYPES.DRINK - expect(drink_type).to be_a DataFoodConsortium::Connector::SKOSConcept + expect(drink_type).to be_a DataFoodConsortium::ConnectorV1::SKOSConcept expect(drink_type.broaders).to eq([]) expect(drink_type.narrowers).to include(/alcoholic-beverage/, /soft-drink/) end @@ -32,7 +32,7 @@ it "parses the second level" do drink_type = connector.PRODUCT_TYPES.DRINK.SOFT_DRINK - expect(drink_type).to be_a DataFoodConsortium::Connector::SKOSConcept + expect(drink_type).to be_a DataFoodConsortium::ConnectorV1::SKOSConcept expect(drink_type.broaders).to include(/drink/) expect(drink_type.narrowers).to include(/fruit-juice/, /lemonade/, /smoothie/) end @@ -40,7 +40,7 @@ it "parses leaf level" do drink_type = connector.PRODUCT_TYPES.DRINK.SOFT_DRINK.LEMONADE - expect(drink_type).to be_a DataFoodConsortium::Connector::SKOSConcept + expect(drink_type).to be_a DataFoodConsortium::ConnectorV1::SKOSConcept expect(drink_type.broaders).to include(/soft-drink/) expect(drink_type.narrowers).to eq([]) end @@ -61,7 +61,7 @@ it "parses the first level" do facet = connector.FACETS.CERTIFICATION - expect(facet).to be_a DataFoodConsortium::Connector::SKOSConcept + expect(facet).to be_a DataFoodConsortium::ConnectorV1::SKOSConcept expect(facet.broaders).to eq([]) expect(facet.narrowers).to include( /OrganicLabel/, /LocalLabel/, /BiodynamicLabel/, /EthicalLabel/, /MarketingLabel/ diff --git a/spec/payment_method_spec.rb b/spec/payment_method_spec.rb new file mode 100644 index 0000000..79b9677 --- /dev/null +++ b/spec/payment_method_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PaymentMethod do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PaymentMethod.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PaymentMethod", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::PaymentMethod.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PaymentMethod", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/person_spec.rb b/spec/person_spec.rb index 24f8280..9910310 100644 --- a/spec/person_spec.rb +++ b/spec/person_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::Person do +RSpec.describe DataFoodConsortium::ConnectorV1::Person do it "can be empty when exported" do - p = DataFoodConsortium::Connector::Person.new("https://myplatform.com/p") + p = DataFoodConsortium::ConnectorV1::Person.new("https://myplatform.com/p") actual = exported_json(p) expected = { "@id" => "https://myplatform.com/p", @@ -10,15 +10,15 @@ end it "contains all fields when exported" do - p = DataFoodConsortium::Connector::Person.new( + p = DataFoodConsortium::ConnectorV1::Person.new( "https://myplatform.com/p", firstName: "firstName", lastName: "lastName", affiliatedOrganizations: [ - DataFoodConsortium::Connector::Enterprise.new("https://myplatform.com/e") + DataFoodConsortium::ConnectorV1::Enterprise.new("https://myplatform.com/e") ], localizations: [ - DataFoodConsortium::Connector::Address.new("https://myplatform.com/a") + DataFoodConsortium::ConnectorV1::Address.new("https://myplatform.com/a") ] ) actual = exported_json(p) diff --git a/spec/phone_number_spec.rb b/spec/phone_number_spec.rb new file mode 100644 index 0000000..e8204ed --- /dev/null +++ b/spec/phone_number_spec.rb @@ -0,0 +1,25 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PhoneNumber do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PhoneNumber.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PhoneNumber", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::PhoneNumber.new( + "https://myplatform.com/cc", + phoneNumber: "phoneNumber", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PhoneNumber", + "dfc-b:phoneNumber" => "phoneNumber", + ) + end +end diff --git a/spec/physical_place_spec.rb b/spec/physical_place_spec.rb new file mode 100644 index 0000000..37ba4b7 --- /dev/null +++ b/spec/physical_place_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PhysicalPlace do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PhysicalPlace.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PhysicalPlace", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::PhysicalPlace.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PhysicalPlace", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/physical_product_spec.rb b/spec/physical_product_spec.rb new file mode 100644 index 0000000..4047fa8 --- /dev/null +++ b/spec/physical_product_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PhysicalProduct do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PhysicalProduct.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PhysicalProduct", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::PhysicalProduct.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PhysicalProduct", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/pickup_option_spec.rb b/spec/pickup_option_spec.rb new file mode 100644 index 0000000..a488a55 --- /dev/null +++ b/spec/pickup_option_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PickupOption do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PickupOption.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PickupOption", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::PickupOption.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:PickupOption", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/planned_local_transformation_spec.rb b/spec/planned_local_transformation_spec.rb new file mode 100644 index 0000000..39e784b --- /dev/null +++ b/spec/planned_local_transformation_spec.rb @@ -0,0 +1,29 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PlannedLocalTransformation do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PlannedLocalTransformation.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:AsPlannedLocalTransformation", + ) + end + + it "contains all fields when exported" do + consumptionFlow = DataFoodConsortium::ConnectorV1::PlannedLocalConsumptionFlow.new("https://myplatform.com/input") + productionFlow = DataFoodConsortium::ConnectorV1::PlannedLocalProductionFlow.new("https://myplatform.com/output") + subject = DataFoodConsortium::ConnectorV1::PlannedLocalTransformation.new( + "https://myplatform.com/cc", + consumptionFlow: consumptionFlow, + productionFlow: productionFlow, + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:AsPlannedLocalTransformation", + "dfc-b:hasInput" => "https://myplatform.com/input", + "dfc-b:hasOutput" => "https://myplatform.com/output", + ) + end +end diff --git a/spec/planned_transformation_spec.rb b/spec/planned_transformation_spec.rb new file mode 100644 index 0000000..4161df0 --- /dev/null +++ b/spec/planned_transformation_spec.rb @@ -0,0 +1,29 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::PlannedTransformation do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::PlannedTransformation.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:AsPlannedTransformation", + ) + end + + it "contains all fields when exported" do + consumptionFlow = DataFoodConsortium::ConnectorV1::PlannedConsumptionFlow.new("https://myplatform.com/input") + productionFlow = DataFoodConsortium::ConnectorV1::PlannedProductionFlow.new("https://myplatform.com/output") + subject = DataFoodConsortium::ConnectorV1::PlannedTransformation.new( + "https://myplatform.com/cc", + consumptionFlow: consumptionFlow, + productionFlow: productionFlow, + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:AsPlannedTransformation", + "dfc-b:hasInput" => "https://myplatform.com/input", + "dfc-b:hasOutput" => "https://myplatform.com/output", + ) + end +end diff --git a/spec/product_batch_spec.rb b/spec/product_batch_spec.rb new file mode 100644 index 0000000..2793d6d --- /dev/null +++ b/spec/product_batch_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::ProductBatch do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::ProductBatch.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:ProductBatch", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::ProductBatch.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:ProductBatch", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/real_stock_spec.rb b/spec/real_stock_spec.rb new file mode 100644 index 0000000..4636b34 --- /dev/null +++ b/spec/real_stock_spec.rb @@ -0,0 +1,26 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::RealStock do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::RealStock.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:RealStock", + ) + end + + it "contains all fields when exported" do + physicalProduct = DataFoodConsortium::ConnectorV1::PhysicalProduct.new("https://myplatform.com/physicalProduct") + subject = DataFoodConsortium::ConnectorV1::RealStock.new( + "https://myplatform.com/cc", + physicalProduct: physicalProduct, + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:RealStock", + "dfc-b:constitutes" => "https://myplatform.com/physicalProduct", + ) + end +end diff --git a/spec/realized_transformation_spec.rb b/spec/realized_transformation_spec.rb new file mode 100644 index 0000000..94b8cae --- /dev/null +++ b/spec/realized_transformation_spec.rb @@ -0,0 +1,29 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::RealizedTransformation do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::RealizedTransformation.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:AsRealizedTransformation", + ) + end + + it "contains all fields when exported" do + consumptionFlow = DataFoodConsortium::ConnectorV1::PlannedConsumptionFlow.new("https://myplatform.com/input") + productionFlow = DataFoodConsortium::ConnectorV1::PlannedProductionFlow.new("https://myplatform.com/output") + subject = DataFoodConsortium::ConnectorV1::RealizedTransformation.new( + "https://myplatform.com/cc", + consumptionFlow: consumptionFlow, + productionFlow: productionFlow, + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:AsRealizedTransformation", + "dfc-b:hasInput" => "https://myplatform.com/input", + "dfc-b:hasOutput" => "https://myplatform.com/output", + ) + end +end diff --git a/spec/sale_session_spec.rb b/spec/sale_session_spec.rb new file mode 100644 index 0000000..0832aee --- /dev/null +++ b/spec/sale_session_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::SaleSession do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::SaleSession.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:SaleSession", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::SaleSession.new( + "https://myplatform.com/cc", + beginDate: "beginDate", + endDate: "endDate", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:SaleSession", + "dfc-b:beginDate" => "beginDate", + "dfc-b:endDate" => "endDate", + ) + end +end diff --git a/spec/social_media_spec.rb b/spec/social_media_spec.rb new file mode 100644 index 0000000..cfa4f57 --- /dev/null +++ b/spec/social_media_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::SocialMedia do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::SocialMedia.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:SocialMedia", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::SocialMedia.new( + "https://myplatform.com/cc", + name: "name", + url: "url", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:SocialMedia", + "dfc-b:name" => "name", + "dfc-b:URL" => "url", + ) + end +end diff --git a/spec/supplied_product_spec.rb b/spec/supplied_product_spec.rb index 4a37d2f..6fc3aa2 100644 --- a/spec/supplied_product_spec.rb +++ b/spec/supplied_product_spec.rb @@ -1,6 +1,6 @@ -RSpec.describe DataFoodConsortium::Connector::SuppliedProduct do +RSpec.describe DataFoodConsortium::ConnectorV1::SuppliedProduct do it "can be empty when exported" do - sp = DataFoodConsortium::Connector::SuppliedProduct.new("https://myplatform.com/sp") + sp = DataFoodConsortium::ConnectorV1::SuppliedProduct.new("https://myplatform.com/sp") actual = exported_json(sp) expect(actual).to include( "@id" => "https://myplatform.com/sp", @@ -9,12 +9,12 @@ end it "contains all fields when exported" do - quantity = DataFoodConsortium::Connector::QuantitativeValue.new( + quantity = DataFoodConsortium::ConnectorV1::QuantitativeValue.new( unit: connector.MEASURES.KILOGRAM, value: 1.2 ) - sp = DataFoodConsortium::Connector::SuppliedProduct.new( + sp = DataFoodConsortium::ConnectorV1::SuppliedProduct.new( "https://myplatform.com/sp", name: "name", description: "description", @@ -32,14 +32,14 @@ ], allergenCharacteristics: [], nutrientCharacteristics: [ - DataFoodConsortium::Connector::NutrientCharacteristic.new( + DataFoodConsortium::ConnectorV1::NutrientCharacteristic.new( nutrientDimension: connector.MEASURES.CALCIUM, unit: connector.MEASURES.GRAM, value: 8.47 ) ], physicalCharacteristics: [ - DataFoodConsortium::Connector::PhysicalCharacteristic.new( + DataFoodConsortium::ConnectorV1::PhysicalCharacteristic.new( physicalDimension: connector.MEASURES.WEIGHT, unit: connector.MEASURES.KILOGRAM, value: 3.25 diff --git a/spec/support/connector_helper.rb b/spec/support/connector_helper.rb index 49bb0b5..318a874 100644 --- a/spec/support/connector_helper.rb +++ b/spec/support/connector_helper.rb @@ -1,8 +1,8 @@ -require 'datafoodconsortium/connector' +require 'datafoodconsortium/connector_v1' module ConnectorHelper def connector - @connector ||= DataFoodConsortium::Connector::Connector.instance.tap do |c| + @connector ||= DataFoodConsortium::ConnectorV1::Connector.instance.tap do |c| c.loadMeasures(parse_json_file("measures.json")) c.loadFacets(parse_json_file("facets.json")) c.loadProductTypes(parse_json_file("productTypes.json")) diff --git a/spec/technical_product_spec.rb b/spec/technical_product_spec.rb new file mode 100644 index 0000000..18438a3 --- /dev/null +++ b/spec/technical_product_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::TechnicalProduct do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::TechnicalProduct.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:TechnicalProduct", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::TechnicalProduct.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:TechnicalProduct", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end diff --git a/spec/theoretical_stock_spec.rb b/spec/theoretical_stock_spec.rb new file mode 100644 index 0000000..8dc5eed --- /dev/null +++ b/spec/theoretical_stock_spec.rb @@ -0,0 +1,26 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::TheoreticalStock do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::TheoreticalStock.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:TheoreticalStock", + ) + end + + it "contains all fields when exported" do + localizedProduct = DataFoodConsortium::ConnectorV1::LocalizedProduct.new("https://myplatform.com/localizedProduct") + subject = DataFoodConsortium::ConnectorV1::TheoreticalStock.new( + "https://myplatform.com/cc", + localizedProduct: localizedProduct, + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:TheoreticalStock", + "dfc-b:constitutes" => "https://myplatform.com/localizedProduct", + ) + end +end diff --git a/spec/virtual_place_spec.rb b/spec/virtual_place_spec.rb new file mode 100644 index 0000000..8a90ffa --- /dev/null +++ b/spec/virtual_place_spec.rb @@ -0,0 +1,27 @@ +RSpec.describe DataFoodConsortium::ConnectorV1::VirtualPlace do + it "can be empty when exported" do + subject = DataFoodConsortium::ConnectorV1::VirtualPlace.new( + "https://myplatform.com/cc" + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:VirtualPlace", + ) + end + + it "contains all fields when exported" do + subject = DataFoodConsortium::ConnectorV1::VirtualPlace.new( + "https://myplatform.com/cc", + name: "name", + description: "description", + ) + result = exported_json(subject) + expect(result).to include( + "@id" => "https://myplatform.com/cc", + "@type" => "dfc-b:VirtualPlace", + "dfc-b:name" => "name", + "dfc-b:description" => "description", + ) + end +end