rubyrdf 0.0.1

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 (53) hide show
  1. data/History.txt +4 -0
  2. data/License.txt +24 -0
  3. data/Manifest.txt +52 -0
  4. data/README.txt +79 -0
  5. data/Rakefile +4 -0
  6. data/config/hoe.rb +70 -0
  7. data/config/requirements.rb +15 -0
  8. data/lib/rdf/blank_node.rb +41 -0
  9. data/lib/rdf/exceptions.rb +26 -0
  10. data/lib/rdf/format/ntriples.rb +493 -0
  11. data/lib/rdf/graph/base.rb +118 -0
  12. data/lib/rdf/graph/memory.rb +146 -0
  13. data/lib/rdf/graph/tests.rb +137 -0
  14. data/lib/rdf/namespace.rb +90 -0
  15. data/lib/rdf/plain_literal_node.rb +36 -0
  16. data/lib/rdf/query/binding.rb +68 -0
  17. data/lib/rdf/query/executer.rb +42 -0
  18. data/lib/rdf/query/result.rb +54 -0
  19. data/lib/rdf/query.rb +54 -0
  20. data/lib/rdf/triple.rb +61 -0
  21. data/lib/rdf/typed_literal_node.rb +39 -0
  22. data/lib/rdf/uri_node.rb +35 -0
  23. data/lib/rdf/version.rb +9 -0
  24. data/lib/rubyrdf.rb +59 -0
  25. data/log/debug.log +0 -0
  26. data/script/console +11 -0
  27. data/script/destroy +14 -0
  28. data/script/generate +14 -0
  29. data/script/txt2html +74 -0
  30. data/setup.rb +1585 -0
  31. data/tasks/deployment.rake +34 -0
  32. data/tasks/environment.rake +7 -0
  33. data/tasks/website.rake +17 -0
  34. data/test/helper.rb +14 -0
  35. data/test/test_blank_node.rb +67 -0
  36. data/test/test_format_ntriples.rb +247 -0
  37. data/test/test_graph_base.rb +71 -0
  38. data/test/test_graph_memory.rb +146 -0
  39. data/test/test_namespace.rb +130 -0
  40. data/test/test_plain_literal_node.rb +83 -0
  41. data/test/test_query.rb +49 -0
  42. data/test/test_query_binding.rb +84 -0
  43. data/test/test_query_result.rb +111 -0
  44. data/test/test_rdf.rb +56 -0
  45. data/test/test_triple.rb +147 -0
  46. data/test/test_typed_literal_node.rb +61 -0
  47. data/test/test_uri_node.rb +45 -0
  48. data/website/index.html +169 -0
  49. data/website/index.txt +92 -0
  50. data/website/javascripts/rounded_corners_lite.inc.js +285 -0
  51. data/website/stylesheets/screen.css +138 -0
  52. data/website/template.html.erb +48 -0
  53. metadata +139 -0
