openlogic-rdf 0.3.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 (80) hide show
  1. data/AUTHORS +3 -0
  2. data/CREDITS +9 -0
  3. data/README +361 -0
  4. data/UNLICENSE +24 -0
  5. data/VERSION +1 -0
  6. data/bin/rdf +18 -0
  7. data/etc/doap.nt +62 -0
  8. data/lib/df.rb +1 -0
  9. data/lib/rdf/cli.rb +200 -0
  10. data/lib/rdf/format.rb +383 -0
  11. data/lib/rdf/mixin/countable.rb +39 -0
  12. data/lib/rdf/mixin/durable.rb +31 -0
  13. data/lib/rdf/mixin/enumerable.rb +637 -0
  14. data/lib/rdf/mixin/indexable.rb +26 -0
  15. data/lib/rdf/mixin/inferable.rb +5 -0
  16. data/lib/rdf/mixin/mutable.rb +191 -0
  17. data/lib/rdf/mixin/queryable.rb +265 -0
  18. data/lib/rdf/mixin/readable.rb +15 -0
  19. data/lib/rdf/mixin/type_check.rb +21 -0
  20. data/lib/rdf/mixin/writable.rb +152 -0
  21. data/lib/rdf/model/graph.rb +263 -0
  22. data/lib/rdf/model/list.rb +731 -0
  23. data/lib/rdf/model/literal/boolean.rb +121 -0
  24. data/lib/rdf/model/literal/date.rb +73 -0
  25. data/lib/rdf/model/literal/datetime.rb +72 -0
  26. data/lib/rdf/model/literal/decimal.rb +86 -0
  27. data/lib/rdf/model/literal/double.rb +189 -0
  28. data/lib/rdf/model/literal/integer.rb +126 -0
  29. data/lib/rdf/model/literal/numeric.rb +184 -0
  30. data/lib/rdf/model/literal/time.rb +87 -0
  31. data/lib/rdf/model/literal/token.rb +47 -0
  32. data/lib/rdf/model/literal/xml.rb +39 -0
  33. data/lib/rdf/model/literal.rb +373 -0
  34. data/lib/rdf/model/node.rb +156 -0
  35. data/lib/rdf/model/resource.rb +28 -0
  36. data/lib/rdf/model/statement.rb +296 -0
  37. data/lib/rdf/model/term.rb +77 -0
  38. data/lib/rdf/model/uri.rb +570 -0
  39. data/lib/rdf/model/value.rb +133 -0
  40. data/lib/rdf/nquads.rb +152 -0
  41. data/lib/rdf/ntriples/format.rb +48 -0
  42. data/lib/rdf/ntriples/reader.rb +239 -0
  43. data/lib/rdf/ntriples/writer.rb +219 -0
  44. data/lib/rdf/ntriples.rb +104 -0
  45. data/lib/rdf/query/pattern.rb +329 -0
  46. data/lib/rdf/query/solution.rb +252 -0
  47. data/lib/rdf/query/solutions.rb +237 -0
  48. data/lib/rdf/query/variable.rb +221 -0
  49. data/lib/rdf/query.rb +404 -0
  50. data/lib/rdf/reader.rb +511 -0
  51. data/lib/rdf/repository.rb +389 -0
  52. data/lib/rdf/transaction.rb +161 -0
  53. data/lib/rdf/util/aliasing.rb +63 -0
  54. data/lib/rdf/util/cache.rb +139 -0
  55. data/lib/rdf/util/file.rb +38 -0
  56. data/lib/rdf/util/uuid.rb +36 -0
  57. data/lib/rdf/util.rb +6 -0
  58. data/lib/rdf/version.rb +19 -0
  59. data/lib/rdf/vocab/cc.rb +18 -0
  60. data/lib/rdf/vocab/cert.rb +13 -0
  61. data/lib/rdf/vocab/dc.rb +63 -0
  62. data/lib/rdf/vocab/dc11.rb +23 -0
  63. data/lib/rdf/vocab/doap.rb +45 -0
  64. data/lib/rdf/vocab/exif.rb +168 -0
  65. data/lib/rdf/vocab/foaf.rb +69 -0
  66. data/lib/rdf/vocab/geo.rb +13 -0
  67. data/lib/rdf/vocab/http.rb +26 -0
  68. data/lib/rdf/vocab/owl.rb +59 -0
  69. data/lib/rdf/vocab/rdfs.rb +17 -0
  70. data/lib/rdf/vocab/rsa.rb +12 -0
  71. data/lib/rdf/vocab/rss.rb +14 -0
  72. data/lib/rdf/vocab/sioc.rb +93 -0
  73. data/lib/rdf/vocab/skos.rb +36 -0
  74. data/lib/rdf/vocab/wot.rb +21 -0
  75. data/lib/rdf/vocab/xhtml.rb +9 -0
  76. data/lib/rdf/vocab/xsd.rb +58 -0
  77. data/lib/rdf/vocab.rb +215 -0
  78. data/lib/rdf/writer.rb +475 -0
  79. data/lib/rdf.rb +192 -0
  80. metadata +173 -0
