rdf 0.0.1 → 0.0.2
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.
- data/README +33 -1
- data/VERSION +1 -1
- data/lib/rdf.rb +37 -1
- data/lib/rdf/statement.rb +52 -0
- data/lib/rdf/uri.rb +5 -0
- data/lib/rdf/version.rb +1 -1
- data/lib/rdf/vocabulary.rb +81 -0
- data/lib/rdf/vocabulary/cc.rb +7 -0
- data/lib/rdf/vocabulary/dc.rb +7 -0
- data/lib/rdf/vocabulary/doap.rb +7 -0
- data/lib/rdf/vocabulary/exif.rb +7 -0
- data/lib/rdf/vocabulary/foaf.rb +7 -0
- data/lib/rdf/vocabulary/http.rb +7 -0
- data/lib/rdf/vocabulary/owl.rb +7 -0
- data/lib/rdf/vocabulary/rdf.rb +7 -0
- data/lib/rdf/vocabulary/rdfs.rb +7 -0
- data/lib/rdf/vocabulary/rss.rb +7 -0
- data/lib/rdf/vocabulary/sioc.rb +7 -0
- data/lib/rdf/vocabulary/skos.rb +7 -0
- data/lib/rdf/vocabulary/wot.rb +7 -0
- data/lib/rdf/vocabulary/xhtml.rb +7 -0
- data/lib/rdf/vocabulary/xsd.rb +7 -0
- metadata +31 -3
data/README
CHANGED
@@ -1,13 +1,45 @@
|
|
1
1
|
RDF.rb: RDF API for Ruby
|
2
2
|
========================
|
3
3
|
|
4
|
-
This is
|
4
|
+
This is a pure-Ruby library for working with Resource Description Framework
|
5
|
+
(RDF) data.
|
5
6
|
|
6
7
|
### About the Resource Description Framework (RDF)
|
7
8
|
|
8
9
|
* <http://www.w3.org/RDF/>
|
9
10
|
* <http://en.wikipedia.org/wiki/Resource_Description_Framework>
|
10
11
|
|
12
|
+
Examples
|
13
|
+
--------
|
14
|
+
|
15
|
+
require 'rdf'
|
16
|
+
|
17
|
+
### Creating an RDF statement
|
18
|
+
|
19
|
+
s = RDF::URI.parse("http://gemcutter.org/gems/rdf")
|
20
|
+
p = RDF::DC.creator
|
21
|
+
o = RDF::URI.parse("http://ar.to/#self")
|
22
|
+
|
23
|
+
stmt = RDF::Statement.new(s, p, o)
|
24
|
+
|
25
|
+
### Using pre-defined RDF vocabularies
|
26
|
+
|
27
|
+
include RDF
|
28
|
+
|
29
|
+
DC.title #=> RDF::URI("http://purl.org/dc/terms/title")
|
30
|
+
FOAF.knows #=> RDF::URI("http://xmlns.com/foaf/0.1/knows")
|
31
|
+
RDFS.seeAlso #=> RDF::URI("http://www.w3.org/2000/01/rdf-schema#seeAlso")
|
32
|
+
RSS.title #=> RDF::URI("http://purl.org/rss/1.0/title")
|
33
|
+
OWL.sameAs #=> RDF::URI("http://www.w3.org/2002/07/owl#sameAs")
|
34
|
+
XSD.dateTime #=> RDF::URI("http://www.w3.org/2001/XMLSchema#dateTime")
|
35
|
+
|
36
|
+
### Using ad-hoc RDF vocabularies
|
37
|
+
|
38
|
+
foaf = RDF::Vocabulary.new("http://xmlns.com/foaf/0.1/")
|
39
|
+
foaf.knows #=> RDF::URI("http://xmlns.com/foaf/0.1/knows")
|
40
|
+
foaf[:name] #=> RDF::URI("http://xmlns.com/foaf/0.1/name")
|
41
|
+
foaf['mbox'] #=> RDF::URI("http://xmlns.com/foaf/0.1/mbox")
|
42
|
+
|
11
43
|
Documentation
|
12
44
|
-------------
|
13
45
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/rdf.rb
CHANGED
@@ -1,5 +1,41 @@
|
|
1
1
|
require 'rdf/version'
|
2
2
|
|
3
3
|
module RDF
|
4
|
-
|
4
|
+
autoload :Statement, 'rdf/statement'
|
5
|
+
autoload :URI, 'rdf/uri'
|
6
|
+
autoload :Vocabulary, 'rdf/vocabulary'
|
7
|
+
|
8
|
+
autoload :CC, 'rdf/vocabulary/cc'
|
9
|
+
autoload :DC, 'rdf/vocabulary/dc'
|
10
|
+
autoload :DOAP, 'rdf/vocabulary/doap'
|
11
|
+
autoload :EXIF, 'rdf/vocabulary/exif'
|
12
|
+
autoload :FOAF, 'rdf/vocabulary/foaf'
|
13
|
+
autoload :HTTP, 'rdf/vocabulary/http'
|
14
|
+
autoload :OWL, 'rdf/vocabulary/owl'
|
15
|
+
autoload :RDFS, 'rdf/vocabulary/rdfs'
|
16
|
+
autoload :RSS, 'rdf/vocabulary/rss'
|
17
|
+
autoload :SIOC, 'rdf/vocabulary/sioc'
|
18
|
+
autoload :SKOS, 'rdf/vocabulary/skos'
|
19
|
+
autoload :WOT, 'rdf/vocabulary/wot'
|
20
|
+
autoload :XHTML, 'rdf/vocabulary/xhtml'
|
21
|
+
autoload :XSD, 'rdf/vocabulary/xsd'
|
22
|
+
|
23
|
+
def self.Vocabulary(uri)
|
24
|
+
Vocabulary.create(uri)
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.[](property)
|
28
|
+
RDF::URI.parse([to_s, property.to_s].join)
|
29
|
+
end
|
30
|
+
|
31
|
+
def self.method_missing(property, *args, &block)
|
32
|
+
if args.empty?
|
33
|
+
self[property]
|
34
|
+
else
|
35
|
+
super
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.to_uri() RDF::URI.parse(to_s) end
|
40
|
+
def self.to_s() "http://www.w3.org/1999/02/22-rdf-syntax-ns#" end
|
5
41
|
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module RDF
|
2
|
+
##
|
3
|
+
# An RDF statement.
|
4
|
+
class Statement
|
5
|
+
attr_accessor :context
|
6
|
+
attr_accessor :subject
|
7
|
+
attr_accessor :predicate
|
8
|
+
attr_accessor :object
|
9
|
+
|
10
|
+
def initialize(s, p, o, options = {})
|
11
|
+
@subject, @predicate, @object = s, p, o
|
12
|
+
@context = options[:context] if options[:context]
|
13
|
+
end
|
14
|
+
|
15
|
+
def subject?() !!subject end
|
16
|
+
def predicate?() !!predicate end
|
17
|
+
def object?() !!object end
|
18
|
+
def context?() !!context end
|
19
|
+
def asserted?() !quoted? end
|
20
|
+
def quoted?() false end
|
21
|
+
|
22
|
+
def ==(other)
|
23
|
+
to_a == other.to_a
|
24
|
+
end
|
25
|
+
|
26
|
+
def [](index)
|
27
|
+
to_a[index]
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_a
|
31
|
+
[subject, predicate, object]
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_hash
|
35
|
+
{ subject => { predicate => object } }
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_s
|
39
|
+
require 'stringio' unless defined?(StringIO)
|
40
|
+
StringIO.open do |buffer|
|
41
|
+
buffer << "<#{subject}> "
|
42
|
+
buffer << "<#{predicate}> "
|
43
|
+
buffer << "<#{object}> ."
|
44
|
+
buffer.string
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def inspect
|
49
|
+
sprintf("#<%s:%#0x(%s)>", self.class.name, object_id, to_s)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/rdf/uri.rb
ADDED
data/lib/rdf/version.rb
CHANGED
@@ -0,0 +1,81 @@
|
|
1
|
+
module RDF
|
2
|
+
##
|
3
|
+
# An RDF vocabulary.
|
4
|
+
class Vocabulary
|
5
|
+
|
6
|
+
def self.inspect
|
7
|
+
if self == Vocabulary
|
8
|
+
self.to_s
|
9
|
+
else
|
10
|
+
sprintf("%s(%s)", superclass.to_s, to_s)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.to_uri() RDF::URI.parse(to_s) end
|
15
|
+
def self.to_s() @@uris.has_key?(self) ? @@uris[self].to_s : super end
|
16
|
+
|
17
|
+
def self.[](property)
|
18
|
+
RDF::URI.parse([to_s, property.to_s].join(''))
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.property(symbol) end # TODO
|
22
|
+
|
23
|
+
def initialize(uri)
|
24
|
+
case uri
|
25
|
+
when RDF::URI then @uri = uri.to_s
|
26
|
+
else @uri = RDF::URI.parse(uri.to_s) ? uri.to_s : nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def inspect
|
31
|
+
sprintf("#<%s:%#0x(%s)>", self.class.name, object_id, to_s)
|
32
|
+
end
|
33
|
+
|
34
|
+
def to_uri() RDF::URI.parse(to_s) end
|
35
|
+
def to_s() @uri.to_s end
|
36
|
+
|
37
|
+
def [](property)
|
38
|
+
RDF::URI.parse([to_s, property.to_s].join(''))
|
39
|
+
end
|
40
|
+
|
41
|
+
protected
|
42
|
+
@@uris = {}
|
43
|
+
@@uri = nil
|
44
|
+
|
45
|
+
# @private
|
46
|
+
def self.create(uri)
|
47
|
+
@@uri = uri
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
# @private
|
52
|
+
def self.inherited(subclass)
|
53
|
+
unless @@uri.nil?
|
54
|
+
subclass.send(:private_class_method, :new)
|
55
|
+
@@uris[subclass] = @@uri
|
56
|
+
@@uri = nil
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def self.method_missing(property, *args, &block)
|
61
|
+
if args.empty? && @@uris.has_key?(self)
|
62
|
+
self[property]
|
63
|
+
else
|
64
|
+
super
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def method_missing(property, *args, &block)
|
69
|
+
if args.empty?
|
70
|
+
self[property]
|
71
|
+
else
|
72
|
+
raise ArgumentError.new("wrong number of arguments (#{args.size} for 0)")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.Vocabulary(uri)
|
79
|
+
Vocabulary.create(uri)
|
80
|
+
end
|
81
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arto Bendiken
|
@@ -9,9 +9,19 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-12-
|
12
|
+
date: 2009-12-21 00:00:00 +01:00
|
13
13
|
default_executable: rdf
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 1.2.9
|
24
|
+
version:
|
15
25
|
- !ruby/object:Gem::Dependency
|
16
26
|
name: addressable
|
17
27
|
type: :runtime
|
@@ -37,8 +47,26 @@ files:
|
|
37
47
|
- UNLICENSE
|
38
48
|
- VERSION
|
39
49
|
- bin/rdf
|
40
|
-
- lib/rdf.rb
|
50
|
+
- lib/rdf/statement.rb
|
51
|
+
- lib/rdf/uri.rb
|
41
52
|
- lib/rdf/version.rb
|
53
|
+
- lib/rdf/vocabulary/cc.rb
|
54
|
+
- lib/rdf/vocabulary/dc.rb
|
55
|
+
- lib/rdf/vocabulary/doap.rb
|
56
|
+
- lib/rdf/vocabulary/exif.rb
|
57
|
+
- lib/rdf/vocabulary/foaf.rb
|
58
|
+
- lib/rdf/vocabulary/http.rb
|
59
|
+
- lib/rdf/vocabulary/owl.rb
|
60
|
+
- lib/rdf/vocabulary/rdf.rb
|
61
|
+
- lib/rdf/vocabulary/rdfs.rb
|
62
|
+
- lib/rdf/vocabulary/rss.rb
|
63
|
+
- lib/rdf/vocabulary/sioc.rb
|
64
|
+
- lib/rdf/vocabulary/skos.rb
|
65
|
+
- lib/rdf/vocabulary/wot.rb
|
66
|
+
- lib/rdf/vocabulary/xhtml.rb
|
67
|
+
- lib/rdf/vocabulary/xsd.rb
|
68
|
+
- lib/rdf/vocabulary.rb
|
69
|
+
- lib/rdf.rb
|
42
70
|
has_rdoc: false
|
43
71
|
homepage: http://rdfrb.rubyforge.org/
|
44
72
|
licenses:
|