odrl-ruby 0.1.4 → 0.1.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.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -2
- data/Gemfile +1 -2
- data/Gemfile.lock +98 -84
- data/examples/create-nagoya-es-offer.rb +54 -0
- data/examples/nagoya-output.ttl +66 -0
- data/lib/odrl/action.rb +91 -99
- data/lib/odrl/asset.rb +63 -76
- data/lib/odrl/base.rb +14 -7
- data/lib/odrl/constraint.rb +90 -89
- data/lib/odrl/odrl/version.rb +1 -1
- data/lib/odrl/party.rb +71 -84
- data/lib/odrl/policy.rb +58 -62
- data/lib/odrl/ruby.rb +12 -13
- data/lib/odrl/rule.rb +89 -101
- metadata +5 -4
- data/examples/builder-translator-output.ttl +0 -0
- /data/examples/{output.ttl → biohackathon-output.ttl} +0 -0
data/lib/odrl/action.rb
CHANGED
@@ -1,114 +1,106 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ODRL
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
args[:refinements].each do |c|
|
42
|
-
self.addRefinement(refinement: c)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
self.predicate = PACTION unless self.predicate
|
47
|
-
|
4
|
+
# ODRL::Action
|
5
|
+
# Describes an action like "use"
|
6
|
+
#
|
7
|
+
# @author Mark D Wilkinson
|
8
|
+
# @attr [URI] (optional) uid the URI of the Action node
|
9
|
+
# @attr [[ODRL::Refinement]] (optional) ODRL Refinement objects
|
10
|
+
# @attr [URI] predicate (optional) the predicate you wish to use with this action
|
11
|
+
# @attr [string] value (required) a string like "use"
|
12
|
+
# @attr [string] vallabel (optional) a string like "use"
|
13
|
+
class Action < Base
|
14
|
+
attr_accessor :uid, :refinements, :predicate, :type, :value, :vallabel
|
15
|
+
|
16
|
+
# constructor
|
17
|
+
# @param [Hash] opts the options to create a message with.
|
18
|
+
# @option opts [String] :value the string value of rthe action, like "use"
|
19
|
+
# @option opts [String] :vallabel the string for the label, like "use"
|
20
|
+
#
|
21
|
+
def initialize(value:, vallabel: "", type: CACTION, **args)
|
22
|
+
@value = value
|
23
|
+
@vallabel = vallabel || @value
|
24
|
+
raise "Actions must haves a value such as 'use' - I'm dead!" unless @value
|
25
|
+
|
26
|
+
# if it is already a URI, then let it go
|
27
|
+
@value = "http://www.w3.org/ns/odrl/2/#{@value}" unless @value =~ %r{http://}
|
28
|
+
|
29
|
+
@uid = @value
|
30
|
+
# unless @uid
|
31
|
+
# self.uid = Base.baseURI + "#action_" + Base.getuuid
|
32
|
+
# end
|
33
|
+
super(uid: @uid, type: type, **args)
|
34
|
+
|
35
|
+
@refinements = {}
|
36
|
+
|
37
|
+
args[:refinements] = [args[:refinements]] unless args[:refinements].is_a? Array
|
38
|
+
unless args[:refinements].first.nil?
|
39
|
+
args[:refinements].each do |c|
|
40
|
+
addRefinement(refinement: c)
|
48
41
|
end
|
42
|
+
end
|
49
43
|
|
50
|
-
|
51
|
-
|
52
|
-
# @param refinement [ODRL::Refinement] the refinement to the action
|
53
|
-
#
|
54
|
-
def addRefinement(refinement: args)
|
55
|
-
unless refinement.is_a?(Constraint)
|
56
|
-
raise "Refinement is not an ODRL Constraint"
|
57
|
-
else
|
58
|
-
self.refinements[refinement.uid] = [PREFINEMENT, refinement]
|
59
|
-
end
|
60
|
-
end
|
44
|
+
self.predicate = PACTION unless predicate
|
45
|
+
end
|
61
46
|
|
47
|
+
# Adds an ODRL Refinement
|
48
|
+
#
|
49
|
+
# @param refinement [ODRL::Refinement] the refinement to the action
|
50
|
+
#
|
51
|
+
def addRefinement(refinement: args)
|
52
|
+
raise "Refinement is not an ODRL Constraint" unless refinement.is_a?(Constraint)
|
62
53
|
|
63
|
-
|
64
|
-
|
65
|
-
#
|
66
|
-
def load_graph
|
67
|
-
super
|
68
|
-
# TODO This is bad DRY!! Put the bulk of this method into the base object
|
69
|
-
[:refinements].each do |connected_object_type|
|
70
|
-
next unless self.send(connected_object_type)
|
71
|
-
self.send(connected_object_type).each do |uid, typedconnection|
|
72
|
-
predicate, odrlobject = typedconnection # e.g. "refinement", RefinementObject
|
73
|
-
object = odrlobject.uid
|
74
|
-
subject = self.uid
|
75
|
-
repo = self.repository
|
76
|
-
triplify(subject, predicate, object, repo)
|
77
|
-
odrlobject.load_graph # start the cascade
|
78
|
-
end
|
79
|
-
end
|
80
|
-
subject = self.uid
|
81
|
-
object = self.vallabel
|
82
|
-
predicate = SCHEMA.name
|
83
|
-
repo = self.repository
|
84
|
-
triplify(subject, predicate, object, repo)
|
85
|
-
object = self.vallabel
|
86
|
-
predicate = RDFS.label
|
87
|
-
repo = self.repository
|
88
|
-
triplify(subject, predicate, object, repo)
|
89
|
-
end
|
54
|
+
refinements[refinement.uid] = [PREFINEMENT, refinement]
|
55
|
+
end
|
90
56
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
57
|
+
# Causes the triples of this object to be formed in the in-memory store
|
58
|
+
# This includes any "cascading" objects for which this is the subject of the triple
|
59
|
+
#
|
60
|
+
def load_graph
|
61
|
+
super
|
62
|
+
# TODO: This is bad DRY!! Put the bulk of this method into the base object
|
63
|
+
[:refinements].each do |connected_object_type|
|
64
|
+
next unless send(connected_object_type)
|
65
|
+
|
66
|
+
send(connected_object_type).each do |_uid, typedconnection|
|
67
|
+
predicate, odrlobject = typedconnection # e.g. "refinement", RefinementObject
|
68
|
+
object = odrlobject.uid
|
69
|
+
subject = uid
|
70
|
+
repo = repository
|
71
|
+
triplify(subject, predicate, object, repo)
|
72
|
+
odrlobject.load_graph # start the cascade
|
97
73
|
end
|
98
|
-
|
74
|
+
end
|
75
|
+
subject = uid
|
76
|
+
object = vallabel
|
77
|
+
predicate = SCHEMA.name
|
78
|
+
repo = repository
|
79
|
+
triplify(subject, predicate, object, repo)
|
80
|
+
object = vallabel
|
81
|
+
predicate = RDFS.label
|
82
|
+
repo = repository
|
83
|
+
triplify(subject, predicate, object, repo)
|
99
84
|
end
|
100
85
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
86
|
+
# Returns the serialized RDF for this object and cascading related objects
|
87
|
+
#
|
88
|
+
# @param format [Symbol] a valid RDF::Writer format (e.g. :turtle)
|
89
|
+
#
|
90
|
+
def serialize(format:)
|
91
|
+
super
|
107
92
|
end
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
93
|
+
end
|
94
|
+
|
95
|
+
class Use < Action
|
96
|
+
def initialize(type: CACTION, **args)
|
97
|
+
super(type: :type, **args)
|
112
98
|
end
|
99
|
+
end
|
113
100
|
|
101
|
+
class Transfer < Action
|
102
|
+
def initialize(type: CACTION, **args)
|
103
|
+
super(type: :type, **args)
|
104
|
+
end
|
105
|
+
end
|
114
106
|
end
|
data/lib/odrl/asset.rb
CHANGED
@@ -1,90 +1,77 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ODRL
|
4
|
+
# ODRL::Action
|
5
|
+
# Describes an action like "use"
|
6
|
+
#
|
7
|
+
# @author Mark D Wilkinson
|
8
|
+
class Asset < Base
|
9
|
+
attr_accessor :uid, :hasPolicy, :refinements, :partOf
|
10
|
+
|
11
|
+
def initialize(type: CASSET, hasPolicy: nil, refinements: nil, partOf: nil, **args)
|
12
|
+
@uid = uid
|
13
|
+
self.uid = Base.baseURI + "#asset_" + Base.getuuid unless @uid
|
14
|
+
super(type: type, uid: @uid, **args)
|
15
|
+
|
16
|
+
@partOf = partOf
|
17
|
+
@hasPolicy = hasPolicy
|
18
|
+
|
19
|
+
if @hasPolicy and !(@hasPolicy.is_a? Policy) # if it exists and is the wrong type
|
20
|
+
raise "The policy of an Asset must be of type ODRL::Policy. The provided value will be discarded"
|
21
|
+
@hasPolicy = nil
|
22
|
+
end
|
23
|
+
if @partOf and !(@partOf.is_a? AssetCollection) # if it exists and is the wrong type
|
24
|
+
raise "The parent collection of an Asset must be of type ODRL::AssetCollection. The provided value will be discarded"
|
25
|
+
@partOf = nil
|
26
|
+
end
|
27
|
+
|
28
|
+
@refinements = {}
|
29
|
+
refinements = [refinements] unless refinements.is_a? Array
|
30
|
+
return if refinements.first.nil?
|
31
|
+
|
32
|
+
refinements.each do |c|
|
33
|
+
addRefinement(refinement: c)
|
34
|
+
end
|
35
|
+
end
|
4
36
|
|
37
|
+
def addPart(part: args)
|
38
|
+
raise "Asset cannot be added as part of something that is not an asset collection" unless is_a?(AssetCollection)
|
39
|
+
raise "Only Assets can be added as part of asset collections" unless part.is_a?(Asset)
|
5
40
|
|
6
|
-
|
7
|
-
|
8
|
-
#
|
9
|
-
# @author Mark D Wilkinson
|
10
|
-
class Asset < Base
|
11
|
-
attr_accessor :uid, :hasPolicy, :refinements, :partOf
|
12
|
-
|
13
|
-
def initialize(type: CASSET, hasPolicy: nil, refinements: nil, partOf: nil, **args)
|
14
|
-
@uid = uid
|
15
|
-
unless @uid
|
16
|
-
self.uid = Base.baseURI + "#asset_" + Base.getuuid
|
17
|
-
end
|
18
|
-
super(type: type, uid: @uid, **args)
|
19
|
-
|
20
|
-
@partOf = partOf
|
21
|
-
@hasPolicy = hasPolicy
|
22
|
-
|
23
|
-
if @hasPolicy and !(@hasPolicy.is_a? Policy) # if it exists and is the wrong type
|
24
|
-
raise "The policy of an Asset must be of type ODRL::Policy. The provided value will be discarded"
|
25
|
-
@hasPolicy = nil
|
26
|
-
end
|
27
|
-
if @partOf and !(@partOf.is_a? AssetCollection) # if it exists and is the wrong type
|
28
|
-
raise "The parent collection of an Asset must be of type ODRL::AssetCollection. The provided value will be discarded"
|
29
|
-
@partOf = nil
|
30
|
-
end
|
31
|
-
|
32
|
-
@refinements = Hash.new
|
33
|
-
refinements = [refinements] unless refinements.is_a? Array
|
34
|
-
if !(refinements.first.nil?)
|
35
|
-
refinements.each do |c|
|
36
|
-
self.addRefinement(refinement: c)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
def addPart(part: args)
|
43
|
-
unless self.is_a?(AssetCollection)
|
44
|
-
raise "Asset cannot be added as part of something that is not an asset collection"
|
45
|
-
end
|
46
|
-
unless part.is_a?(Asset)
|
47
|
-
raise "Only Assets can be added as part of asset collections"
|
48
|
-
end
|
49
|
-
part.partOf[self.uid] = [PPARTOF, self]
|
50
|
-
end
|
51
|
-
|
52
|
-
def addRefinement(refinement: args)
|
53
|
-
unless refinement.is_a?(Constraint)
|
54
|
-
raise "Refinement is not an ODRL Constraint"
|
55
|
-
else
|
56
|
-
self.refinements[refinement.uid] = [PREFINEMENT, refinement]
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
def load_graph
|
61
|
-
super
|
62
|
-
# TODO This is bad DRY!! Put the bulk of this method into the base object
|
63
|
-
[:refinements, :partOf, :hasPolicy].each do |connected_object_type|
|
64
|
-
next unless self.send(connected_object_type)
|
65
|
-
self.send(connected_object_type).each do |uid, typedconnection|
|
66
|
-
predicate, odrlobject = typedconnection # e.g. "refinement", RefinementObject
|
67
|
-
object = odrlobject.uid
|
68
|
-
subject = self.uid
|
69
|
-
repo = self.repository
|
70
|
-
triplify(subject, predicate, object, repo)
|
71
|
-
odrlobject.load_graph # start the cascade
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
41
|
+
part.partOf[uid] = [PPARTOF, self]
|
42
|
+
end
|
75
43
|
|
76
|
-
|
77
|
-
|
78
|
-
end
|
44
|
+
def addRefinement(refinement: args)
|
45
|
+
raise "Refinement is not an ODRL Constraint" unless refinement.is_a?(Constraint)
|
79
46
|
|
47
|
+
refinements[refinement.uid] = [PREFINEMENT, refinement]
|
80
48
|
end
|
81
49
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
50
|
+
def load_graph
|
51
|
+
super
|
52
|
+
# TODO: This is bad DRY!! Put the bulk of this method into the base object
|
53
|
+
%i[refinements partOf hasPolicy].each do |connected_object_type|
|
54
|
+
next unless send(connected_object_type)
|
55
|
+
|
56
|
+
send(connected_object_type).each do |_uid, typedconnection|
|
57
|
+
predicate, odrlobject = typedconnection # e.g. "refinement", RefinementObject
|
58
|
+
object = odrlobject.uid
|
59
|
+
subject = uid
|
60
|
+
repo = repository
|
61
|
+
triplify(subject, predicate, object, repo)
|
62
|
+
odrlobject.load_graph # start the cascade
|
86
63
|
end
|
64
|
+
end
|
87
65
|
end
|
88
66
|
|
67
|
+
def serialize(format:)
|
68
|
+
super
|
69
|
+
end
|
70
|
+
end
|
89
71
|
|
72
|
+
class AssetCollection < Asset
|
73
|
+
def initialize(type: CASSETCOLLECTION, **args)
|
74
|
+
super(type: type, **args)
|
75
|
+
end
|
76
|
+
end
|
90
77
|
end
|
data/lib/odrl/base.rb
CHANGED
@@ -59,6 +59,7 @@ PROPERTIES = {
|
|
59
59
|
subject: DCT.subject,
|
60
60
|
uid: ODRLV.uid,
|
61
61
|
label: RDFS.label,
|
62
|
+
issued: DCT.issued,
|
62
63
|
}
|
63
64
|
|
64
65
|
module ODRL
|
@@ -66,7 +67,10 @@ module ODRL
|
|
66
67
|
|
67
68
|
@@repository = RDF::Repository.new()
|
68
69
|
|
69
|
-
|
70
|
+
# If you add an attribute, you mustr also add it to the constructor,
|
71
|
+
# and to the @attribute list
|
72
|
+
# andn to the .load_graph
|
73
|
+
attr_accessor :title, :creator, :description, :subject, :baseURI, :uid, :id, :type, :label, :issued
|
70
74
|
|
71
75
|
def self.baseURI
|
72
76
|
return ENV['ODRL_BASEURI'] || "http://example.org"
|
@@ -87,7 +91,8 @@ module ODRL
|
|
87
91
|
def initialize(
|
88
92
|
title: nil,
|
89
93
|
creator: nil,
|
90
|
-
description: nil,
|
94
|
+
description: nil,
|
95
|
+
issued: nil,
|
91
96
|
subject: nil,
|
92
97
|
baseURI: "http://example.org",
|
93
98
|
uid:,
|
@@ -98,6 +103,7 @@ module ODRL
|
|
98
103
|
|
99
104
|
@title = title
|
100
105
|
@creator = creator
|
106
|
+
@issued = issued
|
101
107
|
@description = description
|
102
108
|
@subject = subject
|
103
109
|
@baseURI = baseURI || ODRL::Base.baseURI
|
@@ -191,14 +197,15 @@ module ODRL
|
|
191
197
|
end
|
192
198
|
|
193
199
|
def load_graph
|
194
|
-
[:title, :label, :creator, :description, :subject, :uid, :id, :type].each do |method|
|
200
|
+
[:title, :label, :issued, :creator, :description, :subject, :uid, :id, :type].each do |method|
|
195
201
|
next unless self.send(method)
|
196
202
|
next if self.send(method).empty?
|
197
|
-
subject = self.uid
|
198
|
-
predicate = PROPERTIES[method]
|
203
|
+
subject = self.uid # me!
|
204
|
+
predicate = PROPERTIES[method] # look up the predicate for this property
|
199
205
|
# warn "prediate #{predicate} for method #{method}"
|
200
|
-
object = self.send(method)
|
201
|
-
|
206
|
+
object = self.send(method) # get the value of this property from self
|
207
|
+
# warn "value #{object.to_s}"
|
208
|
+
repo = self.repository
|
202
209
|
triplify(subject, predicate, object, repo)
|
203
210
|
end
|
204
211
|
end
|
data/lib/odrl/constraint.rb
CHANGED
@@ -1,104 +1,105 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ODRL
|
4
|
+
class Constraint < Base
|
5
|
+
attr_accessor :uid, :rightOperand, :leftOperand, :operator, :rightOperandReference, :dataType, :unit, :status
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
dataType: nil,
|
15
|
-
unit: nil,
|
16
|
-
status: nil,
|
17
|
-
type: CCONSTRAINT,
|
18
|
-
**args)
|
7
|
+
def initialize(
|
8
|
+
rightOperand:, operator:, leftOperand:, uid: nil,
|
9
|
+
rightOPerandReference: nil,
|
10
|
+
dataType: nil,
|
11
|
+
unit: nil,
|
12
|
+
status: nil,
|
13
|
+
type: CCONSTRAINT,
|
14
|
+
**args
|
15
|
+
)
|
19
16
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
super(uid: @uid, type: type, **args)
|
17
|
+
@uid = uid
|
18
|
+
@uid ||= Base.baseURI + "#constraint_" + Base.getuuid
|
19
|
+
super(uid: @uid, type: type, **args)
|
25
20
|
|
26
|
-
|
27
|
-
|
28
|
-
@rightOperand = "http://www.w3.org/ns/odrl/2/#{@rightOperand}" unless @rightOperand =~ /https?:\/\// # if it is already a URI, then let it go
|
21
|
+
@rightOperand = rightOperand
|
22
|
+
raise "Constraints must haves a Right operand such as 'event' - I'm dead!" unless @rightOperand
|
29
23
|
|
30
|
-
|
31
|
-
|
32
|
-
@leftOperand = "http://www.w3.org/ns/odrl/2/#{@leftOperand}" unless @leftOperand =~ /https?:\/\// # if it is already a URI, then let it go
|
24
|
+
# if it is already a URI, then let it go
|
25
|
+
@rightOperand = "http://www.w3.org/ns/odrl/2/#{@rightOperand}" unless @rightOperand =~ %r{https?://}
|
33
26
|
|
34
|
-
|
35
|
-
|
36
|
-
|
27
|
+
@leftOperand = leftOperand
|
28
|
+
unless @leftOperand
|
29
|
+
raise "Constraints must haves a Left Operand such as 'http://some.event.org/on-now' - I'm dead!"
|
30
|
+
end
|
37
31
|
|
38
|
-
|
39
|
-
|
40
|
-
@unit = unit
|
41
|
-
@status = status
|
42
|
-
end
|
32
|
+
# if it is already a URI, then let it go
|
33
|
+
@leftOperand = "http://www.w3.org/ns/odrl/2/#{@leftOperand}" unless @leftOperand =~ %r{https?://}
|
43
34
|
|
44
|
-
|
45
|
-
|
46
|
-
# TODO This is bad DRY!! Put the bulk of this method into the base object
|
47
|
-
if self.rightOperand
|
48
|
-
predicate = PRIGHT
|
49
|
-
object = self.rightOperand
|
50
|
-
subject = self.uid
|
51
|
-
repo = self.repository
|
52
|
-
triplify(subject, predicate, object, repo)
|
53
|
-
end
|
54
|
-
if self.leftOperand
|
55
|
-
predicate = PLEFT
|
56
|
-
object = self.leftOperand
|
57
|
-
subject = self.uid
|
58
|
-
repo = self.repository
|
59
|
-
triplify(subject, predicate, object, repo)
|
60
|
-
end
|
61
|
-
if self.operator
|
62
|
-
predicate = POPERATOR
|
63
|
-
object = self.operator
|
64
|
-
subject = self.uid
|
65
|
-
repo = self.repository
|
66
|
-
triplify(subject, predicate, object, repo)
|
67
|
-
end
|
68
|
-
if self.rightOperandReference
|
69
|
-
predicate = POPERANDREFERENCE
|
70
|
-
object = self.rightOperandReference
|
71
|
-
subject = self.uid
|
72
|
-
repo = self.repository
|
73
|
-
triplify(subject, predicate, object, repo)
|
74
|
-
end
|
75
|
-
if self.dataType
|
76
|
-
predicate = PDATATYPE
|
77
|
-
object = self.dataType
|
78
|
-
subject = self.uid
|
79
|
-
repo = self.repository
|
80
|
-
triplify(subject, predicate, object, repo)
|
81
|
-
end
|
82
|
-
if self.unit
|
83
|
-
predicate = PUNIT
|
84
|
-
object = self.unit
|
85
|
-
subject = self.uid
|
86
|
-
repo = self.repository
|
87
|
-
triplify(subject, predicate, object, repo)
|
88
|
-
end
|
89
|
-
if self.status
|
90
|
-
predicate = PSTATUS
|
91
|
-
object = self.status
|
92
|
-
subject = self.uid
|
93
|
-
repo = self.repository
|
94
|
-
triplify(subject, predicate, object, repo)
|
95
|
-
end
|
96
|
-
end
|
35
|
+
@operator = operator
|
36
|
+
raise "Constraints must haves an operator such as 'eq' - I'm dead!" unless @operator
|
97
37
|
|
98
|
-
|
99
|
-
|
100
|
-
end
|
38
|
+
# if it is already a URI, then let it go
|
39
|
+
@operator = "http://www.w3.org/ns/odrl/2/#{@operator}" unless @operator =~ %r{https?://}
|
101
40
|
|
41
|
+
@rightOperandReference = rightOperandReference
|
42
|
+
@dataType = dataType
|
43
|
+
@unit = unit
|
44
|
+
@status = status
|
102
45
|
end
|
103
46
|
|
47
|
+
def load_graph
|
48
|
+
super
|
49
|
+
# TODO: This is bad DRY!! Put the bulk of this method into the base object
|
50
|
+
if rightOperand
|
51
|
+
predicate = PRIGHT
|
52
|
+
object = rightOperand
|
53
|
+
subject = uid
|
54
|
+
repo = repository
|
55
|
+
triplify(subject, predicate, object, repo)
|
56
|
+
end
|
57
|
+
if leftOperand
|
58
|
+
predicate = PLEFT
|
59
|
+
object = leftOperand
|
60
|
+
subject = uid
|
61
|
+
repo = repository
|
62
|
+
triplify(subject, predicate, object, repo)
|
63
|
+
end
|
64
|
+
if operator
|
65
|
+
predicate = POPERATOR
|
66
|
+
object = operator
|
67
|
+
subject = uid
|
68
|
+
repo = repository
|
69
|
+
triplify(subject, predicate, object, repo)
|
70
|
+
end
|
71
|
+
if rightOperandReference
|
72
|
+
predicate = POPERANDREFERENCE
|
73
|
+
object = rightOperandReference
|
74
|
+
subject = uid
|
75
|
+
repo = repository
|
76
|
+
triplify(subject, predicate, object, repo)
|
77
|
+
end
|
78
|
+
if dataType
|
79
|
+
predicate = PDATATYPE
|
80
|
+
object = dataType
|
81
|
+
subject = uid
|
82
|
+
repo = repository
|
83
|
+
triplify(subject, predicate, object, repo)
|
84
|
+
end
|
85
|
+
if unit
|
86
|
+
predicate = PUNIT
|
87
|
+
object = unit
|
88
|
+
subject = uid
|
89
|
+
repo = repository
|
90
|
+
triplify(subject, predicate, object, repo)
|
91
|
+
end
|
92
|
+
return unless status
|
93
|
+
|
94
|
+
predicate = PSTATUS
|
95
|
+
object = status
|
96
|
+
subject = uid
|
97
|
+
repo = repository
|
98
|
+
triplify(subject, predicate, object, repo)
|
99
|
+
end
|
100
|
+
|
101
|
+
def serialize(format:)
|
102
|
+
super
|
103
|
+
end
|
104
|
+
end
|
104
105
|
end
|