@@ -0,0 +1,39 @@
1
+ module RDF
2
+ # A typed literal node.
3
+ class TypedLiteralNode
4
+ # the lexical form of this TypedLiteralNode.
5
+ attr_reader :lexical_form
6
+ # the datatype uri of this TypedLiteralNode.
7
+ attr_reader :datatype_uri
8
+
9
+ # Creates a new TypedLiteralNode using the specified +lexical_form+ and +datatype_uri+. Raises
10
+ # an ArgumentError if +datatype_uri+ is empty. If +datatype_uri+ is a UriNode, it will
11
+ # automatically convert it to just the URI string.
12
+ def initialize(lexical_form, datatype_uri)
13
+ @lexical_form = lexical_form.to_s
14
+ @datatype_uri = RDF::UriNode?(datatype_uri) ? datatype_uri.uri : datatype_uri.to_s
15
+
16
+ raise ArgumentError, "datatype_uri cannot be empty" if @datatype_uri.empty?
17
+ end
18
+
19
+ # Returns true if +o+ is a TypedLiteralNode with the same +lexical_form+ and +datatype_uri+.
20
+ def ==(o)
21
+ if RDF::TypedLiteralNode?(o)
22
+ lexical_form == o.lexical_form &&
23
+ datatype_uri == o.datatype_uri
24
+ end
25
+ end
26
+
27
+ alias :eql? :==
28
+
29
+ # Returns a hash value for this TypedLiteralNode.
30
+ def hash
31
+ [375836169, lexical_form.hash, datatype_uri.hash].hash
32
+ end
33
+
34
+ # Returns the NTriples representation of this TypedLiteralNode.
35
+ def to_s
36
+ Format::NTriples.export_node(self)
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,35 @@
1
+ module RDF
2
+ # A uri node.
3
+ class UriNode
4
+ # the uri of this node
5
+ attr_reader :uri
6
+
7
+ # Creates a new UriNode using +uri+.
8
+ #
9
+ # Raises
10
+ # ArgumentError:: if +uri+ is empty
11
+ def initialize(uri)
12
+ raise ArgumentError, "uri cannot be empty" if uri.to_s.empty?
13
+ @uri = RDF::UriNode?(uri) ? uri.uri : uri.to_s
14
+ end
15
+
16
+ # Returns true if +o+ is a UriNode that has the same +uri+.
17
+ def ==(o)
18
+ if RDF::UriNode?(o)
19
+ uri == o.uri
20
+ end
21
+ end
22
+
23
+ alias :eql? :==
24
+
25
+ # Returns a hash value for this UriNode.
26
+ def hash
27
+ [-223574050, uri.hash].hash
28
+ end
29
+
30
+ # Returns the NTriples representation of this UriNode.
31
+ def to_s
32
+ Format::NTriples.export_node(self)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,9 @@
1
+ module RDF
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 0
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
data/lib/rubyrdf.rb ADDED
@@ -0,0 +1,59 @@
1
+ gem 'utf8proc', '>=1.0.3'
2
+ require 'utf8proc'
3
+
4
+ gem 'uuidtools', '>=1.0.1'
5
+ require 'uuidtools'
6
+
7
+ module RDF
8
+ # Returns true if +node+ is either a PlainLiteralNode or a TypedLiteralNode
9
+ def self.LiteralNode?(node)
10
+ PlainLiteralNode?(node) ||
11
+ TypedLiteralNode?(node)
12
+ end
13
+
14
+ # Returns true if +node+ is a PlainLiteralNode, or a duck type of PlainLiteralNode.
15
+ def self.PlainLiteralNode?(node)
16
+ node.respond_to?(:lexical_form) && node.respond_to?(:language_tag)
17
+ end
18
+
19
+ # Returns true if +node+ is a TypedLiteralNode, or a duck type of TypedLiteralNode.
20
+ def self.TypedLiteralNode?(node)
21
+ node.respond_to?(:lexical_form) && node.respond_to?(:datatype_uri)
22
+ end
23
+
24
+ # Returns true if +node+ is a UriNode, or a duck type of UriNode.
25
+ def self.UriNode?(node)
26
+ node.respond_to?(:uri)
27
+ end
28
+
29
+ # Returns true if +node+ is a BlankNode, or a duck type of BlankNode.
30
+ def self.BlankNode?(node)
31
+ node.respond_to?(:graph) && node.respond_to?(:name)
32
+ end
33
+
34
+ # Returns true if +node+ is a BlankNode, LiteralNode, or UriNode.
35
+ def self.Node?(node)
36
+ BlankNode?(node) || LiteralNode?(node) || UriNode?(node)
37
+ end
38
+
39
+ # Returns true if +triple? is a Triple, or a duck type of Triple.
40
+ def self.Triple?(triple)
41
+ triple.respond_to?(:subject) && triple.respond_to?(:predicate) && triple.respond_to?(:object)
42
+ end
43
+ end
44
+
45
+ require 'rdf/version'
46
+ require 'rdf/exceptions'
47
+ require 'rdf/plain_literal_node'
48
+ require 'rdf/namespace'
49
+ require 'rdf/format/ntriples'
50
+ require 'rdf/uri_node'
51
+ require 'rdf/typed_literal_node'
52
+ require 'rdf/triple'
53
+ require 'rdf/query'
54
+ require 'rdf/query/binding'
55
+ require 'rdf/query/result'
56
+ require 'rdf/query/executer'
57
+ require 'rdf/graph/base'
58
+ require 'rdf/graph/memory'
59
+ require 'rdf/blank_node'
data/log/debug.log ADDED
File without changes
data/script/console ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
2
+ # File: script/console
3
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
+
5
+ libs = " -r irb/completion"
6
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
+ libs << " -rubygems"
9
+ libs << " -r rubyrdf"
10
+ puts "Loading rubyrdf gem"
11
+ exec "#{irb} #{libs} --simple-prompt -I #{File.dirname(__FILE__) + '/../lib'}"
data/script/destroy ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/destroy'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Destroy.new.run(ARGV)
data/script/generate ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ APP_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
3
+
4
+ begin
5
+ require 'rubigen'
6
+ rescue LoadError
7
+ require 'rubygems'
8
+ require 'rubigen'
9
+ end
10
+ require 'rubigen/scripts/generate'
11
+
12
+ ARGV.shift if ['--help', '-h'].include?(ARGV[0])
13
+ RubiGen::Base.use_component_sources! [:rubygems, :newgem, :newgem_theme, :test_unit]
14
+ RubiGen::Scripts::Generate.new.run(ARGV)
data/script/txt2html ADDED
@@ -0,0 +1,74 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ begin
5
+ require 'newgem'
6
+ rescue LoadError
7
+ puts "\n\nGenerating the website requires the newgem RubyGem"
8
+ puts "Install: gem install newgem\n\n"
9
+ exit(1)
10
+ end
11
+ require 'redcloth'
12
+ require 'syntax/convertors/html'
13
+ require 'erb'
14
+ require File.dirname(__FILE__) + '/../lib/rdf/version.rb'
15
+
16
+ version = RDF::VERSION::STRING
17
+ download = 'http://rubyforge.org/projects/rubyrdf'
18
+
19
+ class Fixnum
20
+ def ordinal
21
+ # teens
22
+ return 'th' if (10..19).include?(self % 100)
23
+ # others
24
+ case self % 10
25
+ when 1: return 'st'
26
+ when 2: return 'nd'
27
+ when 3: return 'rd'
28
+ else return 'th'
29
+ end
30
+ end
31
+ end
32
+
33
+ class Time
34
+ def pretty
35
+ return "#{mday}#{mday.ordinal} #{strftime('%B')} #{year}"
36
+ end
37
+ end
38
+
39
+ def convert_syntax(syntax, source)
40
+ return Syntax::Convertors::HTML.for_syntax(syntax).convert(source).gsub(%r!^<pre>|</pre>$!,'')
41
+ end
42
+
43
+ if ARGV.length >= 1
44
+ src, template = ARGV
45
+ template ||= File.join(File.dirname(__FILE__), '/../website/template.html.erb')
46
+
47
+ else
48
+ puts("Usage: #{File.split($0).last} source.txt [template.html.erb] > output.html")
49
+ exit!
50
+ end
51
+
52
+ template = ERB.new(File.open(template).read)
53
+
54
+ title = nil
55
+ body = nil
56
+ File.open(src) do |fsrc|
57
+ title_text = fsrc.readline
58
+ body_text = fsrc.read
59
+ syntax_items = []
60
+ body_text.gsub!(%r!<(pre|code)[^>]*?syntax=['"]([^'"]+)[^>]*>(.*?)</\1>!m){
61
+ ident = syntax_items.length
62
+ element, syntax, source = $1, $2, $3
63
+ syntax_items << "<#{element} class='syntax'>#{convert_syntax(syntax, source)}</#{element}>"
64
+ "syntax-temp-#{ident}"
65
+ }
66
+ title = RedCloth.new(title_text).to_html.gsub(%r!<.*?>!,'').strip
67
+ body = RedCloth.new(body_text).to_html
68
+ body.gsub!(%r!(?:<pre><code>)?syntax-temp-(\d+)(?:</code></pre>)?!){ syntax_items[$1.to_i] }
69
+ end
70
+ stat = File.stat(src)
71
+ created = stat.ctime
72
+ modified = stat.mtime
73
+
74
+ $stdout << template.result(binding)