@@ -0,0 +1,59 @@
1
+ module RDF
2
+ ##
3
+ # Web Ontology Language (OWL) vocabulary.
4
+ #
5
+ # @see http://www.w3.org/TR/owl-overview/
6
+ class OWL < Vocabulary("http://www.w3.org/2002/07/owl#")
7
+ property :allValuesFrom
8
+ property :annotatedProperty
9
+ property :annotatedSource
10
+ property :annotatedTarget
11
+ property :assertionProperty
12
+ property :backwardCompatibleWith
13
+ property :bottomDataProperty
14
+ property :bottomObjectProperty
15
+ property :cardinality
16
+ property :complementOf
17
+ property :datatypeComplementOf
18
+ property :deprecated
19
+ property :differentFrom
20
+ property :disjointUnionOf
21
+ property :disjointWith
22
+ property :distinctMembers
23
+ property :equivalentClass
24
+ property :equivalentProperty
25
+ property :hasKey
26
+ property :hasSelf
27
+ property :hasValue
28
+ property :imports
29
+ property :incompatibleWith
30
+ property :intersectionOf
31
+ property :inverseOf
32
+ property :maxCardinality
33
+ property :maxQualifiedCardinality
34
+ property :members
35
+ property :minCardinality
36
+ property :minQualifiedCardinality
37
+ property :onClass
38
+ property :onDataRange
39
+ property :onDatatype
40
+ property :onProperties
41
+ property :onProperty
42
+ property :oneOf
43
+ property :priorVersion
44
+ property :propertyChainAxiom
45
+ property :propertyDisjointWith
46
+ property :qualifiedCardinality
47
+ property :sameAs
48
+ property :someValuesFrom
49
+ property :sourceIndividual
50
+ property :targetIndividual
51
+ property :targetValue
52
+ property :topDataProperty
53
+ property :topObjectProperty
54
+ property :unionOf
55
+ property :versionIRI
56
+ property :versionInfo
57
+ property :withRestrictions
58
+ end
59
+ end
@@ -0,0 +1,17 @@
1
+ module RDF
2
+ ##
3
+ # RDF Schema (RDFS) vocabulary.
4
+ #
5
+ # @see http://www.w3.org/TR/rdf-schema/
6
+ class RDFS < Vocabulary("http://www.w3.org/2000/01/rdf-schema#")
7
+ property :comment
8
+ property :domain
9
+ property :isDefinedBy
10
+ property :label
11
+ property :member
12
+ property :range
13
+ property :seeAlso
14
+ property :subClassOf
15
+ property :subPropertyOf
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ module RDF
2
+ ##
3
+ # W3 RSA Keys (RSA) vocabulary.
4
+ #
5
+ # @see http://www.w3.org/ns/auth/rsa#
6
+ # @since 0.2.0
7
+ class RSA < Vocabulary("http://www.w3.org/ns/auth/rsa#")
8
+ property :modulus
9
+ property :private_exponent
10
+ property :public_exponent
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ module RDF
2
+ ##
3
+ # RDF Site Summary (RSS) vocabulary.
4
+ #
5
+ # @see http://web.resource.org/rss/1.0/
6
+ class RSS < Vocabulary("http://purl.org/rss/1.0/")
7
+ property :description
8
+ property :items
9
+ property :link
10
+ property :name
11
+ property :title
12
+ property :url
13
+ end
14
+ end
@@ -0,0 +1,93 @@
1
+ module RDF
2
+ ##
3
+ # Semantically-Interlinked Online Communities (SIOC) vocabulary.
4
+ #
5
+ # @see http://rdfs.org/sioc/spec/
6
+ class SIOC < Vocabulary("http://rdfs.org/sioc/ns#")
7
+ property :about
8
+ property :account_of
9
+ property :administrator_of
10
+ property :attachment
11
+ property :avatar
12
+ property :container_of
13
+ property :content
14
+ property :content_encoded # @deprecated
15
+ property :created_at # @deprecated
16
+ property :creator_of
17
+ property :description # @deprecated
18
+ property :earlier_version
19
+ property :email
20
+ property :email_sha1
21
+ property :feed
22
+ property :first_name # @deprecated
23
+ property :follows
24
+ property :function_of
25
+ property :group_of # @deprecated
26
+ property :has_administrator
27
+ property :has_container
28
+ property :has_creator
29
+ property :has_discussion
30
+ property :has_function
31
+ property :has_group # @deprecated
32
+ property :has_host
33
+ property :has_member
34
+ property :has_moderator
35
+ property :has_modifier
36
+ property :has_owner
37
+ property :has_parent
38
+ property :has_part # @deprecated
39
+ property :has_reply
40
+ property :has_scope
41
+ property :has_space
42
+ property :has_subscriber
43
+ property :has_usergroup
44
+ property :host_of
45
+ property :id
46
+ property :ip_address
47
+ property :last_activity_date
48
+ property :last_item_date
49
+ property :last_name # @deprecated
50
+ property :last_reply_date
51
+ property :later_version
52
+ property :latest_version
53
+ property :link
54
+ property :links_to
55
+ property :member_of
56
+ property :moderator_of
57
+ property :modified_at # @deprecated
58
+ property :modifier_of
59
+ property :name
60
+ property :next_by_date
61
+ property :next_version
62
+ property :note
63
+ property :num_authors
64
+ property :num_items
65
+ property :num_replies
66
+ property :num_threads
67
+ property :num_views
68
+ property :owner_of
69
+ property :parent_of
70
+ property :part_of # @deprecated
71
+ property :previous_by_date
72
+ property :previous_version
73
+ property :reference # @deprecated
74
+ property :related_to
75
+ property :reply_of
76
+ property :scope_of
77
+ property :sibling
78
+ property :space_of
79
+ property :subject # @deprecated
80
+ property :subscriber_of
81
+ property :title # @deprecated
82
+ property :topic
83
+ property :usergroup_of
84
+
85
+ ##
86
+ # Semantically-Interlinked Online Communities (SIOC) types vocabulary.
87
+ #
88
+ # @see http://rdfs.org/sioc/spec/#sec-modules
89
+ class Types < RDF::Vocabulary("http://rdfs.org/sioc/types#")
90
+ # TODO
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,36 @@
1
+ module RDF
2
+ ##
3
+ # Simple Knowledge Organization System (SKOS) vocabulary.
4
+ #
5
+ # @see http://www.w3.org/TR/skos-reference/skos.html
6
+ class SKOS < Vocabulary("http://www.w3.org/2004/02/skos/core#")
7
+ property :altLabel
8
+ property :broadMatch
9
+ property :broader
10
+ property :broaderTransitive
11
+ property :changeNote
12
+ property :closeMatch
13
+ property :definition
14
+ property :editorialNote
15
+ property :exactMatch
16
+ property :example
17
+ property :hasTopConcept
18
+ property :hiddenLabel
19
+ property :historyNote
20
+ property :inScheme
21
+ property :mappingRelation
22
+ property :member
23
+ property :memberList
24
+ property :narrowMatch
25
+ property :narrower
26
+ property :narrowerTransitive
27
+ property :notation
28
+ property :note
29
+ property :prefLabel
30
+ property :related
31
+ property :relatedMatch
32
+ property :scopeNote
33
+ property :semanticRelation
34
+ property :topConceptOf
35
+ end
36
+ end
@@ -0,0 +1,21 @@
1
+ module RDF
2
+ ##
3
+ # Web of Trust (WOT) vocabulary.
4
+ #
5
+ # @see http://xmlns.com/wot/0.1/
6
+ class WOT < Vocabulary("http://xmlns.com/wot/0.1/")
7
+ property :assurance
8
+ property :encryptedTo
9
+ property :encrypter
10
+ property :fingerprint
11
+ property :hasKey
12
+ property :hex_id
13
+ property :identity
14
+ property :length
15
+ property :pubkeyAddress
16
+ property :sigdate
17
+ property :signed
18
+ property :signer
19
+ property :sigtime
20
+ end
21
+ end
@@ -0,0 +1,9 @@
1
+ module RDF
2
+ ##
3
+ # Extensible HyperText Markup Language (XHTML) vocabulary.
4
+ #
5
+ # @see http://www.w3.org/1999/xhtml/
6
+ class XHTML < Vocabulary("http://www.w3.org/1999/xhtml#")
7
+ # TODO
8
+ end
9
+ end
@@ -0,0 +1,58 @@
1
+ module RDF
2
+ ##
3
+ # XML Schema (XSD) vocabulary.
4
+ #
5
+ # @see http://www.w3.org/XML/Schema
6
+ # @see http://www.w3.org/TR/xmlschema-2/#built-in-datatypes
7
+ class XSD < Vocabulary("http://www.w3.org/2001/XMLSchema#")
8
+ # XML Schema built-in primitive types
9
+ # @see http://www.w3.org/TR/xmlschema-2/#built-in-primitive-datatypes
10
+ property :NOTATION
11
+ property :QName
12
+ property :anyURI
13
+ property :base64Binary
14
+ property :boolean
15
+ property :date
16
+ property :dateTime
17
+ property :decimal
18
+ property :double
19
+ property :duration
20
+ property :float
21
+ property :gDay
22
+ property :gMonth
23
+ property :gMonthDay
24
+ property :gYear
25
+ property :gYearMonth
26
+ property :hexBinary
27
+ property :string
28
+ property :time
29
+
30
+ # XML Schema built-in derived types
31
+ # @see http://www.w3.org/TR/xmlschema-2/#built-in-derived
32
+ property :ENTITIES
33
+ property :ENTITY
34
+ property :ID
35
+ property :IDREF
36
+ property :IDREFS
37
+ property :NCName
38
+ property :NMTOKEN
39
+ property :NMTOKENS
40
+ property :Name
41
+ property :byte
42
+ property :int
43
+ property :integer
44
+ property :language
45
+ property :long
46
+ property :negativeInteger
47
+ property :nonNegativeInteger
48
+ property :nonPositiveInteger
49
+ property :normalizedString
50
+ property :positiveInteger
51
+ property :short
52
+ property :token
53
+ property :unsignedByte
54
+ property :unsignedInt
55
+ property :unsignedLong
56
+ property :unsignedShort
57
+ end
58
+ end
data/lib/rdf/vocab.rb ADDED
@@ -0,0 +1,215 @@
1
+ module RDF
2
+ ##
3
+ # A {Vocabulary} represents an RDFS or OWL vocabulary.
4
+ #
5
+ # ### Vocabularies:
6
+ #
7
+ # The following vocabularies are pre-defined for your convenience:
8
+ #
9
+ # * {RDF} - Resource Description Framework (RDF)
10
+ # * {RDF::CC} - Creative Commons (CC)
11
+ # * {RDF::CERT} - W3 Authentication Certificate (CERT)
12
+ # * {RDF::DC} - Dublin Core (DC)
13
+ # * {RDF::DC11} - Dublin Core 1.1 (DC11) _deprecated_
14
+ # * {RDF::DOAP} - Description of a Project (DOAP)
15
+ # * {RDF::EXIF} - Exchangeable Image File Format (EXIF)
16
+ # * {RDF::FOAF} - Friend of a Friend (FOAF)
17
+ # * {RDF::GEO} - WGS84 Geo Positioning (GEO)
18
+ # * {RDF::HTTP} - Hypertext Transfer Protocol (HTTP)
19
+ # * {RDF::OWL} - Web Ontology Language (OWL)
20
+ # * {RDF::RDFS} - RDF Schema (RDFS)
21
+ # * {RDF::RSA} - W3 RSA Keys (RSA)
22
+ # * {RDF::RSS} - RDF Site Summary (RSS)
23
+ # * {RDF::SIOC} - Semantically-Interlinked Online Communities (SIOC)
24
+ # * {RDF::SKOS} - Simple Knowledge Organization System (SKOS)
25
+ # * {RDF::WOT} - Web of Trust (WOT)
26
+ # * {RDF::XHTML} - Extensible HyperText Markup Language (XHTML)
27
+ # * {RDF::XSD} - XML Schema (XSD)
28
+ #
29
+ # @example Using pre-defined RDF vocabularies
30
+ # include RDF
31
+ #
32
+ # DC.title #=> RDF::URI("http://purl.org/dc/terms/title")
33
+ # FOAF.knows #=> RDF::URI("http://xmlns.com/foaf/0.1/knows")
34
+ # RDF.type #=> RDF::URI("http://www.w3.org/1999/02/22-rdf-syntax-ns#type")
35
+ # RDFS.seeAlso #=> RDF::URI("http://www.w3.org/2000/01/rdf-schema#seeAlso")
36
+ # RSS.title #=> RDF::URI("http://purl.org/rss/1.0/title")
37
+ # OWL.sameAs #=> RDF::URI("http://www.w3.org/2002/07/owl#sameAs")
38
+ # XSD.dateTime #=> RDF::URI("http://www.w3.org/2001/XMLSchema#dateTime")
39
+ #
40
+ # @example Using ad-hoc RDF vocabularies
41
+ # foaf = RDF::Vocabulary.new("http://xmlns.com/foaf/0.1/")
42
+ # foaf.knows #=> RDF::URI("http://xmlns.com/foaf/0.1/knows")
43
+ # foaf[:name] #=> RDF::URI("http://xmlns.com/foaf/0.1/name")
44
+ # foaf['mbox'] #=> RDF::URI("http://xmlns.com/foaf/0.1/mbox")
45
+ #
46
+ # @see http://www.w3.org/TR/curie/
47
+ # @see http://en.wikipedia.org/wiki/QName
48
+ class Vocabulary
49
+ extend ::Enumerable
50
+
51
+ ##
52
+ # Enumerates known RDF vocabulary classes.
53
+ #
54
+ # @yield [klass]
55
+ # @yieldparam [Class] klass
56
+ # @return [Enumerator]
57
+ def self.each(&block)
58
+ if self.equal?(Vocabulary)
59
+ # This is needed since all vocabulary classes are defined using
60
+ # Ruby's autoloading facility, meaning that `@@subclasses` will be
61
+ # empty until each subclass has been touched or require'd.
62
+ RDF::VOCABS.each { |v| require "rdf/vocab/#{v}" unless v == :rdf }
63
+ @@subclasses.each(&block)
64
+ else
65
+ # TODO: should enumerate vocabulary-specific defined properties.
66
+ end
67
+ end
68
+
69
+ ##
70
+ # Defines a vocabulary term called `property`.
71
+ #
72
+ # @param [Symbol]
73
+ # @return [void]
74
+ def self.property(property)
75
+ metaclass = class << self; self; end
76
+ metaclass.send(:define_method, property) { self[property] } # class method
77
+ end
78
+
79
+ ##
80
+ # Returns the URI for the term `property` in this vocabulary.
81
+ #
82
+ # @param [#to_s] property
83
+ # @return [RDF::URI]
84
+ def self.[](property)
85
+ RDF::URI.intern([to_s, property.to_s].join(''))
86
+ end
87
+
88
+ ##
89
+ # Returns the base URI for this vocabulary class.
90
+ #
91
+ # @return [RDF::URI]
92
+ def self.to_uri
93
+ RDF::URI.intern(to_s)
94
+ end
95
+
96
+ ##
97
+ # Returns a string representation of this vocabulary class.
98
+ #
99
+ # @return [String]
100
+ def self.to_s
101
+ @@uris.has_key?(self) ? @@uris[self].to_s : super
102
+ end
103
+
104
+ ##
105
+ # Returns a developer-friendly representation of this vocabulary class.
106
+ #
107
+ # @return [String]
108
+ def self.inspect
109
+ if self == Vocabulary
110
+ self.to_s
111
+ else
112
+ sprintf("%s(%s)", superclass.to_s, to_s)
113
+ end
114
+ end
115
+
116
+ class << self
117
+ # Preserve the class name so that it can be obtained even for
118
+ # vocabularies that define a `name` property:
119
+ alias_method :__name__, :name
120
+ end
121
+
122
+ ##
123
+ # Returns a suggested CURIE/QName prefix for this vocabulary class.
124
+ #
125
+ # @return [Symbol]
126
+ # @since 0.3.0
127
+ def self.__prefix__
128
+ self.__name__.split('::').last.downcase.to_sym
129
+ end
130
+
131
+ # Undefine all superfluous instance methods:
132
+ undef_method(*(instance_methods.map(&:to_sym) - [:__id__, :__send__, :__class__, :__eval__, :object_id, :instance_eval, :inspect, :class, :is_a?]))
133
+
134
+ ##
135
+ # @param [RDF::URI, String, #to_s]
136
+ def initialize(uri)
137
+ @uri = case uri
138
+ when RDF::URI then uri.to_s
139
+ else RDF::URI.parse(uri.to_s) ? uri.to_s : nil
140
+ end
141
+ end
142
+
143
+ ##
144
+ # Returns the URI for the term `property` in this vocabulary.
145
+ #
146
+ # @param [#to_s] property
147
+ # @return [URI]
148
+ def [](property)
149
+ RDF::URI.intern([to_s, property.to_s].join(''))
150
+ end
151
+
152
+ ##
153
+ # Returns the base URI for this vocabulary.
154
+ #
155
+ # @return [URI]
156
+ def to_uri
157
+ RDF::URI.intern(to_s)
158
+ end
159
+
160
+ ##
161
+ # Returns a string representation of this vocabulary.
162
+ #
163
+ # @return [String]
164
+ def to_s
165
+ @uri.to_s
166
+ end
167
+
168
+ ##
169
+ # Returns a developer-friendly representation of this vocabulary.
170
+ #
171
+ # @return [String]
172
+ def inspect
173
+ sprintf("#<%s:%#0x(%s)>", self.class.name, __id__, to_s)
174
+ end
175
+
176
+ protected
177
+
178
+ def self.create(uri) # @private
179
+ @@uri = uri
180
+ self
181
+ end
182
+
183
+ def self.inherited(subclass) # @private
184
+ @@subclasses << subclass
185
+ unless @@uri.nil?
186
+ subclass.send(:private_class_method, :new)
187
+ @@uris[subclass] = @@uri
188
+ @@uri = nil
189
+ end
190
+ super
191
+ end
192
+
193
+ def self.method_missing(property, *args, &block)
194
+ if args.empty? && @@uris.has_key?(self)
195
+ self[property]
196
+ else
197
+ super
198
+ end
199
+ end
200
+
201
+ def method_missing(property, *args, &block)
202
+ if args.empty?
203
+ self[property]
204
+ else
205
+ raise ArgumentError.new("wrong number of arguments (#{args.size} for 0)")
206
+ end
207
+ end
208
+
209
+ private
210
+
211
+ @@subclasses = [::RDF] # @private
212
+ @@uris = {} # @private
213
+ @@uri = nil # @private
214
+ end # Vocabulary
215
+ end # RDF