openlogic-rdf 0.3.6

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