rdf-tabular 1.0.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/README.md +62 -44
- data/UNLICENSE +1 -1
- data/VERSION +1 -1
- data/etc/csvw.jsonld +135 -50
- data/etc/doap.csv +1 -1
- data/etc/doap.csv-metadata.json +1 -1
- data/etc/doap.ttl +14 -13
- data/etc/earl.html +648 -648
- data/etc/earl.jsonld +691 -691
- data/etc/earl.ttl +846 -846
- data/lib/rdf/tabular.rb +3 -3
- data/lib/rdf/tabular/csvw.rb +626 -182
- data/lib/rdf/tabular/format.rb +8 -6
- data/lib/rdf/tabular/literal.rb +1 -1
- data/lib/rdf/tabular/metadata.rb +63 -58
- data/lib/rdf/tabular/reader.rb +32 -20
- data/lib/rdf/tabular/uax35.rb +1 -1
- data/spec/data/countries-minimal.json +38 -0
- data/spec/data/countries-minimal.ttl +36 -0
- data/spec/data/countries-standard.json +86 -0
- data/spec/data/countries-standard.ttl +75 -0
- data/spec/data/countries.csv +4 -0
- data/spec/data/countries.csv-minimal.json +16 -0
- data/spec/data/countries.csv-minimal.ttl +19 -0
- data/spec/data/countries.csv-standard.json +33 -0
- data/spec/data/countries.csv-standard.ttl +44 -0
- data/spec/data/countries.html +88 -0
- data/spec/data/countries.json +53 -0
- data/spec/data/countries_embed-minimal.json +38 -0
- data/spec/data/countries_embed-minimal.ttl +36 -0
- data/spec/data/countries_embed-standard.json +86 -0
- data/spec/data/countries_embed-standard.ttl +75 -0
- data/spec/data/countries_embed.html +88 -0
- data/spec/data/countries_html-minimal.json +38 -0
- data/spec/data/countries_html-minimal.ttl +36 -0
- data/spec/data/countries_html-standard.json +86 -0
- data/spec/data/countries_html-standard.ttl +75 -0
- data/spec/data/country-codes-and-names-minimal.json +19 -0
- data/spec/data/country-codes-and-names-minimal.ttl +22 -0
- data/spec/data/country-codes-and-names-standard.json +47 -0
- data/spec/data/country-codes-and-names-standard.ttl +45 -0
- data/spec/data/country-codes-and-names.csv +5 -0
- data/spec/data/country_slice.csv +4 -0
- data/spec/data/junior-roles.csv +3 -0
- data/spec/data/junior-roles.json +54 -0
- data/spec/data/roles-minimal.json +32 -0
- data/spec/data/roles-minimal.ttl +36 -0
- data/spec/data/roles-standard.json +56 -0
- data/spec/data/roles-standard.ttl +66 -0
- data/spec/data/roles.json +23 -0
- data/spec/data/senior-roles.csv +3 -0
- data/spec/data/senior-roles.json +52 -0
- data/spec/data/test232-metadata.json +10 -0
- data/spec/data/test232.csv +3 -0
- data/spec/data/tree-ops-atd.json +1 -0
- data/spec/data/tree-ops-ext-minimal.json +42 -0
- data/spec/data/tree-ops-ext-minimal.ttl +34 -0
- data/spec/data/tree-ops-ext-standard.json +93 -0
- data/spec/data/tree-ops-ext-standard.ttl +82 -0
- data/spec/data/tree-ops-ext.csv +4 -0
- data/spec/data/tree-ops-ext.json +81 -0
- data/spec/data/tree-ops-minimal.json +18 -0
- data/spec/data/tree-ops-minimal.ttl +14 -0
- data/spec/data/tree-ops-standard.json +44 -0
- data/spec/data/tree-ops-standard.ttl +44 -0
- data/spec/data/tree-ops-virtual-minimal.json +32 -0
- data/spec/data/tree-ops-virtual-minimal.ttl +25 -0
- data/spec/data/tree-ops-virtual-standard.json +49 -0
- data/spec/data/tree-ops-virtual-standard.ttl +49 -0
- data/spec/data/tree-ops-virtual.json +48 -0
- data/spec/data/tree-ops.csv +3 -0
- data/spec/data/tree-ops.csv-metadata.json +43 -0
- data/spec/data/tree-ops.html +54 -0
- data/spec/data/tree-ops.tsv +3 -0
- data/spec/format_spec.rb +1 -1
- data/spec/metadata_spec.rb +85 -8
- data/spec/reader_spec.rb +2 -2
- data/spec/suite_helper.rb +2 -2
- data/spec/suite_spec.rb +4 -5
- metadata +147 -37
- data/lib/rdf/tabular/json.rb +0 -0
- data/spec/w3c-csvw +0 -1
@@ -0,0 +1,49 @@
|
|
1
|
+
{
|
2
|
+
"tables": [{
|
3
|
+
"url": "http://example.org/tree-ops.csv",
|
4
|
+
"row": [
|
5
|
+
{
|
6
|
+
"url": "http://example.org/tree-ops.csv#row=2",
|
7
|
+
"rownum": 1,
|
8
|
+
"describes": [
|
9
|
+
{
|
10
|
+
"@id": "http://example.org/tree-ops.csv#gid-1",
|
11
|
+
"schema:url": "http://example.org/tree-ops.csv#gid-1",
|
12
|
+
"schema:name": "Celtis australis",
|
13
|
+
"trim_cycle": "Large Tree Routine Prune",
|
14
|
+
"schema:event": {
|
15
|
+
"@id": "http://example.org/tree-ops.csv#event-2010-10-18",
|
16
|
+
"schema:startDate": "2010-10-18"
|
17
|
+
},
|
18
|
+
"schema:location": {
|
19
|
+
"@id": "http://example.org/tree-ops.csv#location-1",
|
20
|
+
"schema:streetAddress": "ADDISON AV",
|
21
|
+
"@type": "schema:PostalAddress"
|
22
|
+
}
|
23
|
+
}
|
24
|
+
]
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"url": "http://example.org/tree-ops.csv#row=3",
|
28
|
+
"rownum": 2,
|
29
|
+
"describes": [
|
30
|
+
{
|
31
|
+
"@id": "http://example.org/tree-ops.csv#gid-2",
|
32
|
+
"schema:url": "http://example.org/tree-ops.csv#gid-2",
|
33
|
+
"schema:name": "Liquidambar styraciflua",
|
34
|
+
"trim_cycle": "Large Tree Routine Prune",
|
35
|
+
"schema:event": {
|
36
|
+
"@id": "http://example.org/tree-ops.csv#event-2010-06-02",
|
37
|
+
"schema:startDate": "2010-06-02"
|
38
|
+
},
|
39
|
+
"schema:location": {
|
40
|
+
"@id": "http://example.org/tree-ops.csv#location-2",
|
41
|
+
"schema:streetAddress": "EMERSON ST",
|
42
|
+
"@type": "schema:PostalAddress"
|
43
|
+
}
|
44
|
+
}
|
45
|
+
]
|
46
|
+
}
|
47
|
+
]
|
48
|
+
}]
|
49
|
+
}
|
@@ -0,0 +1,49 @@
|
|
1
|
+
@prefix csvw: <http://www.w3.org/ns/csvw#> .
|
2
|
+
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
|
3
|
+
@prefix schema: <http://schema.org/> .
|
4
|
+
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
|
5
|
+
|
6
|
+
[
|
7
|
+
a csvw:TableGroup;
|
8
|
+
csvw:table [
|
9
|
+
a csvw:Table;
|
10
|
+
csvw:row [
|
11
|
+
a csvw:Row;
|
12
|
+
csvw:describes <http://example.org/tree-ops.csv#gid-1>,
|
13
|
+
<http://example.org/tree-ops.csv#location-1>,
|
14
|
+
<http://example.org/tree-ops.csv#event-2010-10-18>;
|
15
|
+
csvw:rownum 1;
|
16
|
+
csvw:url <http://example.org/tree-ops.csv#row=2>
|
17
|
+
], [
|
18
|
+
a csvw:Row;
|
19
|
+
csvw:describes <http://example.org/tree-ops.csv#gid-2>,
|
20
|
+
<http://example.org/tree-ops.csv#location-2>,
|
21
|
+
<http://example.org/tree-ops.csv#event-2010-06-02>;
|
22
|
+
csvw:rownum 2;
|
23
|
+
csvw:url <http://example.org/tree-ops.csv#row=3>
|
24
|
+
];
|
25
|
+
csvw:url <http://example.org/tree-ops.csv>
|
26
|
+
]
|
27
|
+
] .
|
28
|
+
|
29
|
+
<http://example.org/tree-ops.csv#gid-1> <http://example.org/tree-ops.csv#trim_cycle> "Large Tree Routine Prune";
|
30
|
+
schema:event <http://example.org/tree-ops.csv#event-2010-10-18>;
|
31
|
+
schema:location <http://example.org/tree-ops.csv#location-1>;
|
32
|
+
schema:name "Celtis australis";
|
33
|
+
schema:url <http://example.org/tree-ops.csv#gid-1> .
|
34
|
+
|
35
|
+
<http://example.org/tree-ops.csv#location-1> rdf:type schema:PostalAddress;
|
36
|
+
schema:streetAddress "ADDISON AV" .
|
37
|
+
|
38
|
+
<http://example.org/tree-ops.csv#event-2010-10-18> schema:startDate "2010-10-18"^^xsd:date .
|
39
|
+
|
40
|
+
<http://example.org/tree-ops.csv#gid-2> <http://example.org/tree-ops.csv#trim_cycle> "Large Tree Routine Prune";
|
41
|
+
schema:event <http://example.org/tree-ops.csv#event-2010-06-02>;
|
42
|
+
schema:location <http://example.org/tree-ops.csv#location-2>;
|
43
|
+
schema:name "Liquidambar styraciflua";
|
44
|
+
schema:url <http://example.org/tree-ops.csv#gid-2> .
|
45
|
+
|
46
|
+
<http://example.org/tree-ops.csv#location-2> rdf:type schema:PostalAddress;
|
47
|
+
schema:streetAddress "EMERSON ST" .
|
48
|
+
|
49
|
+
<http://example.org/tree-ops.csv#event-2010-06-02> schema:startDate "2010-06-02"^^xsd:date .
|
@@ -0,0 +1,48 @@
|
|
1
|
+
{
|
2
|
+
"url": "tree-ops.csv",
|
3
|
+
"@context": ["http://www.w3.org/ns/csvw", {"@language": "en"}],
|
4
|
+
"tableSchema": {
|
5
|
+
"columns": [{
|
6
|
+
"name": "GID",
|
7
|
+
"titles": "GID",
|
8
|
+
"datatype": "string",
|
9
|
+
"propertyUrl": "schema:url",
|
10
|
+
"valueUrl": "#gid-{GID}"
|
11
|
+
}, {
|
12
|
+
"name": "on_street",
|
13
|
+
"titles": "On Street",
|
14
|
+
"datatype": "string",
|
15
|
+
"aboutUrl": "#location-{GID}",
|
16
|
+
"propertyUrl": "schema:streetAddress"
|
17
|
+
}, {
|
18
|
+
"name": "species",
|
19
|
+
"titles": "Species",
|
20
|
+
"datatype": "string",
|
21
|
+
"propertyUrl": "schema:name"
|
22
|
+
}, {
|
23
|
+
"name": "trim_cycle",
|
24
|
+
"titles": "Trim Cycle",
|
25
|
+
"datatype": "string"
|
26
|
+
}, {
|
27
|
+
"name": "inventory_date",
|
28
|
+
"titles": "Inventory Date",
|
29
|
+
"datatype": {"base": "date", "format": "M/d/yyyy"},
|
30
|
+
"aboutUrl": "#event-{inventory_date}",
|
31
|
+
"propertyUrl": "schema:startDate"
|
32
|
+
}, {
|
33
|
+
"propertyUrl": "schema:event",
|
34
|
+
"valueUrl": "#event-{inventory_date}",
|
35
|
+
"virtual": true
|
36
|
+
}, {
|
37
|
+
"propertyUrl": "schema:location",
|
38
|
+
"valueUrl": "#location-{GID}",
|
39
|
+
"virtual": true
|
40
|
+
}, {
|
41
|
+
"aboutUrl": "#location-{GID}",
|
42
|
+
"propertyUrl": "rdf:type",
|
43
|
+
"valueUrl": "schema:PostalAddress",
|
44
|
+
"virtual": true
|
45
|
+
}],
|
46
|
+
"aboutUrl": "#gid-{GID}"
|
47
|
+
}
|
48
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
{
|
2
|
+
"url": "tree-ops.csv",
|
3
|
+
"@context": ["http://www.w3.org/ns/csvw", {"@language": "en"}],
|
4
|
+
"dc:title": "Tree Operations",
|
5
|
+
"dcat:keyword": ["tree", "street", "maintenance"],
|
6
|
+
"dc:publisher": "Example Municipality",
|
7
|
+
"dc:license": {"@id": "http://opendefinition.org/licenses/cc-by/"},
|
8
|
+
"dc:modified": {"@value": "2010-12-31", "@type": "xsd:date"},
|
9
|
+
"tableSchema": {
|
10
|
+
"columns": [{
|
11
|
+
"name": "GID",
|
12
|
+
"titles": [
|
13
|
+
"GID",
|
14
|
+
"Generic Identifier"
|
15
|
+
],
|
16
|
+
"dc:description": "An identifier for the operation on a tree.",
|
17
|
+
"datatype": "string",
|
18
|
+
"required": true
|
19
|
+
}, {
|
20
|
+
"name": "on_street",
|
21
|
+
"titles": "On Street",
|
22
|
+
"dc:description": "The street that the tree is on.",
|
23
|
+
"datatype": "string"
|
24
|
+
}, {
|
25
|
+
"name": "species",
|
26
|
+
"titles": "Species",
|
27
|
+
"dc:description": "The species of the tree.",
|
28
|
+
"datatype": "string"
|
29
|
+
}, {
|
30
|
+
"name": "trim_cycle",
|
31
|
+
"titles": "Trim Cycle",
|
32
|
+
"dc:description": "The operation performed on the tree.",
|
33
|
+
"datatype": "string"
|
34
|
+
}, {
|
35
|
+
"name": "inventory_date",
|
36
|
+
"titles": "Inventory Date",
|
37
|
+
"dc:description": "The date of the operation that was performed.",
|
38
|
+
"datatype": {"base": "date", "format": "M/d/yyyy"}
|
39
|
+
}],
|
40
|
+
"primaryKey": "GID",
|
41
|
+
"aboutUrl": "#gid-{GID}"
|
42
|
+
}
|
43
|
+
}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Embedding Metadata in HTML</title>
|
4
|
+
<script type="application/csvm+json">
|
5
|
+
{
|
6
|
+
"url": "tree-ops.csv",
|
7
|
+
"@context": ["http://www.w3.org/ns/csvw", {"@language": "en"}],
|
8
|
+
"dc:title": "Tree Operations",
|
9
|
+
"dcat:keyword": ["tree", "street", "maintenance"],
|
10
|
+
"dc:publisher": "Example Municipality",
|
11
|
+
"dc:license": {"@id": "http://opendefinition.org/licenses/cc-by/"},
|
12
|
+
"dc:modified": {"@value": "2010-12-31", "@type": "xsd:date"},
|
13
|
+
"tableSchema": {
|
14
|
+
"columns": [{
|
15
|
+
"name": "GID",
|
16
|
+
"titles": [
|
17
|
+
"GID",
|
18
|
+
"Generic Identifier"
|
19
|
+
],
|
20
|
+
"dc:description": "An identifier for the operation on a tree.",
|
21
|
+
"datatype": "string",
|
22
|
+
"required": true
|
23
|
+
}, {
|
24
|
+
"name": "on_street",
|
25
|
+
"titles": "On Street",
|
26
|
+
"dc:description": "The street that the tree is on.",
|
27
|
+
"datatype": "string"
|
28
|
+
}, {
|
29
|
+
"name": "species",
|
30
|
+
"titles": "Species",
|
31
|
+
"dc:description": "The species of the tree.",
|
32
|
+
"datatype": "string"
|
33
|
+
}, {
|
34
|
+
"name": "trim_cycle",
|
35
|
+
"titles": "Trim Cycle",
|
36
|
+
"dc:description": "The operation performed on the tree.",
|
37
|
+
"datatype": "string"
|
38
|
+
}, {
|
39
|
+
"name": "inventory_date",
|
40
|
+
"titles": "Inventory Date",
|
41
|
+
"dc:description": "The date of the operation that was performed.",
|
42
|
+
"datatype": {"base": "date", "format": "M/d/yyyy"}
|
43
|
+
}],
|
44
|
+
"primaryKey": "GID",
|
45
|
+
"aboutUrl": "#gid-{GID}"
|
46
|
+
}
|
47
|
+
}
|
48
|
+
</script>
|
49
|
+
</head>
|
50
|
+
<body>
|
51
|
+
<p>This is an example of embedding metadata in a <code>script</code> element.</p>
|
52
|
+
</body>
|
53
|
+
</html>
|
54
|
+
|
data/spec/format_spec.rb
CHANGED
@@ -31,7 +31,7 @@ describe RDF::Tabular::Format do
|
|
31
31
|
specify {expect(described_class.to_sym).to eq :tabular}
|
32
32
|
end
|
33
33
|
|
34
|
-
describe ".cli_commands" do
|
34
|
+
describe ".cli_commands", skip: ("TextMate OptionParser issues" if ENV['TM_SELECTED_FILE']) do
|
35
35
|
before(:each) do
|
36
36
|
WebMock.stub_request(:any, %r(.*example.org.*)).
|
37
37
|
to_return(lambda {|request|
|
data/spec/metadata_spec.rb
CHANGED
@@ -838,12 +838,6 @@ describe RDF::Tabular::Metadata do
|
|
838
838
|
":type Schema" => [{}, {type: :Schema}, RDF::Tabular::Schema],
|
839
839
|
":type Column" => [{}, {type: :Column}, RDF::Tabular::Column],
|
840
840
|
":type Dialect" => [{}, {type: :Dialect}, RDF::Tabular::Dialect],
|
841
|
-
"@type TableGroup" => [{}, {"@type" => "TableGroup"}, RDF::Tabular::TableGroup],
|
842
|
-
"@type Table" => [{"@type" => "Table"}, RDF::Tabular::Table],
|
843
|
-
"@type Template" => [{"@type" => "Template"}, RDF::Tabular::Transformation],
|
844
|
-
"@type Schema" => [{"@type" => "Schema"}, RDF::Tabular::Schema],
|
845
|
-
"@type Column" => [{"@type" => "Column"}, RDF::Tabular::Column],
|
846
|
-
"@type Dialect" => [{"@type" => "Dialect"}, RDF::Tabular::Dialect],
|
847
841
|
"tables TableGroup" => [{"tables" => []}, RDF::Tabular::TableGroup],
|
848
842
|
"dialect Table" => [{"dialect" => {}}, RDF::Tabular::Table],
|
849
843
|
"tableSchema Table" => [{"tableSchema" => {}}, RDF::Tabular::Table],
|
@@ -874,7 +868,7 @@ describe RDF::Tabular::Metadata do
|
|
874
868
|
options ||= {}
|
875
869
|
options[:logger] = logger
|
876
870
|
options[:context] ||= 'http://www.w3.org/ns/csvw'
|
877
|
-
expect(described_class.new(input, options)).to be_a(klass)
|
871
|
+
expect(described_class.new(input, **options)).to be_a(klass)
|
878
872
|
expect(logger.to_s).not_to match(/ERROR|WARN/)
|
879
873
|
end
|
880
874
|
end
|
@@ -1088,6 +1082,89 @@ describe RDF::Tabular::Metadata do
|
|
1088
1082
|
end
|
1089
1083
|
end
|
1090
1084
|
end
|
1085
|
+
|
1086
|
+
context "virtual columns" do
|
1087
|
+
subject {
|
1088
|
+
described_class.new(JSON.parse(%({
|
1089
|
+
"@context": "http://www.w3.org/ns/csvw",
|
1090
|
+
"url": "https://example.org/countries.csv",
|
1091
|
+
"aboutUrl": "https://example.org/countries",
|
1092
|
+
"@type": "Table",
|
1093
|
+
"tableSchema": {
|
1094
|
+
"@type": "Schema",
|
1095
|
+
"columns": [{
|
1096
|
+
"name": "countryCode",
|
1097
|
+
"titles": "countryCode",
|
1098
|
+
"propertyUrl": "https://example.org/countries.csv#countryCode"
|
1099
|
+
}, {
|
1100
|
+
"name": "latitude",
|
1101
|
+
"titles": "latitude",
|
1102
|
+
"propertyUrl": "https://example.org/countries.csv#latitude"
|
1103
|
+
}, {
|
1104
|
+
"name": "longitude",
|
1105
|
+
"titles": "longitude",
|
1106
|
+
"propertyUrl": "https://example.org/countries.csv#longitude"
|
1107
|
+
}, {
|
1108
|
+
"name": "name",
|
1109
|
+
"titles": "name",
|
1110
|
+
"propertyUrl": "https://example.org/countries.csv#name"
|
1111
|
+
}, {
|
1112
|
+
"virtual": true,
|
1113
|
+
"propertyUrl": "https://example.org/countries.csv#virt1",
|
1114
|
+
"valueUrl": "https://example.org/countries.csv#virt1"
|
1115
|
+
}, {
|
1116
|
+
"virtual": true,
|
1117
|
+
"propertyUrl": "https://example.org/countries.csv#virt2",
|
1118
|
+
"default": "default",
|
1119
|
+
"datatype": "string"
|
1120
|
+
}]
|
1121
|
+
}
|
1122
|
+
})), base: RDF::URI("http://example.org/base"), logger: logger)
|
1123
|
+
}
|
1124
|
+
let(:input) {RDF::Util::File.open_file("https://example.org/countries.csv")}
|
1125
|
+
let(:rows) {subject.to_enum(:each_row, input).to_a}
|
1126
|
+
|
1127
|
+
it "has expected aboutUrls" do
|
1128
|
+
subject.each_row(input) do |row|
|
1129
|
+
expect(row.values[0].aboutUrl).to eq "https://example.org/countries"
|
1130
|
+
expect(row.values[1].aboutUrl).to eq "https://example.org/countries"
|
1131
|
+
expect(row.values[2].aboutUrl).to eq "https://example.org/countries"
|
1132
|
+
expect(row.values[3].aboutUrl).to eq "https://example.org/countries"
|
1133
|
+
expect(row.values[4].aboutUrl).to eq "https://example.org/countries"
|
1134
|
+
expect(row.values[5].aboutUrl).to eq "https://example.org/countries"
|
1135
|
+
end
|
1136
|
+
end
|
1137
|
+
|
1138
|
+
it "has expected propertyUrls" do
|
1139
|
+
subject.each_row(input) do |row|
|
1140
|
+
expect(row.values[0].propertyUrl).to eq "https://example.org/countries.csv#countryCode"
|
1141
|
+
expect(row.values[1].propertyUrl).to eq "https://example.org/countries.csv#latitude"
|
1142
|
+
expect(row.values[2].propertyUrl).to eq "https://example.org/countries.csv#longitude"
|
1143
|
+
expect(row.values[3].propertyUrl).to eq "https://example.org/countries.csv#name"
|
1144
|
+
expect(row.values[4].propertyUrl).to eq "https://example.org/countries.csv#virt1"
|
1145
|
+
expect(row.values[5].propertyUrl).to eq "https://example.org/countries.csv#virt2"
|
1146
|
+
end
|
1147
|
+
end
|
1148
|
+
|
1149
|
+
it "has expected valueUrls" do
|
1150
|
+
subject.each_row(input) do |row|
|
1151
|
+
expect(row.values[0].valueUrl).to be_nil
|
1152
|
+
expect(row.values[1].valueUrl).to be_nil
|
1153
|
+
expect(row.values[2].valueUrl).to be_nil
|
1154
|
+
expect(row.values[3].valueUrl).to be_nil
|
1155
|
+
expect(row.values[4].valueUrl).to eq "https://example.org/countries.csv#virt1"
|
1156
|
+
expect(row.values[5].valueUrl).to be_nil
|
1157
|
+
end
|
1158
|
+
end
|
1159
|
+
|
1160
|
+
it "has expected values" do
|
1161
|
+
rows = subject.to_enum(:each_row, input).to_a
|
1162
|
+
expect(rows[0].values.map(&:to_s)).to produce(%w(AD 42.546245 1.601554 Andorra).push("", "default"), logger)
|
1163
|
+
expect(rows[1].values.map(&:to_s)).to produce((%w(AE 23.424076 53.847818).push("United Arab Emirates", "", "default")), logger)
|
1164
|
+
expect(rows[2].values.map(&:to_s)).to produce(%w(AF 33.93911 67.709953 Afghanistan).push("", "default"), logger)
|
1165
|
+
end
|
1166
|
+
end
|
1167
|
+
|
1091
1168
|
end
|
1092
1169
|
|
1093
1170
|
context "datatypes" do
|
@@ -1379,7 +1456,7 @@ describe RDF::Tabular::Metadata do
|
|
1379
1456
|
context "Unsupported datatypes" do
|
1380
1457
|
%w(anyType anySimpleType ENTITIES IDREFS NMTOKENS ENTITY ID IDREF NOTATAION foo).each do |base|
|
1381
1458
|
it "detects #{base} as unsupported" do
|
1382
|
-
|
1459
|
+
RDF::Tabular::Table.new({
|
1383
1460
|
url: "http://example.com/table.csv",
|
1384
1461
|
tableSchema: {
|
1385
1462
|
columns: [{
|
data/spec/reader_spec.rb
CHANGED
@@ -308,7 +308,7 @@ describe RDF::Tabular::Reader do
|
|
308
308
|
ASK WHERE {
|
309
309
|
[ prov:wasGeneratedBy [
|
310
310
|
a prov:Activity;
|
311
|
-
prov:wasAssociatedWith <
|
311
|
+
prov:wasAssociatedWith <https://rubygems.org/gems/rdf-tabular>;
|
312
312
|
prov:startedAtTime ?start;
|
313
313
|
prov:endedAtTime ?end;
|
314
314
|
prov:qualifiedUsage [
|
@@ -331,7 +331,7 @@ describe RDF::Tabular::Reader do
|
|
331
331
|
ASK WHERE {
|
332
332
|
[ prov:wasGeneratedBy [
|
333
333
|
a prov:Activity;
|
334
|
-
prov:wasAssociatedWith <
|
334
|
+
prov:wasAssociatedWith <https://rubygems.org/gems/rdf-tabular>;
|
335
335
|
prov:startedAtTime ?start;
|
336
336
|
prov:endedAtTime ?end;
|
337
337
|
prov:qualifiedUsage [
|
data/spec/suite_helper.rb
CHANGED
@@ -23,7 +23,7 @@ module RDF::Util
|
|
23
23
|
# HTTP Request headers.
|
24
24
|
# @return [IO] File stream
|
25
25
|
# @yield [IO] File stream
|
26
|
-
def self.open_file(filename_or_url, options
|
26
|
+
def self.open_file(filename_or_url, **options, &block)
|
27
27
|
case
|
28
28
|
when filename_or_url.to_s =~ /^file:/
|
29
29
|
path = filename_or_url.to_s[5..-1]
|
@@ -73,7 +73,7 @@ module RDF::Util
|
|
73
73
|
end
|
74
74
|
end
|
75
75
|
else
|
76
|
-
original_open_file(filename_or_url, options) do |remote_document|
|
76
|
+
original_open_file(filename_or_url, **options) do |remote_document|
|
77
77
|
# Add Link header, if necessary
|
78
78
|
remote_document.headers[:link] = options[:httpLink] if options[:httpLink]
|
79
79
|
|
data/spec/suite_spec.rb
CHANGED
@@ -25,11 +25,10 @@ describe RDF::Tabular::Reader do
|
|
25
25
|
t.logger.info "source:\n#{t.input}"
|
26
26
|
begin
|
27
27
|
RDF::Tabular::Reader.open(t.action,
|
28
|
-
t.
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
)
|
28
|
+
base_uri: t.base,
|
29
|
+
validate: t.validation?,
|
30
|
+
logger: t.logger,
|
31
|
+
**t.reader_options
|
33
32
|
) do |reader|
|
34
33
|
expect(reader).to be_a RDF::Reader
|
35
34
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdf-tabular
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gregg Kellogg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bcp47
|
@@ -36,56 +36,56 @@ dependencies:
|
|
36
36
|
requirements:
|
37
37
|
- - "~>"
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '3.1'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '3.1'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rdf-vocab
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '3.1'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '3.1'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: rdf-xsd
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '
|
67
|
+
version: '3.1'
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
74
|
+
version: '3.1'
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: json-ld
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '
|
81
|
+
version: '3.1'
|
82
82
|
type: :runtime
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - "~>"
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: '
|
88
|
+
version: '3.1'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
90
|
name: addressable
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,28 +106,28 @@ dependencies:
|
|
106
106
|
requirements:
|
107
107
|
- - "~>"
|
108
108
|
- !ruby/object:Gem::Version
|
109
|
-
version: '1.
|
109
|
+
version: '1.8'
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
112
|
version_requirements: !ruby/object:Gem::Requirement
|
113
113
|
requirements:
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: '1.
|
116
|
+
version: '1.8'
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: rspec
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
121
|
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version: '3.
|
123
|
+
version: '3.7'
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version: '3.
|
130
|
+
version: '3.7'
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: rspec-its
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -148,84 +148,84 @@ dependencies:
|
|
148
148
|
requirements:
|
149
149
|
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
151
|
+
version: '3.1'
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
156
|
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
158
|
+
version: '3.1'
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: rdf-spec
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
164
|
- !ruby/object:Gem::Version
|
165
|
-
version: '
|
165
|
+
version: '3.1'
|
166
166
|
type: :development
|
167
167
|
prerelease: false
|
168
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
169
|
requirements:
|
170
170
|
- - "~>"
|
171
171
|
- !ruby/object:Gem::Version
|
172
|
-
version: '
|
172
|
+
version: '3.1'
|
173
173
|
- !ruby/object:Gem::Dependency
|
174
174
|
name: rdf-turtle
|
175
175
|
requirement: !ruby/object:Gem::Requirement
|
176
176
|
requirements:
|
177
177
|
- - "~>"
|
178
178
|
- !ruby/object:Gem::Version
|
179
|
-
version: '
|
179
|
+
version: '3.1'
|
180
180
|
type: :development
|
181
181
|
prerelease: false
|
182
182
|
version_requirements: !ruby/object:Gem::Requirement
|
183
183
|
requirements:
|
184
184
|
- - "~>"
|
185
185
|
- !ruby/object:Gem::Version
|
186
|
-
version: '
|
186
|
+
version: '3.1'
|
187
187
|
- !ruby/object:Gem::Dependency
|
188
188
|
name: sparql
|
189
189
|
requirement: !ruby/object:Gem::Requirement
|
190
190
|
requirements:
|
191
191
|
- - "~>"
|
192
192
|
- !ruby/object:Gem::Version
|
193
|
-
version: '
|
193
|
+
version: '3.1'
|
194
194
|
type: :development
|
195
195
|
prerelease: false
|
196
196
|
version_requirements: !ruby/object:Gem::Requirement
|
197
197
|
requirements:
|
198
198
|
- - "~>"
|
199
199
|
- !ruby/object:Gem::Version
|
200
|
-
version: '
|
200
|
+
version: '3.1'
|
201
201
|
- !ruby/object:Gem::Dependency
|
202
202
|
name: webmock
|
203
203
|
requirement: !ruby/object:Gem::Requirement
|
204
204
|
requirements:
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
|
-
version: '
|
207
|
+
version: '3.0'
|
208
208
|
type: :development
|
209
209
|
prerelease: false
|
210
210
|
version_requirements: !ruby/object:Gem::Requirement
|
211
211
|
requirements:
|
212
212
|
- - "~>"
|
213
213
|
- !ruby/object:Gem::Version
|
214
|
-
version: '
|
214
|
+
version: '3.0'
|
215
215
|
- !ruby/object:Gem::Dependency
|
216
216
|
name: yard
|
217
217
|
requirement: !ruby/object:Gem::Requirement
|
218
218
|
requirements:
|
219
219
|
- - "~>"
|
220
220
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
221
|
+
version: 0.9.12
|
222
222
|
type: :development
|
223
223
|
prerelease: false
|
224
224
|
version_requirements: !ruby/object:Gem::Requirement
|
225
225
|
requirements:
|
226
226
|
- - "~>"
|
227
227
|
- !ruby/object:Gem::Version
|
228
|
-
version:
|
228
|
+
version: 0.9.12
|
229
229
|
description: RDF::Tabular processes tabular data with metadata creating RDF or JSON
|
230
230
|
output.
|
231
231
|
email: public-rdf-ruby@w3.org
|
@@ -250,12 +250,68 @@ files:
|
|
250
250
|
- lib/rdf/tabular.rb
|
251
251
|
- lib/rdf/tabular/csvw.rb
|
252
252
|
- lib/rdf/tabular/format.rb
|
253
|
-
- lib/rdf/tabular/json.rb
|
254
253
|
- lib/rdf/tabular/literal.rb
|
255
254
|
- lib/rdf/tabular/metadata.rb
|
256
255
|
- lib/rdf/tabular/reader.rb
|
257
256
|
- lib/rdf/tabular/uax35.rb
|
258
257
|
- lib/rdf/tabular/version.rb
|
258
|
+
- spec/data/countries-minimal.json
|
259
|
+
- spec/data/countries-minimal.ttl
|
260
|
+
- spec/data/countries-standard.json
|
261
|
+
- spec/data/countries-standard.ttl
|
262
|
+
- spec/data/countries.csv
|
263
|
+
- spec/data/countries.csv-minimal.json
|
264
|
+
- spec/data/countries.csv-minimal.ttl
|
265
|
+
- spec/data/countries.csv-standard.json
|
266
|
+
- spec/data/countries.csv-standard.ttl
|
267
|
+
- spec/data/countries.html
|
268
|
+
- spec/data/countries.json
|
269
|
+
- spec/data/countries_embed-minimal.json
|
270
|
+
- spec/data/countries_embed-minimal.ttl
|
271
|
+
- spec/data/countries_embed-standard.json
|
272
|
+
- spec/data/countries_embed-standard.ttl
|
273
|
+
- spec/data/countries_embed.html
|
274
|
+
- spec/data/countries_html-minimal.json
|
275
|
+
- spec/data/countries_html-minimal.ttl
|
276
|
+
- spec/data/countries_html-standard.json
|
277
|
+
- spec/data/countries_html-standard.ttl
|
278
|
+
- spec/data/country-codes-and-names-minimal.json
|
279
|
+
- spec/data/country-codes-and-names-minimal.ttl
|
280
|
+
- spec/data/country-codes-and-names-standard.json
|
281
|
+
- spec/data/country-codes-and-names-standard.ttl
|
282
|
+
- spec/data/country-codes-and-names.csv
|
283
|
+
- spec/data/country_slice.csv
|
284
|
+
- spec/data/junior-roles.csv
|
285
|
+
- spec/data/junior-roles.json
|
286
|
+
- spec/data/roles-minimal.json
|
287
|
+
- spec/data/roles-minimal.ttl
|
288
|
+
- spec/data/roles-standard.json
|
289
|
+
- spec/data/roles-standard.ttl
|
290
|
+
- spec/data/roles.json
|
291
|
+
- spec/data/senior-roles.csv
|
292
|
+
- spec/data/senior-roles.json
|
293
|
+
- spec/data/test232-metadata.json
|
294
|
+
- spec/data/test232.csv
|
295
|
+
- spec/data/tree-ops-atd.json
|
296
|
+
- spec/data/tree-ops-ext-minimal.json
|
297
|
+
- spec/data/tree-ops-ext-minimal.ttl
|
298
|
+
- spec/data/tree-ops-ext-standard.json
|
299
|
+
- spec/data/tree-ops-ext-standard.ttl
|
300
|
+
- spec/data/tree-ops-ext.csv
|
301
|
+
- spec/data/tree-ops-ext.json
|
302
|
+
- spec/data/tree-ops-minimal.json
|
303
|
+
- spec/data/tree-ops-minimal.ttl
|
304
|
+
- spec/data/tree-ops-standard.json
|
305
|
+
- spec/data/tree-ops-standard.ttl
|
306
|
+
- spec/data/tree-ops-virtual-minimal.json
|
307
|
+
- spec/data/tree-ops-virtual-minimal.ttl
|
308
|
+
- spec/data/tree-ops-virtual-standard.json
|
309
|
+
- spec/data/tree-ops-virtual-standard.ttl
|
310
|
+
- spec/data/tree-ops-virtual.json
|
311
|
+
- spec/data/tree-ops.csv
|
312
|
+
- spec/data/tree-ops.csv-metadata.json
|
313
|
+
- spec/data/tree-ops.html
|
314
|
+
- spec/data/tree-ops.tsv
|
259
315
|
- spec/format_spec.rb
|
260
316
|
- spec/matchers.rb
|
261
317
|
- spec/metadata_spec.rb
|
@@ -264,8 +320,7 @@ files:
|
|
264
320
|
- spec/suite_helper.rb
|
265
321
|
- spec/suite_spec.rb
|
266
322
|
- spec/uax35_spec.rb
|
267
|
-
|
268
|
-
homepage: http://github.com/ruby-rdf/rdf-tabular
|
323
|
+
homepage: https://github.com/ruby-rdf/rdf-tabular
|
269
324
|
licenses:
|
270
325
|
- Unlicense
|
271
326
|
metadata: {}
|
@@ -284,18 +339,73 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
284
339
|
- !ruby/object:Gem::Version
|
285
340
|
version: '0'
|
286
341
|
requirements: []
|
287
|
-
|
288
|
-
rubygems_version: 2.6.8
|
342
|
+
rubygems_version: 3.1.3
|
289
343
|
signing_key:
|
290
344
|
specification_version: 4
|
291
345
|
summary: Tabular Data RDF Reader and JSON serializer.
|
292
346
|
test_files:
|
293
|
-
- spec/format_spec.rb
|
294
|
-
- spec/matchers.rb
|
295
|
-
- spec/metadata_spec.rb
|
296
|
-
- spec/reader_spec.rb
|
297
347
|
- spec/spec_helper.rb
|
298
|
-
- spec/
|
348
|
+
- spec/metadata_spec.rb
|
349
|
+
- spec/matchers.rb
|
299
350
|
- spec/suite_spec.rb
|
351
|
+
- spec/suite_helper.rb
|
352
|
+
- spec/reader_spec.rb
|
353
|
+
- spec/format_spec.rb
|
300
354
|
- spec/uax35_spec.rb
|
301
|
-
- spec/
|
355
|
+
- spec/data/roles.json
|
356
|
+
- spec/data/countries.csv-minimal.ttl
|
357
|
+
- spec/data/countries_embed-standard.json
|
358
|
+
- spec/data/tree-ops-standard.json
|
359
|
+
- spec/data/countries.csv
|
360
|
+
- spec/data/countries_embed-minimal.json
|
361
|
+
- spec/data/countries-standard.json
|
362
|
+
- spec/data/countries_html-minimal.json
|
363
|
+
- spec/data/countries.csv-minimal.json
|
364
|
+
- spec/data/senior-roles.csv
|
365
|
+
- spec/data/roles-standard.ttl
|
366
|
+
- spec/data/countries_embed-standard.ttl
|
367
|
+
- spec/data/senior-roles.json
|
368
|
+
- spec/data/countries_html-minimal.ttl
|
369
|
+
- spec/data/junior-roles.csv
|
370
|
+
- spec/data/countries.csv-standard.ttl
|
371
|
+
- spec/data/tree-ops-ext-standard.json
|
372
|
+
- spec/data/countries_html-standard.ttl
|
373
|
+
- spec/data/tree-ops-minimal.ttl
|
374
|
+
- spec/data/junior-roles.json
|
375
|
+
- spec/data/roles-minimal.json
|
376
|
+
- spec/data/countries_html-standard.json
|
377
|
+
- spec/data/country_slice.csv
|
378
|
+
- spec/data/countries.csv-standard.json
|
379
|
+
- spec/data/tree-ops-virtual-minimal.ttl
|
380
|
+
- spec/data/countries.json
|
381
|
+
- spec/data/tree-ops.tsv
|
382
|
+
- spec/data/tree-ops-virtual.json
|
383
|
+
- spec/data/countries-minimal.json
|
384
|
+
- spec/data/tree-ops-atd.json
|
385
|
+
- spec/data/tree-ops-ext-minimal.ttl
|
386
|
+
- spec/data/tree-ops.csv
|
387
|
+
- spec/data/tree-ops-standard.ttl
|
388
|
+
- spec/data/tree-ops-virtual-standard.ttl
|
389
|
+
- spec/data/countries-minimal.ttl
|
390
|
+
- spec/data/tree-ops-virtual-standard.json
|
391
|
+
- spec/data/countries.html
|
392
|
+
- spec/data/tree-ops-ext-standard.ttl
|
393
|
+
- spec/data/country-codes-and-names-minimal.json
|
394
|
+
- spec/data/tree-ops.html
|
395
|
+
- spec/data/test232.csv
|
396
|
+
- spec/data/tree-ops-ext.json
|
397
|
+
- spec/data/roles-minimal.ttl
|
398
|
+
- spec/data/countries_embed.html
|
399
|
+
- spec/data/country-codes-and-names-standard.json
|
400
|
+
- spec/data/country-codes-and-names-minimal.ttl
|
401
|
+
- spec/data/countries_embed-minimal.ttl
|
402
|
+
- spec/data/roles-standard.json
|
403
|
+
- spec/data/tree-ops-virtual-minimal.json
|
404
|
+
- spec/data/tree-ops-minimal.json
|
405
|
+
- spec/data/tree-ops.csv-metadata.json
|
406
|
+
- spec/data/countries-standard.ttl
|
407
|
+
- spec/data/tree-ops-ext-minimal.json
|
408
|
+
- spec/data/country-codes-and-names-standard.ttl
|
409
|
+
- spec/data/test232-metadata.json
|
410
|
+
- spec/data/tree-ops-ext.csv
|
411
|
+
- spec/data/country-codes-and-names.csv
|