Skip to content

Commit c382457

Browse files
committed
make every row a new ID
1 parent 00ea5a8 commit c382457

5 files changed

Lines changed: 32 additions & 10 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/target

Cargo.lock

Lines changed: 23 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ csv = "1.3.1"
1010
log = "0.4.22"
1111
oxrdf = "0.2.3"
1212
oxrdfio = "0.1.3"
13+
uuid = { version = "1.11.0", features = ["v4", "fast-rng", "macro-diagnostics"] }

src/convert.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use convert_case::{Case, Casing};
55
use csv::ReaderBuilder;
66
use log::error;
77
use oxrdf::{NamedNode, TermRef, TripleRef};
8+
use uuid::Uuid;
89

910
const C2R: &'static str = "https://decisym.ai/csv2rdf/model#";
1011

@@ -42,20 +43,16 @@ pub fn parse_csv(
4243

4344
for result in rdr.records() {
4445
let record = result.unwrap();
45-
let mut row_id = "".to_string();
46+
let id = Uuid::new_v4().hyphenated().to_string();
47+
let subject = NamedNode::new(format!("{ns}{id}")).unwrap();
4648
column_index = 0;
4749
for field in record.iter() {
48-
if column_index == 0 {
49-
row_id = field.trim().replace(" ", "");
50-
}
51-
// do not append empty cells
52-
else if field != "" {
50+
if field != "" {
5351
let column_id = headers.get(&column_index).unwrap();
54-
let subject = NamedNode::new(format!("{}{}", ns, row_id)).unwrap();
5552
let predicate = NamedNode::new(format!("{}{}", C2R, column_id)).unwrap();
5653
let object = TermRef::Literal(field.into());
5754
let csv_triple = TripleRef::new(subject.as_ref(), predicate.as_ref(), object);
58-
output.add_triple(csv_triple)?
55+
output.add_triple(csv_triple)?;
5956
}
6057
column_index += 1;
6158
}

tests/integration.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ fn test_graph_writer() {
1616
);
1717
assert!(res.is_ok());
1818

19-
assert_eq!(g.len(), 23)
19+
assert_eq!(g.len(), 27)
2020
}
2121

2222
#[test]
@@ -38,5 +38,5 @@ fn test_file_writer() {
3838
.collect::<Result<Vec<_>, _>>()
3939
.expect("failed to parse generated output file");
4040

41-
assert_eq!(quads.len(), 23)
41+
assert_eq!(quads.len(), 27)
4242
}

0 commit comments

Comments
 (0)