odrl-ruby 0.1.4 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -2
- data/Gemfile +1 -2
- data/Gemfile.lock +98 -84
- data/README.md +1 -3
- data/examples/build_profile.rb +47 -0
- 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 +192 -178
- data/lib/odrl/constraint.rb +95 -89
- data/lib/odrl/odrl/version.rb +1 -1
- data/lib/odrl/party.rb +75 -84
- data/lib/odrl/policy.rb +80 -68
- data/lib/odrl/profile/builder.rb +185 -0
- data/lib/odrl/ruby.rb +12 -13
- data/lib/odrl/rule.rb +89 -101
- metadata +11 -5
- data/examples/builder-translator-output.ttl +0 -0
- /data/examples/{output.ttl → biohackathon-output.ttl} +0 -0
data/lib/odrl/party.rb
CHANGED
@@ -1,100 +1,91 @@
|
|
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
|
-
raise "You didn't indicate a valid predicate (assigner/assignee) so we will default to assigner. This may not be what you want!"
|
33
|
-
@predicate = PASSIGNER
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
refinements = [refinements] unless refinements.is_a? Array
|
40
|
-
if !(refinements.first.nil?)
|
41
|
-
refinements.each do |c|
|
42
|
-
self.addRefinement(refinement: c)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
if @partOf and !(@partOf.is_a? PartyCollection) # if it exists and is the wrong type
|
47
|
-
raise "The parent collection of a Party must be of type ODRL::PaertyCollection. The provided value will be discarded"
|
48
|
-
@partOf = nil
|
49
|
-
end
|
50
|
-
|
4
|
+
class Party < Base
|
5
|
+
attr_accessor :uid, :refinements, :partOf, :predicate, :type
|
6
|
+
|
7
|
+
def initialize(
|
8
|
+
uid: nil,
|
9
|
+
refinements: nil,
|
10
|
+
partOf: nil,
|
11
|
+
predicate: nil,
|
12
|
+
type: CPARTY,
|
13
|
+
**args
|
14
|
+
)
|
15
|
+
|
16
|
+
@uid = uid
|
17
|
+
@uid ||= Base.baseURI + "#party_" + Base.getuuid
|
18
|
+
super(uid: @uid, type: type, **args)
|
19
|
+
|
20
|
+
@refinements = {}
|
21
|
+
@partOf = partOf
|
22
|
+
@predicate = predicate
|
23
|
+
|
24
|
+
if @predicate&.match(/https?:/)
|
25
|
+
# do nothing! It's their choice to send a full predicate!
|
26
|
+
elsif @predicate # we're guessing it will be a string from the valid list?
|
27
|
+
unless PARTYFUNCTIONS.include? @predicate
|
28
|
+
raise "You didn't indicate a valid predicate"
|
29
|
+
# @predicate = ODRLV.assigner
|
30
|
+
else
|
31
|
+
@predicate = "#{ODRLV.to_s}#{predicate}" # make the URI form of the valid predicate
|
51
32
|
end
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
33
|
+
elsif @predicate.nil?
|
34
|
+
raise "If you don't indicate a predicate at all"
|
35
|
+
# @predicate = ODRLV.assigner
|
36
|
+
end
|
37
|
+
|
38
|
+
refinements = [refinements] unless refinements.is_a? Array
|
39
|
+
unless refinements.first.nil?
|
40
|
+
refinements.each do |c|
|
41
|
+
addRefinement(refinement: c)
|
59
42
|
end
|
43
|
+
end
|
60
44
|
|
61
|
-
|
62
|
-
unless self.is_a?(PartyCollection)
|
63
|
-
raise "Party cannot be added as part of something that is not an PartyCollection"
|
64
|
-
end
|
65
|
-
unless part.is_a?(Asset)
|
66
|
-
raise "Only Parties can be added as part of PartyCollections"
|
67
|
-
end
|
68
|
-
part.partOf[self.uid] = [PPARTOF, self]
|
69
|
-
end
|
45
|
+
return unless @partOf and !(@partOf.is_a? PartyCollection) # if it exists and is the wrong type
|
70
46
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
[:refinements, :partOf].each do |connected_object_type|
|
75
|
-
next unless self.send(connected_object_type)
|
76
|
-
self.send(connected_object_type).each do |uid, typedconnection|
|
77
|
-
predicate, odrlobject = typedconnection # e.g. "refinement", RefinementObject
|
78
|
-
object = odrlobject.uid
|
79
|
-
subject = self.uid
|
80
|
-
repo = self.repository
|
81
|
-
triplify(subject, predicate, object, repo)
|
82
|
-
odrlobject.load_graph # start the cascade
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
47
|
+
raise "The parent collection of a Party must be of type ODRL::PaertyCollection."
|
48
|
+
# @partOf = nil
|
49
|
+
end
|
86
50
|
|
87
|
-
|
88
|
-
|
89
|
-
|
51
|
+
def addRefinement(refinement: args)
|
52
|
+
raise "Refinement is not an ODRL Constraint" unless refinement.is_a?(Constraint)
|
53
|
+
|
54
|
+
refinements[refinement.uid] = [PREFINEMENT, refinement]
|
55
|
+
end
|
90
56
|
|
57
|
+
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
|
+
|
61
|
+
part.partOf[uid] = [PPARTOF, self]
|
91
62
|
end
|
92
|
-
class PartyCollection < Party
|
93
63
|
|
94
|
-
|
95
|
-
|
64
|
+
def load_graph
|
65
|
+
super
|
66
|
+
# TODO: This is bad DRY!! Put the bulk of this method into the base object
|
67
|
+
%i[refinements partOf].each do |connected_object_type|
|
68
|
+
next unless send(connected_object_type)
|
69
|
+
|
70
|
+
send(connected_object_type).each do |_uid, typedconnection|
|
71
|
+
predicate, odrlobject = typedconnection # e.g. "refinement", RefinementObject
|
72
|
+
object = odrlobject.uid
|
73
|
+
subject = uid
|
74
|
+
repo = repository
|
75
|
+
triplify(subject, predicate, object, repo)
|
76
|
+
odrlobject.load_graph # start the cascade
|
96
77
|
end
|
78
|
+
end
|
97
79
|
end
|
98
80
|
|
81
|
+
def serialize(format:)
|
82
|
+
super
|
83
|
+
end
|
84
|
+
end
|
99
85
|
|
86
|
+
class PartyCollection < Party
|
87
|
+
def initialize(type: CPARTYCOLLECTION, **args)
|
88
|
+
super(type: type, **args)
|
89
|
+
end
|
90
|
+
end
|
100
91
|
end
|
data/lib/odrl/policy.rb
CHANGED
@@ -3,83 +3,95 @@
|
|
3
3
|
require_relative "odrl/version"
|
4
4
|
|
5
5
|
module ODRL
|
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
|
-
def load_graph
|
39
|
-
super
|
40
|
-
self.rules.each do |uid, rulepair|
|
41
|
-
predicate, ruleobject = rulepair # e.g. "permission", RuleObject
|
42
|
-
object = ruleobject.uid
|
43
|
-
subject = self.uid
|
44
|
-
repo = self.repository
|
45
|
-
triplify(subject, predicate, object, repo)
|
46
|
-
ruleobject.load_graph # start the cascade
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def serialize(format:)
|
51
|
-
super
|
52
|
-
end
|
6
|
+
class Error < StandardError; end
|
7
|
+
|
8
|
+
class Policy < Base
|
9
|
+
attr_accessor :rules, :profiles
|
10
|
+
|
11
|
+
def initialize(uid: nil, type: CPOLICY, **args)
|
12
|
+
@uid = uid
|
13
|
+
self.uid = Base.baseURI + "#policy_" + Base.getuuid unless @uid
|
14
|
+
super(uid: @uid, type: type, **args)
|
15
|
+
|
16
|
+
@rules = {}
|
17
|
+
@profiles = {}
|
18
|
+
end
|
19
|
+
|
20
|
+
def addDuty(rule:)
|
21
|
+
uid = rule.uid
|
22
|
+
rules[uid] = [POBLIGATION, rule]
|
23
|
+
end
|
24
|
+
|
25
|
+
def addPermission(rule:)
|
26
|
+
uid = rule.uid
|
27
|
+
rules[uid] = [PPERMISSION, rule]
|
28
|
+
end
|
29
|
+
|
30
|
+
def addProhibition(rule:)
|
31
|
+
uid = rule.uid
|
32
|
+
rules[uid] = [PPROHIBITION, rule]
|
33
|
+
end
|
34
|
+
|
35
|
+
def addProfile(profile:)
|
36
|
+
uid = profile.uid
|
37
|
+
profiles[uid] = [PPROFILE, uid]
|
53
38
|
end
|
54
39
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
40
|
+
def load_graph
|
41
|
+
super
|
42
|
+
rules.each do |_uid, rulepair|
|
43
|
+
predicate, ruleobject = rulepair # e.g. "permission", RuleObject
|
44
|
+
object = ruleobject.uid
|
45
|
+
subject = uid
|
46
|
+
repo = repository
|
47
|
+
triplify(subject, predicate, object, repo)
|
48
|
+
ruleobject.load_graph # start the cascade
|
49
|
+
end
|
50
|
+
|
51
|
+
# TODO make test for profiles
|
52
|
+
profiles.each do |_uid, profile_pair|
|
53
|
+
predicate, profileuri = profile_pair # e.g. "permission", RuleObject
|
54
|
+
object = profileuri
|
55
|
+
subject = uid
|
56
|
+
repo = repository
|
57
|
+
triplify(subject, predicate, object, repo)
|
58
|
+
end
|
59
|
+
|
59
60
|
end
|
60
61
|
|
61
|
-
|
62
|
-
|
63
|
-
super(type: type, **args)
|
64
|
-
end
|
62
|
+
def serialize(format:)
|
63
|
+
super
|
65
64
|
end
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
65
|
+
end
|
66
|
+
|
67
|
+
class Set < Policy
|
68
|
+
def initialize(type: CSET, **args)
|
69
|
+
super(type: type, **args)
|
70
70
|
end
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
71
|
+
end
|
72
|
+
|
73
|
+
class Offer < Set
|
74
|
+
def initialize(type: COFFER, **args)
|
75
|
+
super(type: type, **args)
|
75
76
|
end
|
77
|
+
end
|
76
78
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
end
|
79
|
+
class Agreement < Set
|
80
|
+
def initialize(type: CAGREEMENT, **args)
|
81
|
+
super(type: type, **args)
|
81
82
|
end
|
82
|
-
|
83
|
+
end
|
83
84
|
|
85
|
+
class Request < Set
|
86
|
+
def initialize(type: CREQUEST, **args)
|
87
|
+
super(type: type, **args)
|
88
|
+
end
|
89
|
+
end
|
84
90
|
|
91
|
+
class Privacy < Set
|
92
|
+
def initialize(type: CPRIVACY, **args)
|
93
|
+
super(type: type, **args)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
# ====================================================
|
85
97
|
end
|
@@ -0,0 +1,185 @@
|
|
1
|
+
require "linkeddata"
|
2
|
+
|
3
|
+
RDFS = RDF::Vocabulary.new("http://www.w3.org/2000/01/rdf-schema#")
|
4
|
+
DCAT = RDF::Vocabulary.new("http://www.w3.org/ns/dcat#")
|
5
|
+
DC = RDF::Vocabulary.new("http://purl.org/dc/elements/1.1/")
|
6
|
+
DCT = RDF::Vocabulary.new("http://purl.org/dc/terms/")
|
7
|
+
FUND = RDF::Vocabulary.new("http://vocab.ox.ac.uk/projectfunding#")
|
8
|
+
SKOS = RDF::Vocabulary.new("http://www.w3.org/2004/02/skos/core#")
|
9
|
+
ODRLV = RDF::Vocabulary.new("http://www.w3.org/ns/odrl/2/")
|
10
|
+
OBO = RDF::Vocabulary.new("http://purl.obolibrary.org/obo/")
|
11
|
+
XSD = RDF::Vocabulary.new("http://www.w3.org/2001/XMLSchema#")
|
12
|
+
SCHEMA = RDF::Vocabulary.new("https://schema.org/")
|
13
|
+
OWL = RDF::Vocabulary.new("http://www.w3.org/2002/07/owl#")
|
14
|
+
|
15
|
+
module ODRL
|
16
|
+
module Profile
|
17
|
+
class Builder
|
18
|
+
attr_accessor :uri, :profile_class, :repository, :title, :description, :author
|
19
|
+
attr_accessor :asset_relations, :party_functional_roles, :actions, :leftOperands, :rightOperands
|
20
|
+
|
21
|
+
# attr_accessor :logicalConstraints, :conflict_strategies, :rules
|
22
|
+
def initialize(uri:, profile_class:, title:, description:, author:)
|
23
|
+
@uri = uri
|
24
|
+
@profile_class = profile_class
|
25
|
+
@title = title
|
26
|
+
@description = description
|
27
|
+
@author = author
|
28
|
+
@repository = RDF::Repository.new
|
29
|
+
@asset_relations = []
|
30
|
+
@party_functional_roles = []
|
31
|
+
@actions = []
|
32
|
+
@leftOperands = []
|
33
|
+
@rightOperands = []
|
34
|
+
@asset_relations = []
|
35
|
+
|
36
|
+
# Required declarations of disjointedness
|
37
|
+
ODRL::Profile::Builder.triplify(@profile_class, RDFS.subClassOf, ODRLV.Policy, @repository)
|
38
|
+
ODRL::Profile::Builder.triplify(@profile_class, OWL.disjointWith, ODRLV.Agreement, @repository)
|
39
|
+
ODRL::Profile::Builder.triplify(@profile_class, OWL.disjointWith, ODRLV.Offer, @repository)
|
40
|
+
ODRL::Profile::Builder.triplify(@profile_class, OWL.disjointWith, ODRLV.Privacy, @repository)
|
41
|
+
ODRL::Profile::Builder.triplify(@profile_class, OWL.disjointWith, ODRLV.Request, @repository)
|
42
|
+
ODRL::Profile::Builder.triplify(@profile_class, OWL.disjointWith, ODRLV.Ticket, @repository)
|
43
|
+
ODRL::Profile::Builder.triplify(@profile_class, OWL.disjointWith, ODRLV.Assertion, @repository)
|
44
|
+
end
|
45
|
+
|
46
|
+
def build
|
47
|
+
repo = repository # just shorter :-)
|
48
|
+
title and ODRL::Profile::Builder.triplify(uri, DCT.title, title, repo)
|
49
|
+
description and ODRL::Profile::Builder.triplify(uri, DCT.title, description, repo)
|
50
|
+
author and ODRL::Profile::Builder.triplify(uri, DC.creator, author, repo)
|
51
|
+
|
52
|
+
[asset_relations, party_functional_roles, actions, leftOperands, rightOperands, asset_relations].flatten.each do |elem|
|
53
|
+
elem.build(repo: repo)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def serialize(format: :turtle)
|
58
|
+
format = format.to_sym
|
59
|
+
w = get_writer(type: format)
|
60
|
+
w.dump(repository)
|
61
|
+
end
|
62
|
+
|
63
|
+
def get_writer(type: :turtle)
|
64
|
+
RDF::Writer.for(type)
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.triplify(s, p, o, repo)
|
68
|
+
s = s.strip if s.instance_of?(String)
|
69
|
+
p = p.strip if p.instance_of?(String)
|
70
|
+
o = o.strip if o.instance_of?(String)
|
71
|
+
|
72
|
+
unless s.respond_to?("uri")
|
73
|
+
|
74
|
+
raise "Subject #{s} must be a URI-compatible thingy #{s}, #{p}, #{o}" unless s.to_s =~ %r{^\w+:/?/?[^\s]+}
|
75
|
+
|
76
|
+
s = RDF::URI.new(s.to_s)
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
unless p.respond_to?("uri")
|
81
|
+
|
82
|
+
raise "Predicate #{p} must be a URI-compatible thingy #{s}, #{p}, #{o}" unless p.to_s =~ %r{^\w+:/?/?[^\s]+}
|
83
|
+
|
84
|
+
p = RDF::URI.new(p.to_s)
|
85
|
+
|
86
|
+
end
|
87
|
+
unless o.respond_to?("uri")
|
88
|
+
o = if o.to_s =~ %r{^\w+:/?/?[^\s]+}
|
89
|
+
RDF::URI.new(o.to_s)
|
90
|
+
elsif o.to_s =~ /^\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d/
|
91
|
+
RDF::Literal.new(o.to_s, datatype: RDF::XSD.date)
|
92
|
+
elsif o.to_s =~ /^\d\.\d/
|
93
|
+
RDF::Literal.new(o.to_s, datatype: RDF::XSD.float)
|
94
|
+
elsif o.to_s =~ /^[0-9]+$/
|
95
|
+
RDF::Literal.new(o.to_s, datatype: RDF::XSD.int)
|
96
|
+
else
|
97
|
+
RDF::Literal.new(o.to_s, language: :en)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
triple = RDF::Statement(s, p, o)
|
102
|
+
repo.insert(triple)
|
103
|
+
|
104
|
+
true
|
105
|
+
end
|
106
|
+
end # end of Class Builder
|
107
|
+
|
108
|
+
class ProfileElement
|
109
|
+
attr_accessor :uri, :label, :definition
|
110
|
+
|
111
|
+
def initialize(uri:, label:, definition:, **_args)
|
112
|
+
@uri = uri
|
113
|
+
@label = label
|
114
|
+
@definition = definition
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
class AssetRelation < ProfileElement
|
119
|
+
# ex:myRelation rdfs:subPropertyOf odrl:relation .
|
120
|
+
def build(repo:)
|
121
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.subPropertyOf, ODRLV.relation, repo)
|
122
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.label, label, repo)
|
123
|
+
ODRL::Profile::Builder.triplify(uri, SKOS.defintion, definition, repo)
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
class PartyFunction < ProfileElement
|
128
|
+
# ex:myFunctionRole rdfs:subPropertyOf odrl:function
|
129
|
+
def build(repo:)
|
130
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.subPropertyOf, ODRLV.function, repo)
|
131
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.label, label, repo)
|
132
|
+
ODRL::Profile::Builder.triplify(uri, SKOS.defintion, definition, repo)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
class Rule < ProfileElement
|
137
|
+
# ex:myAction a odrl:Action .
|
138
|
+
# ex:myAction odrl:includedIn odrl:use .
|
139
|
+
# ex:myAction odrl:implies odrl:distribute .
|
140
|
+
attr_accessor :implies, :included_in
|
141
|
+
|
142
|
+
def initialize(implies: nil, included_in: ODRLV.use, **args)
|
143
|
+
@implies = implies
|
144
|
+
@included_in = included_in
|
145
|
+
super(**args)
|
146
|
+
end
|
147
|
+
|
148
|
+
def build(repo:)
|
149
|
+
ODRL::Profile::Builder.triplify(uri, RDF.type, ODRLV.Action, repo)
|
150
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.label, label, repo)
|
151
|
+
ODRL::Profile::Builder.triplify(uri, SKOS.defintion, definition, repo)
|
152
|
+
ODRL::Profile::Builder.triplify(uri, ODRLV.includedIn, included_in, repo)
|
153
|
+
return unless implies
|
154
|
+
ODRL::Profile::Builder.triplify(uri, ODRLV.implies, implies, repo)
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
class LeftOperand < ProfileElement
|
159
|
+
# ex:myLeftOperand a odrl:LeftOperand .
|
160
|
+
def build(repo:)
|
161
|
+
ODRL::Profile::Builder.triplify(uri, RDF.type, ODRLV.LeftOperand, repo)
|
162
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.label, label, repo)
|
163
|
+
ODRL::Profile::Builder.triplify(uri, SKOS.defintion, definition, repo)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
class RightOperand < ProfileElement
|
168
|
+
# ex:myRightOperand a odrl:RightOperand .
|
169
|
+
def build(repo:)
|
170
|
+
ODRL::Profile::Builder.triplify(uri, RDF.type, ODRLV.RightOperand, repo)
|
171
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.label, label, repo)
|
172
|
+
ODRL::Profile::Builder.triplify(uri, SKOS.defintion, definition, repo)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
class Relation < ProfileElement
|
177
|
+
# ex:myOperator a odrl:Operator .
|
178
|
+
def build(repo:)
|
179
|
+
ODRL::Profile::Builder.triplify(uri, RDF.type, ODRLV.Operator, repo)
|
180
|
+
ODRL::Profile::Builder.triplify(uri, RDFS.label, label, repo)
|
181
|
+
ODRL::Profile::Builder.triplify(uri, SKOS.defintion, definition, repo)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
data/lib/odrl/ruby.rb
CHANGED
@@ -1,27 +1,26 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
4
|
-
#RDF = RDF::Vocabulary.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#")
|
1
|
+
require "linkeddata"
|
2
|
+
require "rdf/raptor"
|
5
3
|
|
4
|
+
# RDF = RDF::Vocabulary.new("http://www.w3.org/1999/02/22-rdf-syntax-ns#")
|
6
5
|
|
7
6
|
RDFS = RDF::Vocabulary.new("http://www.w3.org/2000/01/rdf-schema#")
|
8
7
|
DCAT = RDF::Vocabulary.new("http://www.w3.org/ns/dcat#")
|
9
8
|
DC = RDF::Vocabulary.new("http://purl.org/dc/elements/1.1/")
|
10
9
|
DCT = RDF::Vocabulary.new("http://purl.org/dc/terms/")
|
11
10
|
FUND = RDF::Vocabulary.new("http://vocab.ox.ac.uk/projectfunding#")
|
12
|
-
SKOS =
|
13
|
-
ODRLV =
|
11
|
+
SKOS = RDF::Vocabulary.new("http://www.w3.org/2004/02/skos/core#")
|
12
|
+
ODRLV = RDF::Vocabulary.new("http://www.w3.org/ns/odrl/2/")
|
14
13
|
OBO = RDF::Vocabulary.new("http://purl.obolibrary.org/obo/")
|
15
14
|
XSD = RDF::Vocabulary.new("http://www.w3.org/2001/XMLSchema#")
|
16
15
|
SCHEMA = RDF::Vocabulary.new("https://schema.org/")
|
17
16
|
|
18
|
-
require_relative "
|
19
|
-
require_relative "
|
20
|
-
require_relative "
|
21
|
-
require_relative "
|
22
|
-
require_relative "
|
23
|
-
require_relative "
|
24
|
-
require_relative "
|
17
|
+
require_relative "base"
|
18
|
+
require_relative "action"
|
19
|
+
require_relative "asset"
|
20
|
+
require_relative "constraint"
|
21
|
+
require_relative "party"
|
22
|
+
require_relative "policy"
|
23
|
+
require_relative "rule"
|
25
24
|
|
26
25
|
module ODRL
|
27
26
|
end
|