datafoodconsortium-connector 1.0.0.pre.alpha
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/datafoodconsortium/connector/address.rb +51 -0
- data/lib/datafoodconsortium/connector/agent.rb +62 -0
- data/lib/datafoodconsortium/connector/allergen_characteristic.rb +49 -0
- data/lib/datafoodconsortium/connector/allergen_dimension.rb +34 -0
- data/lib/datafoodconsortium/connector/catalog_item.rb +62 -0
- data/lib/datafoodconsortium/connector/certification.rb +34 -0
- data/lib/datafoodconsortium/connector/characteristic.rb +47 -0
- data/lib/datafoodconsortium/connector/characteristic_dimension.rb +34 -0
- data/lib/datafoodconsortium/connector/connector.rb +73 -0
- data/lib/datafoodconsortium/connector/customer_category.rb +45 -0
- data/lib/datafoodconsortium/connector/defined_product.rb +157 -0
- data/lib/datafoodconsortium/connector/enterprise.rb +86 -0
- data/lib/datafoodconsortium/connector/geographical_origin.rb +34 -0
- data/lib/datafoodconsortium/connector/json_ld_serializer.rb +39 -0
- data/lib/datafoodconsortium/connector/nature_origin.rb +34 -0
- data/lib/datafoodconsortium/connector/nutrient_characteristic.rb +49 -0
- data/lib/datafoodconsortium/connector/offer.rb +56 -0
- data/lib/datafoodconsortium/connector/order.rb +33 -0
- data/lib/datafoodconsortium/connector/order_line.rb +33 -0
- data/lib/datafoodconsortium/connector/part_origin.rb +34 -0
- data/lib/datafoodconsortium/connector/person.rb +57 -0
- data/lib/datafoodconsortium/connector/physical_characteristic.rb +49 -0
- data/lib/datafoodconsortium/connector/product_type.rb +34 -0
- data/lib/datafoodconsortium/connector/quantitative_value.rb +45 -0
- data/lib/datafoodconsortium/connector/repository.rb +33 -0
- data/lib/datafoodconsortium/connector/skos_concept.rb +85 -0
- data/lib/datafoodconsortium/connector/skos_parser.rb +133 -0
- data/lib/datafoodconsortium/connector/skos_parser_element.rb +78 -0
- data/lib/datafoodconsortium/connector/supplied_product.rb +41 -0
- data/lib/datafoodconsortium/connector/unit.rb +34 -0
- data/lib/datafoodconsortium/connector.rb +34 -0
- metadata +73 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b829aeeace38ebab9bf23d8ab9bbe462f527a1665caaf6dcee360d2f4eaf22c6
|
4
|
+
data.tar.gz: e7082289210a9c96c24785c6c6f938c300662fb1fef0d5dcfe7519c9965aed3e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c51129ea0f6b3f3e887631f9734bd70d0eaff1a790bb5012627b13c751aa9e5b2438e71cb4d62420c27804e99850414168d9b5285c99e06942e48f94ccc11b0f
|
7
|
+
data.tar.gz: b875b69efc821390eb3f4d855d602c631d6def233a8ebe6e379a5f66855085ff6865b0e96b619e2303573c8c5fb353456d423274f1acec388ffa19e5fae8783c
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
require "virtual_assembly/semantizer"
|
25
|
+
|
26
|
+
class DataFoodConsortium::Connector::Address
|
27
|
+
|
28
|
+
include VirtualAssembly::Semantizer::SemanticObject
|
29
|
+
|
30
|
+
attr_accessor :street
|
31
|
+
attr_accessor :postalCode
|
32
|
+
attr_accessor :city
|
33
|
+
attr_accessor :country
|
34
|
+
|
35
|
+
def initialize(street, postalCode, city, country)
|
36
|
+
super()
|
37
|
+
self.semanticType = "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#Address"
|
38
|
+
self.street = street
|
39
|
+
self.postalCode = postalCode
|
40
|
+
self.city = city
|
41
|
+
self.country = country
|
42
|
+
|
43
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasStreet") { self.street }
|
44
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasPostalCode") { self.postalCode }
|
45
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasCity") { self.city }
|
46
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasCountry") { self.country }
|
47
|
+
end
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
require "virtual_assembly/semantizer"
|
27
|
+
|
28
|
+
class DataFoodConsortium::Connector::Agent
|
29
|
+
|
30
|
+
include VirtualAssembly::Semantizer::SemanticObject
|
31
|
+
|
32
|
+
attr_accessor :contacts
|
33
|
+
attr_accessor :localizations
|
34
|
+
|
35
|
+
def initialize()
|
36
|
+
super()
|
37
|
+
self.semanticType = "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#Agent"
|
38
|
+
|
39
|
+
self.contacts = []
|
40
|
+
self.localizations = []
|
41
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasAddress") { self.localizations }
|
42
|
+
end
|
43
|
+
|
44
|
+
|
45
|
+
def addContact(contact)
|
46
|
+
self.contacts.push(contact)
|
47
|
+
end
|
48
|
+
|
49
|
+
def addLocalization(localization)
|
50
|
+
self.localizations.push(localization)
|
51
|
+
end
|
52
|
+
|
53
|
+
def removeContact(contact)
|
54
|
+
raise "Not implemented"
|
55
|
+
end
|
56
|
+
|
57
|
+
def removeLocalization(localization)
|
58
|
+
raise "Not implemented"
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
require "datafoodconsortium/connector/characteristic"
|
27
|
+
require "virtual_assembly/semantizer"
|
28
|
+
|
29
|
+
class DataFoodConsortium::Connector::AllergenCharacteristic < DataFoodConsortium::Connector::Characteristic
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
attr_accessor :allergenDimension
|
34
|
+
|
35
|
+
def initialize(quantityUnit, quantityValue, allergenDimension)
|
36
|
+
super(quantityUnit, quantityValue)
|
37
|
+
self.semanticType = "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#AllergenCharacteristic"
|
38
|
+
self.allergenDimension = allergenDimension
|
39
|
+
|
40
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasAllergenDimension") { self.allergenDimension }
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
require "datafoodconsortium/connector/characteristic_dimension"
|
25
|
+
require "virtual_assembly/semantizer"
|
26
|
+
|
27
|
+
class DataFoodConsortium::Connector::AllergenDimension < DataFoodConsortium::Connector::CharacteristicDimension
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
require "virtual_assembly/semantizer"
|
27
|
+
|
28
|
+
class DataFoodConsortium::Connector::CatalogItem
|
29
|
+
|
30
|
+
include VirtualAssembly::Semantizer::SemanticObject
|
31
|
+
|
32
|
+
attr_accessor :product
|
33
|
+
attr_accessor :sku
|
34
|
+
attr_accessor :stockLimitation
|
35
|
+
attr_accessor :offers
|
36
|
+
|
37
|
+
def initialize(product)
|
38
|
+
super()
|
39
|
+
self.semanticType = "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#CatalogItem"
|
40
|
+
self.product = product
|
41
|
+
self.sku = nil
|
42
|
+
self.stockLimitation = nil
|
43
|
+
self.offers = []
|
44
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#references") { self.product }
|
45
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#sku") { self.sku }
|
46
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#stockLimitation") { self.stockLimitation }
|
47
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#offeredThrough") { self.offers }
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
def addOffer(offer)
|
54
|
+
self.offers.push(offer)
|
55
|
+
end
|
56
|
+
|
57
|
+
def addOffer(offer)
|
58
|
+
self.offers.push(offer)
|
59
|
+
end
|
60
|
+
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
require "datafoodconsortium/connector/skos_concept"
|
25
|
+
require "virtual_assembly/semantizer"
|
26
|
+
|
27
|
+
class DataFoodConsortium::Connector::Certification < DataFoodConsortium::Connector::SKOSConcept
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
require "datafoodconsortium/connector/quantitative_value"
|
26
|
+
require "virtual_assembly/semantizer"
|
27
|
+
|
28
|
+
class DataFoodConsortium::Connector::Characteristic < DataFoodConsortium::Connector::QuantitativeValue
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
def initialize(quantityUnit, quantityValue)
|
34
|
+
super(quantityUnit, quantityValue)
|
35
|
+
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
require "datafoodconsortium/connector/skos_concept"
|
24
|
+
|
25
|
+
require "virtual_assembly/semantizer"
|
26
|
+
|
27
|
+
class DataFoodConsortium::Connector::CharacteristicDimension < DataFoodConsortium::Connector::SKOSConcept
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
require 'singleton'
|
24
|
+
require 'datafoodconsortium/connector/json_ld_serializer'
|
25
|
+
|
26
|
+
class DataFoodConsortium::Connector::Connector
|
27
|
+
|
28
|
+
include Singleton
|
29
|
+
|
30
|
+
attr_reader :FACETS
|
31
|
+
attr_reader :MEASURES
|
32
|
+
attr_reader :PRODUCT_TYPES
|
33
|
+
|
34
|
+
def export(subject)
|
35
|
+
return @exporter.process(subject);
|
36
|
+
end
|
37
|
+
|
38
|
+
def loadFacets(data)
|
39
|
+
@FACETS = loadThesaurus(data);
|
40
|
+
end
|
41
|
+
|
42
|
+
def loadMeasures(data)
|
43
|
+
@MEASURES = loadThesaurus(data);
|
44
|
+
end
|
45
|
+
|
46
|
+
def loadProductTypes(data)
|
47
|
+
@PRODUCT_TYPES = loadThesaurus(data);
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def initialize()
|
53
|
+
super()
|
54
|
+
|
55
|
+
@context = JSON.parse(%({
|
56
|
+
"@context": {
|
57
|
+
"dfc-b": "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#"
|
58
|
+
}
|
59
|
+
}))['@context']
|
60
|
+
|
61
|
+
@exporter = DataFoodConsortium::Connector::JsonLdSerializer.new(@context)
|
62
|
+
@parser = DataFoodConsortium::Connector::SKOSParser.new
|
63
|
+
|
64
|
+
@FACETS = []
|
65
|
+
@MEASURES = []
|
66
|
+
@PRODUCT_TYPES = []
|
67
|
+
end
|
68
|
+
|
69
|
+
def loadThesaurus(data)
|
70
|
+
return @parser.parse(data[0]["@graph"])
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
require "virtual_assembly/semantizer"
|
25
|
+
|
26
|
+
class DataFoodConsortium::Connector::CustomerCategory
|
27
|
+
|
28
|
+
include VirtualAssembly::Semantizer::SemanticObject
|
29
|
+
|
30
|
+
attr_accessor :name
|
31
|
+
attr_accessor :description
|
32
|
+
|
33
|
+
def initialize(name, description)
|
34
|
+
super()
|
35
|
+
self.semanticType = "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#CustomerCategory"
|
36
|
+
self.name = name
|
37
|
+
self.description = description
|
38
|
+
|
39
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#name") { self.name }
|
40
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#description") { self.description }
|
41
|
+
end
|
42
|
+
|
43
|
+
|
44
|
+
|
45
|
+
end
|
@@ -0,0 +1,157 @@
|
|
1
|
+
# MIT License
|
2
|
+
#
|
3
|
+
# Copyright (c) 2023 Maxime Lecoq <maxime@lecoqlibre.fr>
|
4
|
+
#
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
10
|
+
# furnished to do so, subject to the following conditions:
|
11
|
+
#
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
13
|
+
# copies or substantial portions of the Software.
|
14
|
+
#
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
# SOFTWARE.
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
require "virtual_assembly/semantizer"
|
36
|
+
|
37
|
+
class DataFoodConsortium::Connector::DefinedProduct
|
38
|
+
|
39
|
+
include VirtualAssembly::Semantizer::SemanticObject
|
40
|
+
|
41
|
+
attr_accessor :name
|
42
|
+
attr_accessor :description
|
43
|
+
attr_accessor :productType
|
44
|
+
attr_accessor :quantity
|
45
|
+
attr_accessor :alcoholPercentage
|
46
|
+
attr_accessor :lifetime
|
47
|
+
attr_accessor :claims
|
48
|
+
attr_accessor :usageOrStorageConditions
|
49
|
+
attr_accessor :allergenCharacteristics
|
50
|
+
attr_accessor :nutrientCharacteristics
|
51
|
+
attr_accessor :physicalCharacteristics
|
52
|
+
attr_accessor :geographicalOrigin
|
53
|
+
attr_accessor :catalogItems
|
54
|
+
attr_accessor :certifications
|
55
|
+
attr_accessor :natureOrigin
|
56
|
+
attr_accessor :partOrigin
|
57
|
+
|
58
|
+
def initialize(name, description)
|
59
|
+
super()
|
60
|
+
self.semanticType = "http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#DefinedProduct"
|
61
|
+
self.name = name
|
62
|
+
self.description = description
|
63
|
+
self.productType = nil
|
64
|
+
self.quantity = nil
|
65
|
+
self.alcoholPercentage = nil
|
66
|
+
self.lifetime = nil
|
67
|
+
self.claims = []
|
68
|
+
self.usageOrStorageConditions = nil
|
69
|
+
self.allergenCharacteristics = []
|
70
|
+
self.nutrientCharacteristics = []
|
71
|
+
self.physicalCharacteristics = []
|
72
|
+
self.geographicalOrigin = nil
|
73
|
+
self.catalogItems = []
|
74
|
+
self.certifications = []
|
75
|
+
self.natureOrigin = []
|
76
|
+
self.partOrigin = []
|
77
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#name") { self.name }
|
78
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#description") { self.description }
|
79
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasType") { self.productType }
|
80
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasQuantity") { self.quantity }
|
81
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#alcoholPercentage") { self.alcoholPercentage }
|
82
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#lifetime") { self.lifetime }
|
83
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasClaim") { self.claims }
|
84
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#usageOrStorageCondition") { self.usageOrStorageConditions }
|
85
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasAllergenCharacteristic") { self.allergenCharacteristics }
|
86
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasNutrientCharacteristic") { self.nutrientCharacteristics }
|
87
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasPhysicalCharacteristic") { self.physicalCharacteristics }
|
88
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasGeographicalOrigin") { self.geographicalOrigin }
|
89
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#referencedBy") { self.catalogItems }
|
90
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasCertification") { self.certifications }
|
91
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasNatureOrigin") { self.natureOrigin }
|
92
|
+
registerSemanticProperty("http://static.datafoodconsortium.org/ontologies/DFC_BusinessOntology.owl#hasPartOrigin") { self.partOrigin }
|
93
|
+
end
|
94
|
+
|
95
|
+
|
96
|
+
def addClaim(claim)
|
97
|
+
self.claims.push(claim)
|
98
|
+
end
|
99
|
+
|
100
|
+
def removeClaim(claim)
|
101
|
+
raise "Not implemented"
|
102
|
+
end
|
103
|
+
|
104
|
+
def addAllergenCharacteristic(allergenCharacteristic)
|
105
|
+
self.allergenCharacteristics.push(allergenCharacteristic)
|
106
|
+
end
|
107
|
+
|
108
|
+
def addNutrientCharacteristic(nutrientCharacteristic)
|
109
|
+
self.nutrientCharacteristics.push(nutrientCharacteristic)
|
110
|
+
end
|
111
|
+
|
112
|
+
def addPhysicalCharacteristic(physicalCharacteristic)
|
113
|
+
self.physicalCharacteristics.push(physicalCharacteristic)
|
114
|
+
end
|
115
|
+
|
116
|
+
def addNatureOrigin(natureOrigin)
|
117
|
+
self.natureOrigin.push(natureOrigin)
|
118
|
+
end
|
119
|
+
|
120
|
+
def addPartOrigin(partOrigin)
|
121
|
+
self.partOrigin.push(partOrigin)
|
122
|
+
end
|
123
|
+
|
124
|
+
def removeAllergenCharacteristic(allergenCharacteristic)
|
125
|
+
raise "Not implemented"
|
126
|
+
end
|
127
|
+
|
128
|
+
def removeNutrientCharacteristic(nutrientCharacteristic)
|
129
|
+
raise "Not implemented"
|
130
|
+
end
|
131
|
+
|
132
|
+
def removePhysicalCharacteristic(physicalCharacteristic)
|
133
|
+
raise "Not implemented"
|
134
|
+
end
|
135
|
+
|
136
|
+
def removeNatureOrigin(natureOrigin)
|
137
|
+
raise "Not implemented"
|
138
|
+
end
|
139
|
+
|
140
|
+
def removePartOrigin(partOrigin)
|
141
|
+
raise "Not implemented"
|
142
|
+
end
|
143
|
+
|
144
|
+
def addCatalogItem(catalogItem)
|
145
|
+
self.catalogItems.push(catalogItem)
|
146
|
+
end
|
147
|
+
|
148
|
+
def addCertification(certification)
|
149
|
+
self.certifications.push(certification)
|
150
|
+
end
|
151
|
+
|
152
|
+
def removeCertification(certification)
|
153
|
+
raise "Not implemented"
|
154
|
+
end
|
155
|
+
|
156
|
+
|
157
|
+
end
|