csvrdf 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.
- checksums.yaml +7 -0
- data/bin/csvrdf +15 -0
- data/lib/csvrdf.rb +69 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 576c7d46ab56d1923d4845164ac2aae4500c92f5
|
4
|
+
data.tar.gz: 894f4603e919bc2d2781a8041129271480cc64e2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1cfedbc8923bff07d2e3401ea3a3fa7dd40e1cea0dccfa397ec0b3164678e3cd37909e0d50f95775765056a0a160b0fe1c843e8b8770449bc70c24ce8a54a8f8
|
7
|
+
data.tar.gz: 028f9eb5a89c0b8e7e072b31cafad6df6b10b1ab699a2ec8f36d21481876f0435108a8d2c30a88333e9c8f45cc923330e1fada4668fdd9cef7487669889ee596
|
data/bin/csvrdf
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
require 'csv'
|
5
|
+
require 'csvrdf'
|
6
|
+
|
7
|
+
if ARGV.size != 2
|
8
|
+
puts 'Usage:'
|
9
|
+
puts 'ruby parser.rb schema.json file.csv > file.nt'
|
10
|
+
exit 1
|
11
|
+
end
|
12
|
+
|
13
|
+
translator = CSVRDF::Translator.new(0, JSON.parse(File.open(ARGV[0]).read))
|
14
|
+
|
15
|
+
puts translator.run(CSV.new(File.open(ARGV[1])), :ntriples)
|
data/lib/csvrdf.rb
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'rdf'
|
2
|
+
require 'rdf/ntriples'
|
3
|
+
|
4
|
+
module CSVRDF
|
5
|
+
include RDF
|
6
|
+
|
7
|
+
class Translator
|
8
|
+
def initialize(iterator, schema)
|
9
|
+
@iterator = iterator
|
10
|
+
@schema = schema
|
11
|
+
@prefix = RDF::URI.new(@schema['prefix'])
|
12
|
+
@type = RDF::URI.new(@schema['type'])
|
13
|
+
@schemata = []
|
14
|
+
@schema['schemata'].each do |column|
|
15
|
+
if column.nil?
|
16
|
+
@schemata << nil
|
17
|
+
else
|
18
|
+
predicate = RDF::URI.new(column[0])
|
19
|
+
|
20
|
+
if column.size == 1
|
21
|
+
column_parser = Proc.new do |subject, object|
|
22
|
+
[subject, predicate, RDF::Literal.new(object)]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
if column.size > 1
|
27
|
+
case column[1]
|
28
|
+
when 'integer'
|
29
|
+
column_parser = Proc.new do |subject, object|
|
30
|
+
[subject, predicate, RDF::Literal.new(Integer(object))]
|
31
|
+
end
|
32
|
+
when 'date'
|
33
|
+
column_parser = Proc.new do |subject, object|
|
34
|
+
[
|
35
|
+
subject,
|
36
|
+
predicate,
|
37
|
+
RDF::Literal.new(Date.strptime(object, column[2] || '%Y-%m-%d'))
|
38
|
+
]
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
@schemata << column_parser
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def run(rows, format)
|
49
|
+
graph = RDF::Graph.new
|
50
|
+
|
51
|
+
rows.each do |row|
|
52
|
+
@iterator = @iterator.next
|
53
|
+
|
54
|
+
resource = @prefix.join(@iterator.to_s)
|
55
|
+
|
56
|
+
graph << [resource, RDF.type, @type]
|
57
|
+
|
58
|
+
row.each_index do |i|
|
59
|
+
unless @schemata[i].nil? or row[i].nil?
|
60
|
+
graph << @schemata[i].call(resource, row[i].strip)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
graph.dump(format)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: csvrdf
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Daniel Hernandez
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-10 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: A simple translator of CSV files into RDF
|
14
|
+
email: daniel@degu.cl
|
15
|
+
executables:
|
16
|
+
- csvrdf
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- bin/csvrdf
|
21
|
+
- lib/csvrdf.rb
|
22
|
+
homepage: https://gitlab.com/danielhz/csv2rdf-ruby
|
23
|
+
licenses:
|
24
|
+
- CC0-1.0
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.5.1
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: CSV to RDF
|
46
|
+
test_files: []
|