dfc-linkml-connector 2.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +78 -0
  4. data/contexts/context_2.0.0.json +544 -0
  5. data/lib/core/connector.rb +670 -0
  6. data/lib/core/json_ld_serializer.rb +92 -0
  7. data/lib/core/semantic_object.rb +103 -0
  8. data/lib/core/vocabulary_loader.rb +125 -0
  9. data/lib/dfc_linkml_connector.rb +102 -0
  10. data/lib/models/address.rb +68 -0
  11. data/lib/models/agent.rb +83 -0
  12. data/lib/models/allergen_characteristic.rb +57 -0
  13. data/lib/models/as_planned_consumption_flow.rb +25 -0
  14. data/lib/models/as_planned_local_consumption_flow.rb +25 -0
  15. data/lib/models/as_planned_local_production_flow.rb +25 -0
  16. data/lib/models/as_planned_local_transformation.rb +53 -0
  17. data/lib/models/as_planned_production_flow.rb +25 -0
  18. data/lib/models/as_planned_transformation.rb +38 -0
  19. data/lib/models/as_realized_consumption_flow.rb +25 -0
  20. data/lib/models/as_realized_production_flow.rb +25 -0
  21. data/lib/models/as_realized_transformation.rb +48 -0
  22. data/lib/models/brand.rb +33 -0
  23. data/lib/models/catalog.rb +43 -0
  24. data/lib/models/catalog_item.rb +93 -0
  25. data/lib/models/certfication.rb +43 -0
  26. data/lib/models/collection.rb +47 -0
  27. data/lib/models/concept.rb +82 -0
  28. data/lib/models/concept_scheme.rb +47 -0
  29. data/lib/models/consumption_flow.rb +67 -0
  30. data/lib/models/coordination.rb +62 -0
  31. data/lib/models/customer_category.rb +38 -0
  32. data/lib/models/defined_product.rb +178 -0
  33. data/lib/models/delivery_option.rb +48 -0
  34. data/lib/models/delivery_step.rb +25 -0
  35. data/lib/models/ditributed_representation.rb +47 -0
  36. data/lib/models/enterprise.rb +29 -0
  37. data/lib/models/feature.rb +57 -0
  38. data/lib/models/functional_product.rb +33 -0
  39. data/lib/models/geometry.rb +52 -0
  40. data/lib/models/how_subject.rb +47 -0
  41. data/lib/models/individual.rb +47 -0
  42. data/lib/models/ingredient.rb +38 -0
  43. data/lib/models/labelling_characteristic.rb +57 -0
  44. data/lib/models/length.rb +25 -0
  45. data/lib/models/localized_product.rb +68 -0
  46. data/lib/models/nutrient_characteristic.rb +57 -0
  47. data/lib/models/offer.rb +82 -0
  48. data/lib/models/opening_hours_specification.rb +62 -0
  49. data/lib/models/order.rb +115 -0
  50. data/lib/models/order_line.rb +86 -0
  51. data/lib/models/organization.rb +92 -0
  52. data/lib/models/payment_method.rb +43 -0
  53. data/lib/models/person.rb +38 -0
  54. data/lib/models/phone_number.rb +38 -0
  55. data/lib/models/physical_characteristic.rb +57 -0
  56. data/lib/models/physical_place.rb +58 -0
  57. data/lib/models/physical_product.rb +78 -0
  58. data/lib/models/pick_up_step.rb +25 -0
  59. data/lib/models/pickup_option.rb +33 -0
  60. data/lib/models/place.rb +28 -0
  61. data/lib/models/platform.rb +25 -0
  62. data/lib/models/point.rb +25 -0
  63. data/lib/models/polygon.rb +25 -0
  64. data/lib/models/price.rb +37 -0
  65. data/lib/models/product_batch.rb +53 -0
  66. data/lib/models/product_option.rb +28 -0
  67. data/lib/models/product_option_value.rb +25 -0
  68. data/lib/models/production_flow.rb +67 -0
  69. data/lib/models/properties.rb +47 -0
  70. data/lib/models/quantitative_value.rb +33 -0
  71. data/lib/models/real_stock.rb +38 -0
  72. data/lib/models/representation_pivot.rb +25 -0
  73. data/lib/models/represented_thing.rb +25 -0
  74. data/lib/models/route.rb +38 -0
  75. data/lib/models/sale_session.rb +92 -0
  76. data/lib/models/shipment.rb +77 -0
  77. data/lib/models/shipping_option.rb +58 -0
  78. data/lib/models/social_media.rb +33 -0
  79. data/lib/models/step.rb +48 -0
  80. data/lib/models/stock.rb +67 -0
  81. data/lib/models/supplied_product.rb +73 -0
  82. data/lib/models/technical_product.rb +38 -0
  83. data/lib/models/temperature.rb +28 -0
  84. data/lib/models/template_sale_session.rb +57 -0
  85. data/lib/models/theoritical_stock.rb +33 -0
  86. data/lib/models/transaction.rb +62 -0
  87. data/lib/models/transformation.rb +25 -0
  88. data/lib/models/value_r_e_c_u_r.rb +67 -0
  89. data/lib/models/variant.rb +33 -0
  90. data/lib/models/variant_caracteristic.rb +33 -0
  91. data/lib/models/vehicle.rb +58 -0
  92. data/lib/models/vevent.rb +62 -0
  93. data/lib/models/virtual_place.rb +33 -0
  94. data/lib/models/volume.rb +25 -0
  95. data/lib/models/weight.rb +25 -0
  96. data/lib/models/what_subject.rb +47 -0
  97. data/lib/models/where_subject.rb +47 -0
  98. data/lib/models/who_subject.rb +47 -0
  99. data/vocabularies/facet.jsonld +4130 -0
  100. data/vocabularies/measure.jsonld +2586 -0
  101. data/vocabularies/product_type.jsonld +10116 -0
  102. data/vocabularies/scope.jsonld +190 -0
  103. data/vocabularies/vocabulary_term.jsonld +502 -0
  104. metadata +199 -0
