ttl2html 0.2.5 → 0.3.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8253fb9f2a102241a54b8669eef14520eca1eef8953504d471f570165621a97d
4
- data.tar.gz: 49ea8c61479232fdb208dc6436d2d05753addfea86e30dfe98409431c0d53f66
3
+ metadata.gz: 5c6cc6b025ce5ec57709788d914a9507dc66160feed31a083e101acb2d128461
4
+ data.tar.gz: 994ea0ec7c5131b21ba7c709c4693c9fe341a9cb3e19f8d53b28f8f2a9d39056
5
5
  SHA512:
6
- metadata.gz: fa2c26496eeaa3e08b759c42504f83b4ce4e96e06d56a0c81d32388418fbef6087b6fc4b62fb88aa9f35d58ada17600c412326f19ddfb53d5cf781dadf9d1757
7
- data.tar.gz: f46b8faf70dc2593501c8ca8c4f1f14c0ef0617ca031df4eaa50a566714e974864e66fcd0f52aa65fa4fadd664ae1651d10804080342a88568d58598db035f75
6
+ metadata.gz: fb77aca35e592354697fddd2b32e65ba8515ed6631bf8edfbf5ddd1ee2442f62f0a872a17a27fb1230c2665b1b5067a13b1e504c31aedfa3c613f87ec0ce1881
7
+ data.tar.gz: b0d58cf7689127f8d1a47e3f4fbc500e228e075baf49c9edb7f6c3e86378c8f861f8336cabbe5f0e8ad87778091fcfb970a86e2e62a2e894e49cf7bad4dd0eb2
data/bin/catttl ADDED
@@ -0,0 +1,46 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "ttl2html"
4
+ include Textbook
5
+
6
+ prefix = {}
7
+ ttl = []
8
+
9
+ ARGV.each do |file|
10
+ filename = find_turtle(file)
11
+ klass = File
12
+ if File.extname(file) == ".gz"
13
+ klass = Zlib::GzipReader
14
+ end
15
+ klass.readlines(filename).each do |line|
16
+ line = line.chomp
17
+ next if line.empty?
18
+ if line =~ /^@prefix\s+(\w[\w\-]*):\s*<(.+)>/
19
+ prefix[$1] ||= []
20
+ prefix[$1] << $2
21
+ else
22
+ ttl << line
23
+ end
24
+ end
25
+ end
26
+ ARGV.each do |file|
27
+ filename = find_turtle(file)
28
+ STDERR.puts filename
29
+ end
30
+
31
+ prefix.each do |k, v|
32
+ STDERR.puts "Duplicate prefixes: #{k}: #{v}" if v.uniq.size > 1
33
+ prefix[k] = v.sort.first
34
+ end
35
+ dups = prefix.values.group_by{|e| e }.select{|k, v| v.size > 1 }.keys
36
+ unless dups.empty?
37
+ dups.each do |uri|
38
+ uris = prefix.keys.select{|e| prefix[e] == uri }
39
+ STDERR.puts "Duplicate prefixes: #{uri} (#{uris.join(",")})"
40
+ end
41
+ end
42
+
43
+ prefix.sort.each do |prefix, uri|
44
+ puts "@prefix #{prefix}: <#{uri}>."
45
+ end
46
+ puts ttl
data/bin/xlsx2shape CHANGED
@@ -7,5 +7,6 @@ if ARGV.size == 0
7
7
  exit
8
8
  end
9
9
 
10
- turtle = XLSX2Shape.xlsx2shape(ARGV[0])
10
+ include XLSX2Shape
11
+ turtle = xlsx2shape(ARGV[0])
11
12
  puts turtle
@@ -1 +1 @@
1
- TTL2HTML::VERSION = "0.2.5"
1
+ TTL2HTML::VERSION = "0.3.0"
data/lib/ttl2html.rb CHANGED
@@ -33,7 +33,12 @@ module TTL2HTML
33
33
  def load_turtle(file)
34
34
  STDERR.puts "loading #{file}..."
35
35
  count = 0
36
- RDF::Turtle::Reader.open(file) do |reader|
36
+ if file.end_with?(".gz")
37
+ io = Zlib::GzipReader.open(file)
38
+ else
39
+ io = File.open(file)
40
+ end
41
+ RDF::Turtle::Reader.new(io) do |reader|
37
42
  @prefix.merge! reader.prefixes
38
43
  reader.statements.each do |statement|
39
44
  @graph.insert(statement)
@@ -59,6 +64,19 @@ module TTL2HTML
59
64
  STDERR.puts "#{count} triples. #{@data.size} subjects."
60
65
  @data
61
66
  end
67
+ def find_turtle(filename, params = {})
68
+ if params[:noexpand] == true
69
+ filename if File.exists? filename
70
+ else
71
+ file = nil
72
+ basename = File.basename(filename, ".ttl")
73
+ dirname = File.dirname(filename)
74
+ files = Dir.glob("#{dirname}/#{basename}-[0-9]*.ttl{,.gz}")
75
+ file = files.sort.last
76
+ file
77
+ end
78
+ end
79
+
62
80
  def format_turtle(subject, depth = 1)
63
81
  turtle = RDF::Turtle::Writer.new
64
82
  result = ""
@@ -152,7 +170,7 @@ module TTL2HTML
152
170
  template = Template.new("index.html.erb", @config)
153
171
  param = @config.dup
154
172
  param[:data_global] = @data
155
- subjects.each do |subject|
173
+ subjects.sort.each do |subject|
156
174
  param[:index_data] ||= []
157
175
  param[:index_data] << subject.to_s
158
176
  end
data/lib/xlsx2shape.rb CHANGED
@@ -5,12 +5,12 @@ require "roo"
5
5
  module XLSX2Shape
6
6
  def xlsx2shape(filename)
7
7
  shapes = {}
8
- prefix = { "sh:": "http://www.w3.org/ns/shacl#" }
8
+ prefix = { sh: "http://www.w3.org/ns/shacl#" }
9
9
  xlsx = Roo::Excelx.new(filename)
10
10
  xlsx.each_with_pagename do |name, sheet|
11
11
  if name =~ /\Aprefix\z/i
12
12
  sheet.each do |row|
13
- prefix[row[0]] = row[1] if not row[1].empty?
13
+ prefix[row[0].to_s.intern] = row[1] if not row[1].empty?
14
14
  end
15
15
  else
16
16
  headers = sheet.row(1)
@@ -59,8 +59,8 @@ module XLSX2Shape
59
59
  end
60
60
  end
61
61
  result = ""
62
- prefix.sort.each do |prefix, val|
63
- result << "@prefix #{prefix} <#{val}>.\n"
62
+ prefix.sort_by{|k,v| [k,v] }.each do |prefix, val|
63
+ result << "@prefix #{prefix}: <#{val}>.\n"
64
64
  end
65
65
  shapes.sort_by{|uri, val| uri }.each do |uri, val|
66
66
  result << "\n"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ttl2html
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masao Takaku
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-21 00:00:00.000000000 Z
11
+ date: 2021-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -113,9 +113,11 @@ email: tmasao@acm.org
113
113
  executables:
114
114
  - ttl2html
115
115
  - xlsx2shape
116
+ - catttl
116
117
  extensions: []
117
118
  extra_rdoc_files: []
118
119
  files:
120
+ - bin/catttl
119
121
  - bin/ttl2html
120
122
  - bin/xlsx2shape
121
123
  - lib/ttl2html.rb