rdf-tabular 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9edf0da4328030ca559eafcc719fa2d0ea74f23d
4
- data.tar.gz: 77aa006413d31534d91dc49b8c9921889f9cc557
3
+ metadata.gz: 540422ae3c9cb7f94c8c0c396237da7de46b8768
4
+ data.tar.gz: eff96886626aa8c73b4ea3150c75441f27af02e4
5
5
  SHA512:
6
- metadata.gz: cb4cdf39c4dca8526c102f57a6b96fe026e4bc5533858e37eaf0b5eb0808c638a2f06b7659c3c7d9b0131cd3a5e04e01664c3416f23db222ef6c18a2a11328af
7
- data.tar.gz: 83054ed9fe8cb41a9c63f2e20259f4add9b0c13f3a6ae87c2aad989e79d4ccde73bab3fb7bd8c30ad5d1570280b81083d7287759e28cdfde2c514710caceada4
6
+ metadata.gz: cbe14ec96c52d655be56ad1079ff8cb3ce22e366aae7af60a8d43cffa5508ae6b5e528db0b59ac65e3a902fc3d127a660be8b569ad3743af93d992f276902b73
7
+ data.tar.gz: 9831d7631d93eaeeb2739c0b58b22061e8485e5954b4687da108ee79c63e5220778652bcde1c8f5103db806b8bae4c74c871a1a684165abe7fef3e0bfef355e5
data/README.md CHANGED
@@ -11,6 +11,214 @@ RDF::Tabular parses CSV or other Tabular Data into [RDF][] and JSON using the [W
11
11
 
12
12
  Install with `gem install rdf-tabular`
13
13
 
14
+ RDF::Tabular parses CSVs, TSVs, and potentially other tabular data formats. Using rules defined for [W3C CSVW][], it can also parse metadata files (in JSON-LD format) to find a set of tabular data files, or locate a metadata file given a CSV:
15
+
16
+ * Given a CSV `http://example.org/mycsv.csv` look for `http://example.org/mycsv.csv-metata.json` or `http://example.org/metadata.json`. Metadata can also be specified using the `describedby` link header to reference a metadata file.
17
+ * Given a metadata file, locate one or more CSV files described within the metadata file.
18
+ * Also, extract _embedded metadata_ from the CSV (limited to column titles right now).
19
+
20
+ Metadata can then provide datatypes for the columns, express foreign key relationships, and associate subjects and predicates with columns. An example [metadata file for the project DOAP description](https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv-metadata.json) is:
21
+
22
+ {
23
+ "@context": "http://www.w3.org/ns/csvw",
24
+ "url": "doap.csv",
25
+ "tableSchema": {
26
+ "aboutUrl": "http://rubygems.org/gems/rdf-tabular",
27
+ "propertyUrl": "http://usefulinc.com/ns/doap#{_name}",
28
+ "null": "",
29
+ "columns": [
30
+ {"titles": "name"},
31
+ {"titles": "type", "propertyUrl": "rdf:type", "valueUrl": "{+type}"},
32
+ {"titles": "homepage", "valueUrl": "{+homepage}"},
33
+ {"titles": "license", "valueUrl": "{+license}"},
34
+ {"titles": "shortdesc", "lang": "en"},
35
+ {"titles": "description", "lang": "en"},
36
+ {"titles": "created", "datatype": {"base": "date", "format": "M/d/yyyy"}},
37
+ {"titles": "programming_language", "propertyUrl": "http://usefulinc.com/ns/doap#programming-language"},
38
+ {"titles": "implements", "valueUrl": "{+implements}"},
39
+ {"titles": "category", "valueUrl": "{+category}"},
40
+ {"titles": "download_page", "propertyUrl": "http://usefulinc.com/ns/doap#download-page", "valueUrl": "{+download_page}"},
41
+ {"titles": "mailing_list", "propertyUrl": "http://usefulinc.com/ns/doap#mailing-list", "valueUrl": "{+mailing_list}"},
42
+ {"titles": "bug_database", "propertyUrl": "http://usefulinc.com/ns/doap#bug-database", "valueUrl": "{+bug_database}"},
43
+ {"titles": "blog", "valueUrl": "{+blog}"},
44
+ {"titles": "developer", "valueUrl": "{+developer}"},
45
+ {"titles": "maintainer", "valueUrl": "{+maintainer}"},
46
+ {"titles": "documenter", "valueUrl": "{+documenter}"},
47
+ {"titles": "maker", "propertyUrl": "foaf:maker", "valueUrl": "{+maker}"},
48
+ {"titles": "dc_title", "propertyUrl": "dc:title"},
49
+ {"titles": "dc_description", "propertyUrl": "dc:description", "lang": "en"},
50
+ {"titles": "dc_date", "propertyUrl": "dc:date", "datatype": {"base": "date", "format": "M/d/yyyy"}},
51
+ {"titles": "dc_creator", "propertyUrl": "dc:creator", "valueUrl": "{+dc_creator}"},
52
+ {"titles": "isPartOf", "propertyUrl": "dc:isPartOf", "valueUrl": "{+isPartOf}"}
53
+ ]
54
+ }
55
+ }
56
+
57
+ This associates the metadata with the CSV [doap.csv](https://raw.githubusercontent.com/ruby-rdf/rdf-tabular/develop/etc/doap.csv), creates a common subject for all rows in the file, and a common predicate using the URI Template [URI Template](https://tools.ietf.org/html/rfc6570) `http://usefulinc.com/ns/doap#\{_name\}` which uses the `name` of each column (defaulted from `titles`) to construct a URI in the DOAP vocabulary, and constructs object URIs for object-valued properties from the contents of the column cells. In some cases, the predicates are changed on a per-column basis by using a different `propertyUrl` property on a given column.
58
+
59
+ This results in the following Turtle:
60
+
61
+ @prefix csvw: <http://www.w3.org/ns/csvw#> .
62
+ @prefix dc: <http://purl.org/dc/terms/> .
63
+ @prefix doap: <http://usefulinc.com/ns/doap#> .
64
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
65
+ @prefix prov: <http://www.w3.org/ns/prov#> .
66
+ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
67
+ @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
68
+
69
+ <http://rubygems.org/gems/rdf-tabular> a doap:Project,
70
+ <http://www.w3.org/ns/earl#TestSubject>,
71
+ <http://www.w3.org/ns/earl#Software>;
72
+ dc:title "RDF::Tabular";
73
+ dc:creator <http://greggkellogg.net/foaf#me>;
74
+ dc:date "2015-01-05"^^xsd:date;
75
+ dc:description "RDF::Tabular processes tabular data with metadata creating RDF or JSON output."@en;
76
+ dc:isPartOf <http://rubygems.org/gems/rdf>;
77
+ doap:blog <http://greggkellogg.net/>;
78
+ doap:bug-database <http://github.com/ruby-rdf/rdf-tabular/issues>;
79
+ doap:category <http://dbpedia.org/resource/Resource_Description_Framework>,
80
+ <http://dbpedia.org/resource/Ruby_(programming_language)>;
81
+ doap:created "2015-01-05"^^xsd:date;
82
+ doap:description "RDF::Tabular processes tabular data with metadata creating RDF or JSON output."@en;
83
+ doap:developer <http://greggkellogg.net/foaf#me>;
84
+ doap:documenter <http://greggkellogg.net/foaf#me>;
85
+ doap:download-page <http://rubygems.org/gems/rdf-tabular>;
86
+ doap:homepage <http://ruby-rdf.github.com/rdf-tabular>;
87
+ doap:implements <http://www.w3.org/TR/tabular-data-model/>,
88
+ <http://www.w3.org/TR/tabular-metadata/>,
89
+ <http://www.w3.org/TR/csv2rdf/>,
90
+ <http://www.w3.org/TR/csv2json/>;
91
+ doap:license <http://creativecommons.org/licenses/publicdomain/>;
92
+ doap:mailing-list <http://lists.w3.org/Archives/Public/public-rdf-ruby/>;
93
+ doap:maintainer <http://greggkellogg.net/foaf#me>;
94
+ doap:name "RDF::Tabular";
95
+ doap:programming-language "Ruby";
96
+ doap:shortdesc "Tabular Data RDF Reader and JSON serializer."@en;
97
+ foaf:maker <http://greggkellogg.net/foaf#me> .
98
+
99
+ [
100
+ a csvw:TableGroup;
101
+ csvw:table [
102
+ a csvw:Table;
103
+ csvw:row [
104
+ a csvw:Row;
105
+ csvw:describes <http://rubygems.org/gems/rdf-tabular>;
106
+ csvw:rownum 1;
107
+ csvw:url <file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=2>
108
+ ], [
109
+ a csvw:Row;
110
+ csvw:describes <http://rubygems.org/gems/rdf-tabular>;
111
+ csvw:rownum 2;
112
+ csvw:url <file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=3>
113
+ ], [
114
+ a csvw:Row;
115
+ csvw:describes <http://rubygems.org/gems/rdf-tabular>;
116
+ csvw:rownum 3;
117
+ csvw:url <file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=4>
118
+ ], [
119
+ a csvw:Row;
120
+ csvw:describes <http://rubygems.org/gems/rdf-tabular>;
121
+ csvw:rownum 4;
122
+ csvw:url <file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=5>
123
+ ];
124
+ csvw:url <file://users/gregg/Projects/rdf-tabular/etc/doap.csv>
125
+ ];
126
+ prov:wasGeneratedBy [
127
+ a prov:Activity;
128
+ prov:endedAtTime "2015-04-11T12:33:26Z"^^xsd:dateTime;
129
+ prov:qualifiedUsage [
130
+ a prov:Usage;
131
+ prov:entity <file://users/gregg/Projects/rdf-tabular/etc/doap.csv>;
132
+ prov:hadRole csvw:csvEncodedTabularData
133
+ ], [
134
+ a prov:Usage;
135
+ prov:entity <file://users/gregg/Projects/rdf-tabular/etc/doap.csv-metadata.json>;
136
+ prov:hadRole csvw:tabularMetadata
137
+ ];
138
+ prov:startedAtTime "2015-04-11T12:33:25Z"^^xsd:dateTime;
139
+ prov:wasAssociatedWith <http://rubygems.org/gems/rdf-tabular>
140
+ ]
141
+ ] .
142
+
143
+ The provenance on table-source information can be excluded by using the `:minimal` option to the reader.
144
+
145
+ It can also generate JSON output (not complete JSON-LD, but compatible with it), using the {RDF::Tabular::Reader#to_json} method:
146
+
147
+ {
148
+ "table": [
149
+ {
150
+ "url": "file://users/gregg/Projects/rdf-tabular/etc/doap.csv",
151
+ "row": [
152
+ {
153
+ "url": "file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=2",
154
+ "rownum": 1,
155
+ "describes": [
156
+ {
157
+ "@id": "http://rubygems.org/gems/rdf-tabular",
158
+ "http://usefulinc.com/ns/doap#name": "RDF::Tabular",
159
+ "@type": "http://usefulinc.com/ns/doap#Project",
160
+ "http://usefulinc.com/ns/doap#homepage": "http://ruby-rdf.github.com/rdf-tabular",
161
+ "http://usefulinc.com/ns/doap#license": "http://creativecommons.org/licenses/publicdomain/",
162
+ "http://usefulinc.com/ns/doap#shortdesc": "Tabular Data RDF Reader and JSON serializer.",
163
+ "http://usefulinc.com/ns/doap#description": "RDF::Tabular processes tabular data with metadata creating RDF or JSON output.",
164
+ "http://usefulinc.com/ns/doap#created": "2015-01-05",
165
+ "http://usefulinc.com/ns/doap#programming-language": "Ruby",
166
+ "http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/tabular-data-model/",
167
+ "http://usefulinc.com/ns/doap#category": "http://dbpedia.org/resource/Resource_Description_Framework",
168
+ "http://usefulinc.com/ns/doap#download-page": "http://rubygems.org/gems/rdf-tabular",
169
+ "http://usefulinc.com/ns/doap#mailing-list": "http://lists.w3.org/Archives/Public/public-rdf-ruby/",
170
+ "http://usefulinc.com/ns/doap#bug-database": "http://github.com/ruby-rdf/rdf-tabular/issues",
171
+ "http://usefulinc.com/ns/doap#blog": "http://greggkellogg.net/",
172
+ "http://usefulinc.com/ns/doap#developer": "http://greggkellogg.net/foaf#me",
173
+ "http://usefulinc.com/ns/doap#maintainer": "http://greggkellogg.net/foaf#me",
174
+ "http://usefulinc.com/ns/doap#documenter": "http://greggkellogg.net/foaf#me",
175
+ "foaf:maker": "http://greggkellogg.net/foaf#me",
176
+ "dc:title": "RDF::Tabular",
177
+ "dc:description": "RDF::Tabular processes tabular data with metadata creating RDF or JSON output.",
178
+ "dc:date": "2015-01-05",
179
+ "dc:creator": "http://greggkellogg.net/foaf#me",
180
+ "dc:isPartOf": "http://rubygems.org/gems/rdf"
181
+ }
182
+ ]
183
+ },
184
+ {
185
+ "url": "file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=3",
186
+ "rownum": 2,
187
+ "describes": [
188
+ {
189
+ "@id": "http://rubygems.org/gems/rdf-tabular",
190
+ "@type": "http://www.w3.org/ns/earl#TestSubject",
191
+ "http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/tabular-metadata/",
192
+ "http://usefulinc.com/ns/doap#category": "http://dbpedia.org/resource/Ruby_(programming_language)"
193
+ }
194
+ ]
195
+ },
196
+ {
197
+ "url": "file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=4",
198
+ "rownum": 3,
199
+ "describes": [
200
+ {
201
+ "@id": "http://rubygems.org/gems/rdf-tabular",
202
+ "@type": "http://www.w3.org/ns/earl#Software",
203
+ "http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/csv2rdf/"
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ "url": "file://users/gregg/Projects/rdf-tabular/etc/doap.csv#row=5",
209
+ "rownum": 4,
210
+ "describes": [
211
+ {
212
+ "@id": "http://rubygems.org/gems/rdf-tabular",
213
+ "http://usefulinc.com/ns/doap#implements": "http://www.w3.org/TR/csv2json/"
214
+ }
215
+ ]
216
+ }
217
+ ]
218
+ }
219
+ ]
220
+ }
221
+
14
222
  ## Examples
15
223
 
16
224
  require 'rubygems'
@@ -71,3 +279,4 @@ see <http://unlicense.org/> or the accompanying {file:UNLICENSE} file.
71
279
  [RDF.rb]: http://rubygems.org/gems/rdf
72
280
  [CSV]: http://en.wikipedia.org/wiki/Comma-separated_values
73
281
  [W3C CSVW]: http://www.w3.org/2013/csvw/wiki/Main_Page
282
+ [URI template]: https://tools.ietf.org/html/rfc6570
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.1.2
data/etc/csvw.jsonld CHANGED
@@ -111,13 +111,13 @@
111
111
  "@id": "csvw:base",
112
112
  "@language": null
113
113
  },
114
- "columnReferenc": {
115
- "@id": "csvw:columnReferenc",
114
+ "columnReference": {
115
+ "@id": "csvw:columnReference",
116
116
  "@language": null,
117
117
  "@container": "@list"
118
118
  },
119
119
  "columns": {
120
- "@id": "csvw:columns",
120
+ "@id": "csvw:column",
121
121
  "@type": "@id",
122
122
  "@container": "@list"
123
123
  },
@@ -157,7 +157,7 @@
157
157
  "@language": null
158
158
  },
159
159
  "foreignKeys": {
160
- "@id": "csvw:foreignKeys",
160
+ "@id": "csvw:foreignKey",
161
161
  "@type": "@id"
162
162
  },
163
163
  "format": {
@@ -172,10 +172,6 @@
172
172
  "@id": "csvw:header",
173
173
  "@type": "xsd:boolean"
174
174
  },
175
- "headerColumnCount": {
176
- "@id": "csvw:headerColumnCount",
177
- "@type": "xsd:nonNegativeInteger"
178
- },
179
175
  "headerRowCount": {
180
176
  "@id": "csvw:headerRowCount",
181
177
  "@type": "xsd:nonNegativeInteger"
@@ -188,8 +184,8 @@
188
184
  "@id": "csvw:length",
189
185
  "@type": "xsd:nonNegativeInteger"
190
186
  },
191
- "lineTerminator": {
192
- "@id": "csvw:lineTerminator",
187
+ "lineTerminators": {
188
+ "@id": "csvw:lineTerminators",
193
189
  "@language": null
194
190
  },
195
191
  "maxExclusive": {
@@ -221,7 +217,7 @@
221
217
  "@language": null
222
218
  },
223
219
  "notes": {
224
- "@id": "csvw:notes"
220
+ "@id": "csvw:note"
225
221
  },
226
222
  "null": {
227
223
  "@id": "csvw:null",
@@ -259,11 +255,6 @@
259
255
  "@id": "csvw:resource",
260
256
  "@type": "xsd:anyURI"
261
257
  },
262
- "resources": {
263
- "@id": "csvw:resources",
264
- "@type": "@id",
265
- "@container": "@set"
266
- },
267
258
  "row": {
268
259
  "@id": "csvw:row",
269
260
  "@type": "@id",
@@ -309,7 +300,7 @@
309
300
  "@id": "csvw:suppressOutput",
310
301
  "@type": "xsd:boolean"
311
302
  },
312
- "table": {
303
+ "tables": {
313
304
  "@id": "csvw:table",
314
305
  "@type": "@id",
315
306
  "@container": "@set"
@@ -334,7 +325,7 @@
334
325
  "@id": "csvw:textDirection",
335
326
  "@type": "@vocab"
336
327
  },
337
- "title": {
328
+ "titles": {
338
329
  "@id": "csvw:title",
339
330
  "@container": "@language"
340
331
  },
@@ -599,7 +590,7 @@
599
590
  "rdfs:range": "xsd:string"
600
591
  },
601
592
  {
602
- "@id": "csvw:columnReferenc",
593
+ "@id": "csvw:columnReference",
603
594
  "@type": "rdf:Property",
604
595
  "rdfs:label": {
605
596
  "en": "column reference"
@@ -616,10 +607,10 @@
616
607
  "rdfs:range": "xsd:string"
617
608
  },
618
609
  {
619
- "@id": "csvw:columns",
610
+ "@id": "csvw:column",
620
611
  "@type": "rdf:Property",
621
612
  "rdfs:label": {
622
- "en": "columns"
613
+ "en": "column"
623
614
  },
624
615
  "rdfs:comment": {
625
616
  "en": "An array property of column descriptions as described in section 4.9 Columns."
@@ -759,10 +750,10 @@
759
750
  "rdfs:range": "xsd:string"
760
751
  },
761
752
  {
762
- "@id": "csvw:foreignKeys",
753
+ "@id": "csvw:foreignKey",
763
754
  "@type": "rdf:Property",
764
755
  "rdfs:label": {
765
- "en": "foreign keys"
756
+ "en": "foreign key"
766
757
  },
767
758
  "rdfs:comment": {
768
759
  "en": "An array property of foreign key definitions that define how the values from specified columns within this table link to rows within this table or other tables."
@@ -811,18 +802,6 @@
811
802
  "rdfs:domain": "csvw:Dialect",
812
803
  "rdfs:range": "xsd:boolean"
813
804
  },
814
- {
815
- "@id": "csvw:headerColumnCount",
816
- "@type": "rdf:Property",
817
- "rdfs:label": {
818
- "en": "header column count"
819
- },
820
- "rdfs:comment": {
821
- "en": "An numeric atomic property that sets the header column count flag to the single provided value, which must be non-negative integer."
822
- },
823
- "rdfs:domain": "csvw:Dialect",
824
- "rdfs:range": "xsd:nonNegativeInteger"
825
- },
826
805
  {
827
806
  "@id": "csvw:headerRowCount",
828
807
  "@type": "rdf:Property",
@@ -867,13 +846,13 @@
867
846
  "rdfs:range": "xsd:nonNegativeInteger"
868
847
  },
869
848
  {
870
- "@id": "csvw:lineTerminator",
849
+ "@id": "csvw:lineTerminators",
871
850
  "@type": "rdf:Property",
872
851
  "rdfs:label": {
873
852
  "en": "line terminator"
874
853
  },
875
854
  "rdfs:comment": {
876
- "en": "A numeric atomic property that contains a single integer that is the exact length of the value."
855
+ "en": "An atomic property that is either an array containing the single provided string value"
877
856
  },
878
857
  "rdfs:domain": "csvw:Dialect",
879
858
  "rdfs:range": "xsd:string"
@@ -963,13 +942,13 @@
963
942
  "rdfs:range": "xsd:string"
964
943
  },
965
944
  {
966
- "@id": "csvw:notes",
945
+ "@id": "csvw:note",
967
946
  "@type": "rdf:Property",
968
947
  "rdfs:label": {
969
- "en": "notes"
948
+ "en": "note"
970
949
  },
971
950
  "rdfs:comment": {
972
- "en": "An array of objects representing annotations. This specification does not place any constraints on the structure of these objects."
951
+ "en": "The value of this property becomes the value of the notes annotation on the resource."
973
952
  },
974
953
  "rdfs:domain": {
975
954
  "owl:unionOf": [
@@ -1107,18 +1086,6 @@
1107
1086
  "rdfs:domain": "csvw:TableReference",
1108
1087
  "rdfs:range": "xsd:anyURI"
1109
1088
  },
1110
- {
1111
- "@id": "csvw:resources",
1112
- "@type": "rdf:Property",
1113
- "rdfs:label": {
1114
- "en": "resources"
1115
- },
1116
- "rdfs:comment": {
1117
- "en": "An array property of table descriptions for the tables in the group, namely those listed in the resources annotation on the group of tables being described."
1118
- },
1119
- "rdfs:domain": "csvw:TableGroup",
1120
- "rdfs:range": "csvw:Table"
1121
- },
1122
1089
  {
1123
1090
  "@id": "csvw:row",
1124
1091
  "@type": "rdf:Property",
@@ -1270,7 +1237,7 @@
1270
1237
  "en": "table"
1271
1238
  },
1272
1239
  "rdfs:comment": {
1273
- "en": "Relates an Table group to annotated tables. (Note, this is different from csvw:resources, which relates metadata, rather than resulting annotated table descriptions."
1240
+ "en": "Relates an Table group to annotated tables."
1274
1241
  },
1275
1242
  "rdfs:subPropertyOf": "rdfs:member",
1276
1243
  "rdfs:domain": "csvw:TableGroup",
@@ -6,29 +6,29 @@
6
6
  "propertyUrl": "http://usefulinc.com/ns/doap#{_name}",
7
7
  "null": "",
8
8
  "columns": [
9
- {"title": "name"},
10
- {"title": "type", "propertyUrl": "rdf:type", "valueUrl": "{+type}"},
11
- {"title": "homepage", "valueUrl": "{+homepage}"},
12
- {"title": "license", "valueUrl": "{+license}"},
13
- {"title": "shortdesc", "lang": "en"},
14
- {"title": "description", "lang": "en"},
15
- {"title": "created", "datatype": {"base": "date", "format": "M/d/yyyy"}},
16
- {"title": "programming_language", "propertyUrl": "http://usefulinc.com/ns/doap#programming-language"},
17
- {"title": "implements", "valueUrl": "{+implements}"},
18
- {"title": "category", "valueUrl": "{+category}"},
19
- {"title": "download_page", "propertyUrl": "http://usefulinc.com/ns/doap#download-page", "valueUrl": "{+download_page}"},
20
- {"title": "mailing_list", "propertyUrl": "http://usefulinc.com/ns/doap#mailing-list", "valueUrl": "{+mailing_list}"},
21
- {"title": "bug_database", "propertyUrl": "http://usefulinc.com/ns/doap#bug-database", "valueUrl": "{+bug_database}"},
22
- {"title": "blog", "valueUrl": "{+blog}"},
23
- {"title": "developer", "valueUrl": "{+developer}"},
24
- {"title": "maintainer", "valueUrl": "{+maintainer}"},
25
- {"title": "documenter", "valueUrl": "{+documenter}"},
26
- {"title": "maker", "propertyUrl": "foaf:maker", "valueUrl": "{+maker}"},
27
- {"title": "dc_title", "propertyUrl": "dc:title"},
28
- {"title": "dc_description", "propertyUrl": "dc:description", "lang": "en"},
29
- {"title": "dc_date", "propertyUrl": "dc:date", "datatype": {"base": "date", "format": "M/d/yyyy"}},
30
- {"title": "dc_creator", "propertyUrl": "dc:creator", "valueUrl": "{+dc_creator}"},
31
- {"title": "isPartOf", "propertyUrl": "dc:isPartOf", "valueUrl": "{+isPartOf}"}
9
+ {"titles": "name"},
10
+ {"titles": "type", "propertyUrl": "rdf:type", "valueUrl": "{+type}"},
11
+ {"titles": "homepage", "valueUrl": "{+homepage}"},
12
+ {"titles": "license", "valueUrl": "{+license}"},
13
+ {"titles": "shortdesc", "lang": "en"},
14
+ {"titles": "description", "lang": "en"},
15
+ {"titles": "created", "datatype": {"base": "date", "format": "M/d/yyyy"}},
16
+ {"titles": "programming_language", "propertyUrl": "http://usefulinc.com/ns/doap#programming-language"},
17
+ {"titles": "implements", "valueUrl": "{+implements}"},
18
+ {"titles": "category", "valueUrl": "{+category}"},
19
+ {"titles": "download_page", "propertyUrl": "http://usefulinc.com/ns/doap#download-page", "valueUrl": "{+download_page}"},
20
+ {"titles": "mailing_list", "propertyUrl": "http://usefulinc.com/ns/doap#mailing-list", "valueUrl": "{+mailing_list}"},
21
+ {"titles": "bug_database", "propertyUrl": "http://usefulinc.com/ns/doap#bug-database", "valueUrl": "{+bug_database}"},
22
+ {"titles": "blog", "valueUrl": "{+blog}"},
23
+ {"titles": "developer", "valueUrl": "{+developer}"},
24
+ {"titles": "maintainer", "valueUrl": "{+maintainer}"},
25
+ {"titles": "documenter", "valueUrl": "{+documenter}"},
26
+ {"titles": "maker", "propertyUrl": "foaf:maker", "valueUrl": "{+maker}"},
27
+ {"titles": "dc_title", "propertyUrl": "dc:title"},
28
+ {"titles": "dc_description", "propertyUrl": "dc:description", "lang": "en"},
29
+ {"titles": "dc_date", "propertyUrl": "dc:date", "datatype": {"base": "date", "format": "M/d/yyyy"}},
30
+ {"titles": "dc_creator", "propertyUrl": "dc:creator", "valueUrl": "{+dc_creator}"},
31
+ {"titles": "isPartOf", "propertyUrl": "dc:isPartOf", "valueUrl": "{+isPartOf}"}
32
32
  ]
33
33
  }
34
34
  }