odrl-ruby 0.2.0 → 0.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fe2979f7b53376990eda47051aa5eff33f6d67952742b35abb9e650ce5434a09
4
- data.tar.gz: 0e9f46bd539435cfe5d601b0d16648850811139fa967f0b948f1984117e6fb6d
3
+ metadata.gz: 63cb1e71b635624b49a5ed95f438db8c1dbd93210f454be4d88f1227b487874f
4
+ data.tar.gz: 40fa678545058fca0b73de3a89d4c379ae6487c0f7a8a4e778f4642b7250723e
5
5
  SHA512:
6
- metadata.gz: 1d209dd7d1ae1e37aa3a655fd9a76c2be59e8dea5439b05ff0f12fe9ded99aabace239b64e56795a619294b531edfc21191531a514892322699e2b607380f2c6
7
- data.tar.gz: 8ebd782fb9662a236befa968a2fccd8e8b36dcf789092d1f22398cac2bda6aafc0b375bc0bc9314ecd0826ce6882e26af92527900f7777be026425aac31c5600
6
+ metadata.gz: adc87311982d35fafffc09e54afcadf88ec41e89f5acf6c2925cf346f3f871293b5fcff62c8928a64fdbaec240ee5279336eaacafedfc50c52cea965f65ff0c1
7
+ data.tar.gz: 4438e55d750c5792de355aedd3c991506b6446419c031c492dd2eec7c819af81dce00075524b7400af504469248e095e6b2378d44380f4e92f76786ee046407f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- odrl-ruby (0.2.0)
4
+ odrl-ruby (0.2.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/README.md CHANGED
@@ -20,6 +20,10 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
+ # Two functionalities: Build ODRL Policies; Build ODRL Profiles to extend the core ODRL vocabulary
24
+
25
+ # Build Policy:
26
+
23
27
  ```
24
28
  require 'odrl/ruby'
25
29
 
@@ -65,6 +69,58 @@ result = policy.serialize(format: 'turtle') # get the RDF string
65
69
  puts result
66
70
  ```
67
71
 
72
+ # Build Profile:
73
+
74
+ ```
75
+ require 'odrl/profile/builder'
76
+
77
+ p = ODRL::Profile::Builder.new(
78
+ uri: 'https://example.org/myprofiles/germplasm_odrl_profile.ttl',
79
+ title: "ODRL Profile for Germplasm resources",
80
+ description: "There are some properties and comparisons that only make sense in the Germplasm expert domain",
81
+ author: "Mark D Wilkinson",
82
+ profile_class: "https://example.org/myprofiles/ontology#SeedOffer"
83
+ )
84
+
85
+ p.asset_relations << ODRL::Profile::AssetRelation.new(
86
+ uri: "https://example.org/myprofiles/ontology#nagoya_permission",
87
+ label: "Permission under Nagoya protocol",
88
+ definition: "Permission is a special thing in the Nagoya protocol")
89
+
90
+
91
+ p.party_functional_roles << ODRL::Profile::AssetRelation.new(
92
+ uri: "https://example.org/myprofiles/ontology#nagoya_assigner",
93
+ label: "Assigner with Nagoya authority to assign",
94
+ definition: "Assigners have special responsibilities in the Nagoya protocol")
95
+
96
+ p.actions << ODRL::Profile::Rule.new(
97
+ uri: "https://example.org/myprofiles/ontology#nagoya_propogate",
98
+ label: "Plant and Harvest",
99
+ definition: "the action of planting and harvesting the seed",
100
+ included_in: ODRLV.use,
101
+ implies: ODRLV.distribute)
102
+
103
+
104
+ p.leftOperands << ODRL::Profile::LeftOperand.new(
105
+ uri: "https://example.org/myprofiles/ontology#at_risk_species",
106
+ label: "At Risk Species",
107
+ definition: "A species that has been flagged as at-risk of extinction")
108
+
109
+ p.rightOperands << ODRL::Profile::RightOperand.new(
110
+ uri: "https://example.org/myprofiles/ontology#on_watchlist",
111
+ label: "On Watchlist",
112
+ definition: "A species whose risk of extinction is on a watchlist")
113
+
114
+ p.rightOperands << ODRL::Profile::Relation.new(
115
+ uri: "https://example.org/myprofiles/ontology#within_risk_boundary",
116
+ label: "Within Bounds",
117
+ definition: "comparison of risk boundaries")
118
+
119
+
120
+ p.build()
121
+ puts p.serialize
122
+ ```
123
+
68
124
 
69
125
  ## License
70
126
 
@@ -1,47 +1,63 @@
1
1
  @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
2
2
 
3
- <http://example.org#action_68785487525736>
4
- <http://purl.org/dc/terms/identifier> <http://example.org#action_68785487525736> ;
5
- a <http://www.w3.org/ns/odrl/2/Action> .
6
-
7
- <http://example.org#constraint_68785487525880>
8
- <http://purl.org/dc/terms/identifier> <http://example.org#constraint_68785487525880> ;
3
+ <http://example.org#constraint_68811358965684>
4
+ <http://purl.org/dc/terms/identifier> <http://example.org#constraint_68811358965684> ;
9
5
  <http://purl.org/dc/terms/title> "Only during the hackathon"@en ;
10
6
  a <http://www.w3.org/ns/odrl/2/Constraint> ;
7
+ <http://www.w3.org/2000/01/rdf-schema#label> "Only during the hackathon"@en ;
11
8
  <http://www.w3.org/ns/odrl/2/leftOperand> <http://www.w3.org/ns/odrl/2/event> ;
12
9
  <http://www.w3.org/ns/odrl/2/operator> <http://www.w3.org/ns/odrl/2/eq> ;
13
- <http://www.w3.org/ns/odrl/2/rightOperand> <https://2023.biohackathon.org> .
10
+ <http://www.w3.org/ns/odrl/2/rightOperand> <https://2023.biohackathon.org> ;
11
+ <http://www.w3.org/ns/odrl/2/uid> <http://example.org#constraint_68811358965684> .
14
12
 
15
- <http://example.org#policy_68785487446247>
13
+ <http://example.org#policy_68811358965627>
16
14
  <http://purl.org/dc/terms/creator> <https://orcid.org/0000-0001-6960-357X> ;
17
15
  <http://purl.org/dc/terms/description> "An offer for Toshiaki-san to use the polyA data during the hackathon"@en ;
18
- <http://purl.org/dc/terms/identifier> <http://example.org#policy_68785487446247> ;
16
+ <http://purl.org/dc/terms/identifier> <http://example.org#policy_68811358965627> ;
19
17
  <http://purl.org/dc/terms/subject> "collaboration"@en ;
20
18
  <http://purl.org/dc/terms/title> "Offer to Toshiaki-san"@en ;
21
19
  a <http://www.w3.org/ns/odrl/2/Offer> ;
22
- <http://www.w3.org/ns/odrl/2/permission> <http://example.org#rule_68785487525598> .
20
+ <http://www.w3.org/2000/01/rdf-schema#label> "Offer to Toshiaki-san"@en ;
21
+ <http://www.w3.org/ns/odrl/2/permission> <http://example.org#rule_68811358965667> ;
22
+ <http://www.w3.org/ns/odrl/2/uid> <http://example.org#policy_68811358965627> .
23
23
 
24
- <http://example.org#rule_68785487525598>
25
- <http://purl.org/dc/terms/identifier> <http://example.org#rule_68785487525598> ;
24
+ <http://example.org#rule_68811358965667>
25
+ <http://purl.org/dc/terms/identifier> <http://example.org#rule_68811358965667> ;
26
26
  <http://purl.org/dc/terms/title> "Permission to use"@en ;
27
27
  a <http://www.w3.org/ns/odrl/2/Permission> ;
28
- <http://www.w3.org/ns/odrl/2/action> <http://example.org#action_68785487525736> ;
28
+ <http://www.w3.org/2000/01/rdf-schema#label> "Permission to use"@en ;
29
+ <http://www.w3.org/ns/odrl/2/action> <http://www.w3.org/ns/odrl/2/use> ;
29
30
  <http://www.w3.org/ns/odrl/2/assignee> <https://orcid.org/0000-0001-6960-357X> ;
30
31
  <http://www.w3.org/ns/odrl/2/assigner> <https://orcid.org/0000-0003-2391-0384> ;
31
- <http://www.w3.org/ns/odrl/2/constraint> <http://example.org#constraint_68785487525880> ;
32
- <http://www.w3.org/ns/odrl/2/target> <http://mark.wilkinson.org/data/polyA> .
32
+ <http://www.w3.org/ns/odrl/2/constraint> <http://example.org#constraint_68811358965684> ;
33
+ <http://www.w3.org/ns/odrl/2/target> <http://mark.wilkinson.org/data/polyA> ;
34
+ <http://www.w3.org/ns/odrl/2/uid> <http://example.org#rule_68811358965667> .
33
35
 
34
36
  <http://mark.wilkinson.org/data/polyA>
35
37
  <http://purl.org/dc/terms/identifier> <http://mark.wilkinson.org/data/polyA> ;
36
38
  <http://purl.org/dc/terms/title> "Mark's PolyA Database"@en ;
37
- a <http://www.w3.org/ns/odrl/2/Asset> .
39
+ a <http://www.w3.org/ns/odrl/2/Asset> ;
40
+ <http://www.w3.org/2000/01/rdf-schema#label> "Mark's PolyA Database"@en ;
41
+ <http://www.w3.org/ns/odrl/2/uid> <http://mark.wilkinson.org/data/polyA> .
42
+
43
+ <http://www.w3.org/ns/odrl/2/use>
44
+ <http://purl.org/dc/terms/identifier> <http://www.w3.org/ns/odrl/2/use> ;
45
+ a "type"@en ;
46
+ <http://www.w3.org/2000/01/rdf-schema#label> ""@en ;
47
+ <http://www.w3.org/ns/odrl/2/uid> <http://www.w3.org/ns/odrl/2/use> ;
48
+ <https://schema.org/name> ""@en .
38
49
 
39
50
  <https://orcid.org/0000-0001-6960-357X>
40
51
  <http://purl.org/dc/terms/identifier> <https://orcid.org/0000-0001-6960-357X> ;
41
52
  <http://purl.org/dc/terms/title> "Mark D Wilkinson"@en ;
42
- a <http://www.w3.org/ns/odrl/2/Party> .
53
+ a <http://www.w3.org/ns/odrl/2/Party> ;
54
+ <http://www.w3.org/2000/01/rdf-schema#label> "Mark D Wilkinson"@en ;
55
+ <http://www.w3.org/ns/odrl/2/uid> <https://orcid.org/0000-0001-6960-357X> .
43
56
 
44
57
  <https://orcid.org/0000-0003-2391-0384>
45
58
  <http://purl.org/dc/terms/identifier> <https://orcid.org/0000-0003-2391-0384> ;
46
59
  <http://purl.org/dc/terms/title> "Toshiaki Katayama"@en ;
47
- a <http://www.w3.org/ns/odrl/2/Party> .
60
+ a <http://www.w3.org/ns/odrl/2/Party> ;
61
+ <http://www.w3.org/2000/01/rdf-schema#label> "Toshiaki Katayama"@en ;
62
+ <http://www.w3.org/ns/odrl/2/uid> <https://orcid.org/0000-0003-2391-0384> .
63
+
@@ -1,4 +1,4 @@
1
- require '../lib/odrl/profile/builder.rb'
1
+ require 'odrl/profile/builder'
2
2
 
3
3
  p = ODRL::Profile::Builder.new(
4
4
  uri: 'https://example.org/myprofiles/germplasm_odrl_profile.ttl',
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ODRL
4
4
  module ODRL
5
- VERSION = "0.2.0"
5
+ VERSION = "0.2.1"
6
6
  end
7
7
  end
data/lib/odrl/party.rb CHANGED
@@ -18,8 +18,8 @@ module ODRL
18
18
  super(uid: @uid, type: type, **args)
19
19
 
20
20
  @refinements = {}
21
- @partOf = partOf
22
- @predicate = predicate
21
+ @partOf = {}
22
+ @predicate = predicate.to_s
23
23
 
24
24
  if @predicate&.match(/https?:/)
25
25
  # do nothing! It's their choice to send a full predicate!
@@ -42,10 +42,17 @@ module ODRL
42
42
  end
43
43
  end
44
44
 
45
- return unless @partOf and !(@partOf.is_a? PartyCollection) # if it exists and is the wrong type
45
+ partOf = [partOf] unless partOf.is_a? Array
46
+ unless partOf.first.nil?
47
+ partOf.each do |p|
48
+ p.addPart(part: self)
49
+ end
50
+ end
51
+
52
+ unless @partOf and !(@partOf.is_a? PartyCollection) # if it exists and is the wrong type
53
+ raise "The parent collection of a Party must be of type ODRL::PaertyCollection."
54
+ end
46
55
 
47
- raise "The parent collection of a Party must be of type ODRL::PaertyCollection."
48
- # @partOf = nil
49
56
  end
50
57
 
51
58
  def addRefinement(refinement: args)
@@ -55,16 +62,15 @@ module ODRL
55
62
  end
56
63
 
57
64
  def addPart(part: args)
58
- raise "Party cannot be added as part of something that is not an PartyCollection" unless is_a?(PartyCollection)
59
- raise "Only Parties can be added as part of PartyCollections" unless part.is_a?(Asset)
60
-
65
+ raise "Party cannot be added as part of something that is not an PartyCollection" unless self.is_a?(PartyCollection)
61
66
  part.partOf[uid] = [PPARTOF, self]
62
67
  end
63
68
 
64
69
  def load_graph
65
70
  super
66
71
  # TODO: This is bad DRY!! Put the bulk of this method into the base object
67
- %i[refinements partOf].each do |connected_object_type|
72
+ # TODO: Currently we don't support partOf
73
+ %i[refinements].each do |connected_object_type|
68
74
  next unless send(connected_object_type)
69
75
 
70
76
  send(connected_object_type).each do |_uid, typedconnection|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odrl-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mark Wilkinson