odrl-ruby 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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