ttl2html 0.2.6 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cb0589adeaf36033815a542a3bd97fc30d654957322d526783a5da6926e53e17
4
- data.tar.gz: d11cb4f235afe13a7a0588c507eb619d421cd4eae9093fe62711e1523b4a1036
3
+ metadata.gz: 8a4695d17d266cffe1bdc9b1b902c3cec45dcda2a6278a705d52a7d13b4fea50
4
+ data.tar.gz: bed7947d84c69ddc661c7d12da8c53aa6f63ec331430c18a9d2f5fdbbbdfe9ef
5
5
  SHA512:
6
- metadata.gz: a1a16d48e2ac1a8eca8e3c16680c167f59cc2be30e97f6b7c14134e69d0d300267d3b81615b593f4e9ebff646f97478cc3184b8ad371305fa6a1a107670ee38e
7
- data.tar.gz: 33bf46e85a244c921278400d1918064ec1b220429cbf57f4d113177f224a146b469e920079fa81dc508715cbf8957b03df1714753ac29dd26dba6234c032c48d
6
+ metadata.gz: 8c8b4b8b7c5497477b7ebcd4fd51e79a9d5e1db04c26b9382aecc3af71433eb3b720c0cc0c0cb78295a47634de6fb445ce422bef78a9f40f4b66f153df000993
7
+ data.tar.gz: 5516d4fc1c2a4f7ebb590bb67ee4a4fe11015548b9c0ea3cdd6b3eca4edeb2d7a3eba9c6265aec58ad26466d7df1f6c3d031e43904530be15ed3c0ad5f08ff24
data/bin/catttl ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "zlib"
4
+ require "ttl2html"
5
+ include TTL2HTML
6
+
7
+ prefix = {}
8
+ ttl = []
9
+
10
+ ARGV.each do |file|
11
+ filename = find_turtle(file)
12
+ if filename.nil?
13
+ STDERR.puts "#{file} not found. skipping."
14
+ next
15
+ end
16
+ klass = File
17
+ if File.extname(filename) == ".gz"
18
+ klass = Zlib::GzipReader
19
+ end
20
+ io = klass.open(filename)
21
+ io.each do |line|
22
+ line = line.chomp
23
+ next if line.empty?
24
+ if line =~ /^@prefix\s+(\w[\w\-]*):\s*<(.+)>/
25
+ prefix[$1] ||= []
26
+ prefix[$1] << $2
27
+ else
28
+ ttl << line
29
+ end
30
+ end
31
+ end
32
+ ARGV.each do |file|
33
+ filename = find_turtle(file)
34
+ STDERR.puts filename
35
+ end
36
+
37
+ prefix.each do |k, v|
38
+ STDERR.puts "Duplicate prefixes: #{k}: #{v}" if v.uniq.size > 1
39
+ prefix[k] = v.sort.first
40
+ end
41
+ dups = prefix.values.group_by{|e| e }.select{|k, v| v.size > 1 }.keys
42
+ unless dups.empty?
43
+ dups.each do |uri|
44
+ uris = prefix.keys.select{|e| prefix[e] == uri }
45
+ STDERR.puts "Duplicate prefixes: #{uri} (#{uris.join(",")})"
46
+ end
47
+ end
48
+
49
+ prefix.sort.each do |prefix, uri|
50
+ puts "@prefix #{prefix}: <#{uri}>."
51
+ end
52
+ 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.6"
1
+ TTL2HTML::VERSION = "0.3.1"
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)
@@ -229,4 +234,17 @@ module TTL2HTML
229
234
  end
230
235
  end
231
236
  end
237
+
238
+ def find_turtle(filename, params = {})
239
+ if params[:noexpand] == true
240
+ filename if File.exists? filename
241
+ else
242
+ file = nil
243
+ basename = File.basename(filename, ".ttl")
244
+ dirname = File.dirname(filename)
245
+ files = Dir.glob("#{dirname}/#{basename}-[0-9]*.ttl{,.gz}")
246
+ file = files.sort.last
247
+ file
248
+ end
249
+ end
232
250
  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.6
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masao Takaku
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-28 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
@@ -132,7 +134,7 @@ homepage: https://github.com/masao/ttl2html
132
134
  licenses:
133
135
  - MIT
134
136
  metadata: {}
135
- post_install_message:
137
+ post_install_message:
136
138
  rdoc_options: []
137
139
  require_paths:
138
140
  - lib
@@ -147,8 +149,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
149
  - !ruby/object:Gem::Version
148
150
  version: '0'
149
151
  requirements: []
150
- rubygems_version: 3.1.2
151
- signing_key:
152
+ rubygems_version: 3.2.3
153
+ signing_key:
152
154
  specification_version: 4
153
155
  summary: ttl2html
154
156
  test_files: []