@@ -0,0 +1,92 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'json/ld'
5
+
6
+ module DfcLinkmlConnector
7
+ module Core
8
+ # Serializes DFC semantic objects to JSON-LD.
9
+ class JsonLdSerializer
10
+ def initialize(context = nil, context_url = nil)
11
+ @context = context
12
+ @context_url = context_url
13
+ end
14
+
15
+ # Returns the JSON-LD document as a Hash with CURIE predicates
16
+ # (uncompacted). Single objects are returned as-is; multiple objects
17
+ # are wrapped in an @graph.
18
+ def serialize(*objects)
19
+ if objects.length == 1
20
+ return _serialize_object(objects.first)
21
+ end
22
+
23
+ {
24
+ "@context" => _context_iri,
25
+ "@graph" => objects.map { |obj| _serialize_object(obj) },
26
+ }
27
+ end
28
+
29
+ # Returns a compacted JSON-LD JSON string using the original context.
30
+ # Falls back to the plain serialization when no context is available,
31
+ # keeping the context URL so CURIE predicates stay expandable.
32
+ def to_json(*objects)
33
+ doc = serialize(*objects)
34
+ inner = _inner_context
35
+ if inner.nil?
36
+ doc["@context"] ||= _context_iri
37
+ else
38
+ expanded = JSON::LD::API.expand(doc.merge("@context" => inner))
39
+ doc = JSON::LD::API.compact(expanded, inner)
40
+ doc["@context"] = _context_iri
41
+ end
42
+ JSON.pretty_generate(doc)
43
+ end
44
+
45
+ private
46
+
47
+ def _context_iri
48
+ @context_url || Connector.default_context_url
49
+ end
50
+
51
+ def _inner_context
52
+ return nil if @context.nil?
53
+ @context.is_a?(Hash) && @context.key?("@context") ? @context["@context"] : @context
54
+ end
55
+
56
+ def _serialize_object(obj)
57
+ result = {
58
+ "@id" => obj.semanticId,
59
+ "@type" => obj.semanticType,
60
+ }
61
+
62
+ obj.instance_variable_get(:@semanticProperties).each do |predicate, prop|
63
+ value = prop.getter.call
64
+ next if value.nil?
65
+
66
+ if value.is_a?(Array)
67
+ next if value.empty?
68
+ if value.first.is_a?(SemanticObject)
69
+ result[predicate] = value.map { |v| v.semanticId }
70
+ else
71
+ result[predicate] = value
72
+ end
73
+ elsif value.is_a?(SemanticObject)
74
+ result[predicate] = value.semanticId
75
+ elsif value.is_a?(Hash)
76
+ # Embedded blank node (e.g. original Price value object without
77
+ # @id): keep as-is so it serializes to JSON-LD, not Ruby inspect.
78
+ result[predicate] = value
79
+ elsif value.is_a?(Numeric) || value == true || value == false
80
+ result[predicate] = value
81
+ elsif value.is_a?(String)
82
+ result[predicate] = value
83
+ else
84
+ result[predicate] = value.to_s
85
+ end
86
+ end
87
+
88
+ result
89
+ end
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'net/http'
5
+ require 'uri'
6
+
7
+ module DfcLinkmlConnector
8
+ module Core
9
+ # Base class for all DFC semantic objects.
10
+ # Maintains a type registry for JSON-LD import.
11
+ class SemanticObject
12
+ @type_registry = {}
13
+
14
+ class << self
15
+ attr_reader :type_registry
16
+ end
17
+
18
+ attr_accessor :semanticId
19
+ attr_accessor :semanticType
20
+
21
+ def initialize(semanticId)
22
+ @semanticId = semanticId
23
+ @semanticType = nil
24
+ @semanticProperties = {}
25
+ end
26
+
27
+ def registerSemanticProperty(predicate, &getter)
28
+ prop = SemanticProperty.new(predicate, &getter)
29
+ @semanticProperties[predicate] = prop
30
+ prop
31
+ end
32
+
33
+ def registered_predicates
34
+ @semanticProperties.keys
35
+ end
36
+
37
+ def registered_value(predicate)
38
+ prop = @semanticProperties[predicate]
39
+ prop&.getter&.call
40
+ end
41
+
42
+ def semantic_property_value(predicate)
43
+ prop = @semanticProperties[predicate]
44
+ prop&.getter&.call
45
+ end
46
+
47
+ def to_jsonld(context = nil)
48
+ result = {
49
+ "@context" => context || default_context,
50
+ "@id" => @semanticId,
51
+ "@type" => @semanticType,
52
+ }
53
+
54
+ @semanticProperties.each do |predicate, prop|
55
+ value = prop.getter.call
56
+ next if value.nil?
57
+
58
+ if value.is_a?(Array)
59
+ next if value.empty?
60
+ if value.first.is_a?(SemanticObject)
61
+ result[predicate] = value.map { |v| v.semanticId }
62
+ else
63
+ result[predicate] = value
64
+ end
65
+ elsif value.is_a?(SemanticObject)
66
+ result[predicate] = value.semanticId
67
+ elsif value.is_a?(Numeric) || value == true || value == false
68
+ result[predicate] = value
69
+ elsif value.is_a?(Hash)
70
+ # Embedded blank node (e.g. original Price value object without
71
+ # @id): keep as-is so it serializes to JSON-LD, not Ruby inspect.
72
+ result[predicate] = value
73
+ else
74
+ result[predicate] = value.to_s
75
+ end
76
+ end
77
+
78
+ result
79
+ end
80
+
81
+ def to_json(context = nil)
82
+ JSON.generate(to_jsonld(context))
83
+ end
84
+
85
+ private
86
+
87
+ def default_context
88
+ Connector.default_context_url
89
+ end
90
+
91
+ class SemanticProperty
92
+ attr_accessor :predicate
93
+ attr_accessor :getter
94
+ attr_accessor :valueSetter
95
+
96
+ def initialize(predicate, &getter)
97
+ @predicate = predicate
98
+ @getter = getter
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,125 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'net/http'
5
+ require 'uri'
6
+
7
+ module DfcLinkmlConnector
8
+ module Core
9
+ # Loads DFC SKOS vocabularies from JSON-LD files.
10
+ # Supports fetching from versioned w3id URLs or loading local data.
11
+ class VocabularyLoader
12
+ TAXONOMY_BASE_URL = "https://w3id.org/dfc/taxonomies".freeze
13
+ BUNDLED_DIR = File.expand_path("../../vocabularies", __dir__).freeze
14
+ BUNDLED_FILES = {
15
+ "Facet" => "facet.jsonld",
16
+ "Measure" => "measure.jsonld",
17
+ "ProductType" => "product_type.jsonld",
18
+ "Scope" => "scope.jsonld",
19
+ "VocabularyTerm" => "vocabulary_term.jsonld",
20
+ }.freeze
21
+ # Maps the taxonomy URL file name to the internal vocabulary key.
22
+ # Keys are plural/lowercased URL segments (e.g. "facets") to match TS
23
+ # VocabularyLoader.URL_TO_KEY and the w3id taxonomy URLs.
24
+ URL_TO_KEY = {
25
+ "facets" => "Facet",
26
+ "measures" => "Measure",
27
+ "producttypes" => "ProductType",
28
+ "scopes" => "Scope",
29
+ "vocabularyterms" => "VocabularyTerm",
30
+ }.freeze
31
+
32
+ def initialize(taxonomy_version: "2.0.0", ontology_version: "2.0.0")
33
+ @taxonomy_version = taxonomy_version
34
+ @ontology_version = ontology_version
35
+ @vocabularies = {}
36
+ end
37
+
38
+ def load_bundled(name)
39
+ file = BUNDLED_FILES[name]
40
+ return self unless file
41
+ path = File.join(BUNDLED_DIR, file)
42
+ return self unless File.exist?(path)
43
+ load(name, JSON.parse(File.read(path)))
44
+ end
45
+
46
+ def load(name, json_data)
47
+ concepts = {}
48
+ json_data.fetch("@graph", []).each do |entry|
49
+ types = entry["@type"]
50
+ types = [types] unless types.is_a?(Array)
51
+ is_concept = types&.any? { |t| t == "skos:Concept" || t == "http://www.w3.org/2004/02/skos/core#Concept" }
52
+ next unless is_concept
53
+ notation = extract_concept_key(entry)
54
+ next unless notation
55
+ concepts[notation] = entry
56
+ end
57
+ @vocabularies[name] = concepts
58
+ self
59
+ end
60
+
61
+ private
62
+
63
+ def extract_concept_key(entry)
64
+ candidates = ["skos:notation", "http://www.w3.org/2004/02/skos/core#notation", "skos:prefLabel", "http://www.w3.org/2004/02/skos/core#prefLabel"]
65
+ candidates.each do |field|
66
+ value = entry[field]
67
+ next if value.nil?
68
+ return value if value.is_a?(String)
69
+ if value.is_a?(Array)
70
+ value.each do |item|
71
+ return item if item.is_a?(String)
72
+ if item.is_a?(Hash) && item["@value"].is_a?(String)
73
+ return item["@value"]
74
+ end
75
+ end
76
+ end
77
+ end
78
+ nil
79
+ end
80
+
81
+ public
82
+
83
+ def load_from_url(name)
84
+ url = "#{TAXONOMY_BASE_URL}/v#{@taxonomy_version}/#{name}.json"
85
+ uri = URI(url)
86
+ request = Net::HTTP::Get.new(uri)
87
+ request["dfc-version"] = @ontology_version
88
+ response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
89
+ raise "Failed to fetch taxonomy from #{url}: #{response.code}" unless response.is_a?(Net::HTTPSuccess)
90
+ json_data = JSON.parse(response.body)
91
+ key = URL_TO_KEY.fetch(name.downcase, name)
92
+ load(key, json_data)
93
+ end
94
+
95
+ def vocabulary(name)
96
+ @vocabularies[name] || {}
97
+ end
98
+
99
+ def facet(key = nil)
100
+ vocab = vocabulary("Facet")
101
+ key ? vocab[key] : vocab
102
+ end
103
+
104
+ def measure(key = nil)
105
+ vocab = vocabulary("Measure")
106
+ key ? vocab[key] : vocab
107
+ end
108
+
109
+ def product_type(key = nil)
110
+ vocab = vocabulary("ProductType")
111
+ key ? vocab[key] : vocab
112
+ end
113
+
114
+ def scope(key = nil)
115
+ vocab = vocabulary("Scope")
116
+ key ? vocab[key] : vocab
117
+ end
118
+
119
+ def vocabulary_term(key = nil)
120
+ vocab = vocabulary("VocabularyTerm")
121
+ key ? vocab[key] : vocab
122
+ end
123
+ end
124
+ end
125
+ end
@@ -0,0 +1,102 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'core/semantic_object'
4
+ require_relative 'core/vocabulary_loader'
5
+ require_relative 'core/json_ld_serializer'
6
+ require_relative 'core/connector'
7
+
8
+ require_relative 'models/address'
9
+ require_relative 'models/agent'
10
+ require_relative 'models/allergen_characteristic'
11
+ require_relative 'models/as_planned_consumption_flow'
12
+ require_relative 'models/as_planned_local_consumption_flow'
13
+ require_relative 'models/as_planned_local_production_flow'
14
+ require_relative 'models/as_planned_local_transformation'
15
+ require_relative 'models/as_planned_production_flow'
16
+ require_relative 'models/as_planned_transformation'
17
+ require_relative 'models/as_realized_consumption_flow'
18
+ require_relative 'models/as_realized_production_flow'
19
+ require_relative 'models/as_realized_transformation'
20
+ require_relative 'models/brand'
21
+ require_relative 'models/catalog'
22
+ require_relative 'models/catalog_item'
23
+ require_relative 'models/certfication'
24
+ require_relative 'models/collection'
25
+ require_relative 'models/concept'
26
+ require_relative 'models/concept_scheme'
27
+ require_relative 'models/consumption_flow'
28
+ require_relative 'models/coordination'
29
+ require_relative 'models/customer_category'
30
+ require_relative 'models/ditributed_representation'
31
+ require_relative 'models/defined_product'
32
+ require_relative 'models/delivery_option'
33
+ require_relative 'models/delivery_step'
34
+ require_relative 'models/enterprise'
35
+ require_relative 'models/feature'
36
+ require_relative 'models/functional_product'
37
+ require_relative 'models/geometry'
38
+ require_relative 'models/how_subject'
39
+ require_relative 'models/individual'
40
+ require_relative 'models/ingredient'
41
+ require_relative 'models/labelling_characteristic'
42
+ require_relative 'models/length'
43
+ require_relative 'models/localized_product'
44
+ require_relative 'models/nutrient_characteristic'
45
+ require_relative 'models/offer'
46
+ require_relative 'models/opening_hours_specification'
47
+ require_relative 'models/order'
48
+ require_relative 'models/order_line'
49
+ require_relative 'models/organization'
50
+ require_relative 'models/payment_method'
51
+ require_relative 'models/person'
52
+ require_relative 'models/phone_number'
53
+ require_relative 'models/physical_characteristic'
54
+ require_relative 'models/physical_place'
55
+ require_relative 'models/physical_product'
56
+ require_relative 'models/pick_up_step'
57
+ require_relative 'models/pickup_option'
58
+ require_relative 'models/place'
59
+ require_relative 'models/platform'
60
+ require_relative 'models/point'
61
+ require_relative 'models/polygon'
62
+ require_relative 'models/price'
63
+ require_relative 'models/product_batch'
64
+ require_relative 'models/product_option'
65
+ require_relative 'models/product_option_value'
66
+ require_relative 'models/production_flow'
67
+ require_relative 'models/properties'
68
+ require_relative 'models/quantitative_value'
69
+ require_relative 'models/real_stock'
70
+ require_relative 'models/representation_pivot'
71
+ require_relative 'models/represented_thing'
72
+ require_relative 'models/route'
73
+ require_relative 'models/sale_session'
74
+ require_relative 'models/shipment'
75
+ require_relative 'models/shipping_option'
76
+ require_relative 'models/social_media'
77
+ require_relative 'models/step'
78
+ require_relative 'models/stock'
79
+ require_relative 'models/supplied_product'
80
+ require_relative 'models/technical_product'
81
+ require_relative 'models/temperature'
82
+ require_relative 'models/template_sale_session'
83
+ require_relative 'models/theoritical_stock'
84
+ require_relative 'models/transaction'
85
+ require_relative 'models/transformation'
86
+ require_relative 'models/value_r_e_c_u_r'
87
+ require_relative 'models/variant'
88
+ require_relative 'models/variant_caracteristic'
89
+ require_relative 'models/vehicle'
90
+ require_relative 'models/vevent'
91
+ require_relative 'models/virtual_place'
92
+ require_relative 'models/volume'
93
+ require_relative 'models/weight'
94
+ require_relative 'models/what_subject'
95
+ require_relative 'models/where_subject'
96
+ require_relative 'models/who_subject'
97
+
98
+ module DfcLinkmlConnector
99
+ VERSION = '2.0.0'
100
+ ONTOLOGY_VERSION = '2.0.0'
101
+ TAXONOMY_VERSION = '2.0.0'
102
+ end
@@ -0,0 +1,68 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Class from DFC Business Ontology: #Address
4
+ require_relative '../core/semantic_object'
5
+ require_relative 'where_subject'
6
+
7
+
8
+ module DfcLinkmlConnector
9
+ module Models
10
+ class Address < WhereSubject
11
+ SEMANTIC_TYPE = "dfc-b:Address".freeze
12
+
13
+ # @return [String]
14
+ attr_accessor :city
15
+
16
+ # @return [String]
17
+ attr_accessor :country
18
+
19
+ # @return [Float]
20
+ attr_accessor :latitude
21
+
22
+ # @return [Float]
23
+ attr_accessor :longitude
24
+
25
+ # @return [String]
26
+ attr_accessor :postcode
27
+
28
+ # @return [String]
29
+ attr_accessor :region
30
+
31
+ # @return [String]
32
+ attr_accessor :street
33
+
34
+ # @return [String]
35
+ attr_accessor :address_of
36
+
37
+ # @return [String]
38
+ attr_accessor :has_country
39
+
40
+ # @param semanticId [String]
41
+ # @param date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, city: nil, country: nil, latitude: nil, longitude: nil, postcode: nil, region: nil, street: nil, addressOf: nil, hasCountry: nil
42
+ def initialize(semanticId, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, city: nil, country: nil, latitude: nil, longitude: nil, postcode: nil, region: nil, street: nil, addressOf: nil, hasCountry: nil)
43
+ super(semanticId, date: date, description: description, name: name, characteristicOf: characteristicOf, dimension: dimension)
44
+ @city = city
45
+ @country = country
46
+ @latitude = latitude
47
+ @longitude = longitude
48
+ @postcode = postcode
49
+ @region = region
50
+ @street = street
51
+ @address_of = addressOf
52
+ @has_country = hasCountry
53
+ self.semanticType = "dfc-b:Address"
54
+ registerSemanticProperty("dfc-b:city", &method("city")).valueSetter = method("city=")
55
+ registerSemanticProperty("dfc-b:country", &method("country")).valueSetter = method("country=")
56
+ registerSemanticProperty("dfc-b:latitude", &method("latitude")).valueSetter = method("latitude=")
57
+ registerSemanticProperty("dfc-b:longitude", &method("longitude")).valueSetter = method("longitude=")
58
+ registerSemanticProperty("dfc-b:postcode", &method("postcode")).valueSetter = method("postcode=")
59
+ registerSemanticProperty("dfc-b:region", &method("region")).valueSetter = method("region=")
60
+ registerSemanticProperty("dfc-b:street", &method("street")).valueSetter = method("street=")
61
+ registerSemanticProperty("dfc-b:addressOf", &method("address_of")).valueSetter = method("address_of=")
62
+ registerSemanticProperty("dfc-b:hasCountry", &method("has_country")).valueSetter = method("has_country=")
63
+ end
64
+
65
+ Core::SemanticObject.type_registry[SEMANTIC_TYPE] = self
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Class from DFC Business Ontology: #Agent
4
+ require_relative '../core/semantic_object'
5
+ require_relative 'who_subject'
6
+
7
+
8
+ module DfcLinkmlConnector
9
+ module Models
10
+ class Agent < WhoSubject
11
+ SEMANTIC_TYPE = "dfc-b:Agent".freeze
12
+
13
+ # @return [String]
14
+ attr_accessor :email
15
+
16
+ # @return [String]
17
+ attr_accessor :logo
18
+
19
+ # @return [String]
20
+ attr_accessor :website_page
21
+
22
+ # @return [String]
23
+ attr_accessor :has_phone_number
24
+
25
+ # @return [String]
26
+ attr_accessor :social_media
27
+
28
+ # @return [String]
29
+ attr_accessor :owns
30
+
31
+ # @return [String]
32
+ attr_accessor :sells
33
+
34
+ # @return [Person, String]
35
+ attr_accessor :affiliated_to
36
+
37
+ # @return [Array<Address, String>]
38
+ attr_accessor :address
39
+
40
+ # @return [Array<CustomerCategory, String>]
41
+ attr_accessor :is_member_of
42
+
43
+ # @return [Array<Order, String>]
44
+ attr_accessor :orders
45
+
46
+ # @return [Array<FunctionalProduct, String>]
47
+ attr_accessor :requests
48
+
49
+ # @param semanticId [String]
50
+ # @param date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, email: nil, logo: nil, websitePage: nil, hasPhoneNumber: nil, socialMedia: nil, owns: nil, sells: nil, affiliatedTo: nil, address: [], isMemberOf: [], orders: [], requests: []
51
+ def initialize(semanticId, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, email: nil, logo: nil, websitePage: nil, hasPhoneNumber: nil, socialMedia: nil, owns: nil, sells: nil, affiliatedTo: nil, address: [], isMemberOf: [], orders: [], requests: [])
52
+ super(semanticId, date: date, description: description, name: name, characteristicOf: characteristicOf, dimension: dimension)
53
+ @email = email
54
+ @logo = logo
55
+ @website_page = websitePage
56
+ @has_phone_number = hasPhoneNumber
57
+ @social_media = socialMedia
58
+ @owns = owns
59
+ @sells = sells
60
+ @affiliated_to = affiliatedTo
61
+ @address = address
62
+ @is_member_of = isMemberOf
63
+ @orders = orders
64
+ @requests = requests
65
+ self.semanticType = "dfc-b:Agent"
66
+ registerSemanticProperty("dfc-b:email", &method("email")).valueSetter = method("email=")
67
+ registerSemanticProperty("dfc-b:logo", &method("logo")).valueSetter = method("logo=")
68
+ registerSemanticProperty("dfc-b:websitePage", &method("website_page")).valueSetter = method("website_page=")
69
+ registerSemanticProperty("dfc-b:hasPhoneNumber", &method("has_phone_number")).valueSetter = method("has_phone_number=")
70
+ registerSemanticProperty("dfc-b:hasSocialMedia", &method("social_media")).valueSetter = method("social_media=")
71
+ registerSemanticProperty("dfc-b:owns", &method("owns")).valueSetter = method("owns=")
72
+ registerSemanticProperty("dfc-b:sells", &method("sells")).valueSetter = method("sells=")
73
+ registerSemanticProperty("dfc-b:affiliatedTo", &method("affiliated_to")).valueSetter = method("affiliated_to=")
74
+ registerSemanticProperty("dfc-b:hasAddress", &method("address")).valueSetter = method("address=")
75
+ registerSemanticProperty("dfc-b:isMemberOf", &method("is_member_of")).valueSetter = method("is_member_of=")
76
+ registerSemanticProperty("dfc-b:orders", &method("orders")).valueSetter = method("orders=")
77
+ registerSemanticProperty("dfc-b:requests", &method("requests")).valueSetter = method("requests=")
78
+ end
79
+
80
+ Core::SemanticObject.type_registry[SEMANTIC_TYPE] = self
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Class from DFC Business Ontology: #AllergenCharacteristic
4
+ require_relative '../core/semantic_object'
5
+
6
+
7
+ module DfcLinkmlConnector
8
+ module Models
9
+ class AllergenCharacteristic < Core::SemanticObject
10
+ SEMANTIC_TYPE = "dfc-b:AllergenCharacteristic".freeze
11
+
12
+ # @return [String]
13
+ attr_accessor :allergen_characteristic_of
14
+
15
+ # @return [String]
16
+ attr_accessor :date
17
+
18
+ # @return [String]
19
+ attr_accessor :description
20
+
21
+ # @return [String]
22
+ attr_accessor :name
23
+
24
+ # @return [String]
25
+ attr_accessor :characteristic_of
26
+
27
+ # @return [String]
28
+ attr_accessor :dimension
29
+
30
+ # @return [Concept, String]
31
+ attr_accessor :allergen_dimension
32
+
33
+ # @param semanticId [String]
34
+ # @param allergenCharacteristicOf: nil, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, allergenDimension: nil
35
+ def initialize(semanticId, allergenCharacteristicOf: nil, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, allergenDimension: nil)
36
+ super(semanticId)
37
+ @allergen_characteristic_of = allergenCharacteristicOf
38
+ @date = date
39
+ @description = description
40
+ @name = name
41
+ @characteristic_of = characteristicOf
42
+ @dimension = dimension
43
+ @allergen_dimension = allergenDimension
44
+ self.semanticType = "dfc-b:AllergenCharacteristic"
45
+ registerSemanticProperty("dfc-b:allergenCharacteristicOf", &method("allergen_characteristic_of")).valueSetter = method("allergen_characteristic_of=")
46
+ registerSemanticProperty("dfc-b:date", &method("date")).valueSetter = method("date=")
47
+ registerSemanticProperty("dfc-b:description", &method("description")).valueSetter = method("description=")
48
+ registerSemanticProperty("dfc-b:name", &method("name")).valueSetter = method("name=")
49
+ registerSemanticProperty("dfc-b:characteristicOf", &method("characteristic_of")).valueSetter = method("characteristic_of=")
50
+ registerSemanticProperty("dfc-b:hasDimension", &method("dimension")).valueSetter = method("dimension=")
51
+ registerSemanticProperty("dfc-b:hasAllergenDimension", &method("allergen_dimension")).valueSetter = method("allergen_dimension=")
52
+ end
53
+
54
+ Core::SemanticObject.type_registry[SEMANTIC_TYPE] = self
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Class from DFC Business Ontology: #AsPlannedConsumptionFlow
4
+ require_relative '../core/semantic_object'
5
+ require_relative 'consumption_flow'
6
+
7
+
8
+ module DfcLinkmlConnector
9
+ module Models
10
+ class AsPlannedConsumptionFlow < ConsumptionFlow
11
+ SEMANTIC_TYPE = "dfc-b:AsPlannedConsumptionFlow".freeze
12
+
13
+ # @param semanticId [String]
14
+ # @param quantity: nil, consumes: nil, inputOf: nil, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, hasQuantity: nil
15
+ def initialize(semanticId, quantity: nil, consumes: nil, inputOf: nil, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, hasQuantity: nil)
16
+ super(semanticId, quantity: quantity, consumes: consumes, inputOf: inputOf, date: date, description: description, name: name, characteristicOf: characteristicOf, dimension: dimension, hasQuantity: hasQuantity)
17
+
18
+ self.semanticType = "dfc-b:AsPlannedConsumptionFlow"
19
+
20
+ end
21
+
22
+ Core::SemanticObject.type_registry[SEMANTIC_TYPE] = self
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Class from DFC Business Ontology: #AsPlannedLocalConsumptionFlow
4
+ require_relative '../core/semantic_object'
5
+ require_relative 'consumption_flow'
6
+
7
+
8
+ module DfcLinkmlConnector
9
+ module Models
10
+ class AsPlannedLocalConsumptionFlow < ConsumptionFlow
11
+ SEMANTIC_TYPE = "dfc-b:AsPlannedLocalConsumptionFlow".freeze
12
+
13
+ # @param semanticId [String]
14
+ # @param quantity: nil, consumes: nil, inputOf: nil, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, hasQuantity: nil
15
+ def initialize(semanticId, quantity: nil, consumes: nil, inputOf: nil, date: nil, description: nil, name: nil, characteristicOf: nil, dimension: nil, hasQuantity: nil)
16
+ super(semanticId, quantity: quantity, consumes: consumes, inputOf: inputOf, date: date, description: description, name: name, characteristicOf: characteristicOf, dimension: dimension, hasQuantity: hasQuantity)
17
+
18
+ self.semanticType = "dfc-b:AsPlannedLocalConsumptionFlow"
19
+
20
+ end
21
+
22
+ Core::SemanticObject.type_registry[SEMANTIC_TYPE] = self
23
+ end
24
+ end
25
+ end