From f5ca1f70edc500c89881fc9bb1e0cbf1e1fc1375 Mon Sep 17 00:00:00 2001 From: Thomas Krause Date: Tue, 6 Aug 2024 15:24:44 +0200 Subject: [PATCH] Map corpus/document annotations but do not map the ones of the "salt" namespace --- src/importer/saltxml/corpus_structure.rs | 43 +- src/importer/saltxml/document.rs | 1 + ...ltxml__tests__read_salt_sample_corpus.snap | 875 ++++++----- ...ltxml__tests__read_salt_with_timeline.snap | 1358 ++++++++--------- 4 files changed, 1143 insertions(+), 1134 deletions(-) diff --git a/src/importer/saltxml/corpus_structure.rs b/src/importer/saltxml/corpus_structure.rs index ae1248f5..1822139e 100644 --- a/src/importer/saltxml/corpus_structure.rs +++ b/src/importer/saltxml/corpus_structure.rs @@ -8,7 +8,7 @@ use graphannis::{ use graphannis_core::graph::ANNIS_NS; use itertools::Itertools; -use super::{get_element_id, get_features, resolve_element, SaltObject, SaltType}; +use super::{get_annotations, get_element_id, get_features, resolve_element, SaltObject, SaltType}; pub(super) struct SaltCorpusStructureMapper {} @@ -38,8 +38,6 @@ impl SaltCorpusStructureMapper { .children() .filter(|t| t.tag_name().name() == "sCorpusGraphs") { - // TODO: map corpus graph labels - // Get all nodes let nodes = cg .children() @@ -74,15 +72,17 @@ impl SaltCorpusStructureMapper { feature_node.attribute("value").unwrap_or_default(), ); - if annos_ns == Some("salt") && anno_name == "SNAME" { - // Only map this specific feature as document name - if salt_type == SaltType::Document { - updates.add_event(UpdateEvent::AddNodeLabel { - node_name: node_name.to_string(), - anno_ns: ANNIS_NS.to_string(), - anno_name: "doc".to_string(), - anno_value: anno_value.to_string(), - })?; + if annos_ns == Some("salt") { + if anno_name == "SNAME" { + // Only map this specific feature as document name + if salt_type == SaltType::Document { + updates.add_event(UpdateEvent::AddNodeLabel { + node_name: node_name.to_string(), + anno_ns: ANNIS_NS.to_string(), + anno_name: "doc".to_string(), + anno_value: anno_value.to_string(), + })?; + } } } else { updates.add_event(UpdateEvent::AddNodeLabel { @@ -93,8 +93,25 @@ impl SaltCorpusStructureMapper { })?; } } + // Add annotations + for anno_node in get_annotations(node) { + let annos_ns = anno_node.attribute("namespace"); + if annos_ns != Some("salt") { + let anno_name = anno_node.attribute("name").ok_or_else(|| { + anyhow!("Missing \"name\" attribute for node \"{node_name}\"") + })?; + let anno_value = SaltObject::from( + anno_node.attribute("value").unwrap_or_default(), + ); - // TODO: map annotations (that are not features) + updates.add_event(UpdateEvent::AddNodeLabel { + node_name: node_name.to_string(), + anno_ns: annos_ns.unwrap_or_default().to_string(), + anno_name: anno_name.to_string(), + anno_value: anno_value.to_string(), + })?; + } + } } _ => {} } diff --git a/src/importer/saltxml/document.rs b/src/importer/saltxml/document.rs index 99dc243c..c43d025c 100644 --- a/src/importer/saltxml/document.rs +++ b/src/importer/saltxml/document.rs @@ -211,6 +211,7 @@ impl<'a, 'input> DocumentMapper<'a, 'input> { } fn map_media_datasources(&mut self, updates: &mut GraphUpdate) -> Result<()> { + // TODO: Map time codes from the SAudioRelation as annis::time for media_node in self .nodes .iter() diff --git a/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_sample_corpus.snap b/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_sample_corpus.snap index 6a432ff9..ec0cf4f0 100644 --- a/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_sample_corpus.snap +++ b/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_sample_corpus.snap @@ -5,684 +5,679 @@ expression: actual - - - - - - - - - + + + + + + + + - corpus + corpus - corpus + corpus - corpus + corpus - file:/home/thomas/korpora/SaltSampleCorpus/rootCorpus/subCorpus1/doc1.salt - doc1 - corpus + doc1 + corpus - file:/home/thomas/korpora/SaltSampleCorpus/rootCorpus/subCorpus1/doc2.salt - doc2 - corpus + doc2 + corpus - file:/home/thomas/korpora/SaltSampleCorpus/rootCorpus/subCorpus2/doc3.salt - doc3 - corpus + doc3 + corpus - file:/home/thomas/korpora/SaltSampleCorpus/rootCorpus/subCorpus2/doc4.salt - doc4 - corpus + doc4 + corpus - datasource + datasource - morphology - be - node - VBZ - Is - + morphology + be + node + VBZ + Is + - morphology - this - node - DT - this - + morphology + this + node + DT + this + - morphology - example - node - NN - example - + morphology + example + node + NN + example + - morphology - more - node - RBR - more - + morphology + more + node + RBR + more + - morphology - complicated - node - JJ - complicated - + morphology + complicated + node + JJ + complicated + - morphology - than - node - IN - than - + morphology + than + node + IN + than + - morphology - it - node - PRP - it - + morphology + it + node + PRP + it + - morphology - appear - node - VBZ - appears - + morphology + appear + node + VBZ + appears + - morphology - to - node - TO - to - + morphology + to + node + TO + to + - morphology - be - node - VB - be + morphology + be + node + VB + be - morphology - ? - node - . - ? + morphology + ? + node + . + ? contrast-focus - node + node topic - node + node - ROOT - syntax - node + ROOT + syntax + node - SQ - syntax - node + SQ + syntax + node - NP - syntax - node + NP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - SBar - syntax - node + SBar + syntax + node - S - syntax - node + S + syntax + node - NP - syntax - node + NP + syntax + node - VP - syntax - node + VP + syntax + node - S - syntax - node + S + syntax + node - VP - syntax - node + VP + syntax + node - VP - syntax - node + VP + syntax + node - node + node - datasource + datasource - morphology - be - node - VBZ - Is - + morphology + be + node + VBZ + Is + - morphology - this - node - DT - this - + morphology + this + node + DT + this + - morphology - example - node - NN - example - + morphology + example + node + NN + example + - morphology - more - node - RBR - more - + morphology + more + node + RBR + more + - morphology - complicated - node - JJ - complicated - + morphology + complicated + node + JJ + complicated + - morphology - than - node - IN - than - + morphology + than + node + IN + than + - morphology - it - node - PRP - it - + morphology + it + node + PRP + it + - morphology - appear - node - VBZ - appears - + morphology + appear + node + VBZ + appears + - morphology - to - node - TO - to - + morphology + to + node + TO + to + - morphology - be - node - VB - be + morphology + be + node + VB + be - morphology - ? - node - . - ? + morphology + ? + node + . + ? contrast-focus - node + node topic - node + node - ROOT - syntax - node + ROOT + syntax + node - SQ - syntax - node + SQ + syntax + node - NP - syntax - node + NP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - SBar - syntax - node + SBar + syntax + node - S - syntax - node + S + syntax + node - NP - syntax - node + NP + syntax + node - VP - syntax - node + VP + syntax + node - S - syntax - node + S + syntax + node - VP - syntax - node + VP + syntax + node - VP - syntax - node + VP + syntax + node - node + node - datasource + datasource - morphology - be - node - VBZ - Is - + morphology + be + node + VBZ + Is + - morphology - this - node - DT - this - + morphology + this + node + DT + this + - morphology - example - node - NN - example - + morphology + example + node + NN + example + - morphology - more - node - RBR - more - + morphology + more + node + RBR + more + - morphology - complicated - node - JJ - complicated - + morphology + complicated + node + JJ + complicated + - morphology - than - node - IN - than - + morphology + than + node + IN + than + - morphology - it - node - PRP - it - + morphology + it + node + PRP + it + - morphology - appear - node - VBZ - appears - + morphology + appear + node + VBZ + appears + - morphology - to - node - TO - to - + morphology + to + node + TO + to + - morphology - be - node - VB - be + morphology + be + node + VB + be - morphology - ? - node - . - ? + morphology + ? + node + . + ? contrast-focus - node + node topic - node + node - ROOT - syntax - node + ROOT + syntax + node - SQ - syntax - node + SQ + syntax + node - NP - syntax - node + NP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - SBar - syntax - node + SBar + syntax + node - S - syntax - node + S + syntax + node - NP - syntax - node + NP + syntax + node - VP - syntax - node + VP + syntax + node - S - syntax - node + S + syntax + node - VP - syntax - node + VP + syntax + node - VP - syntax - node + VP + syntax + node - node + node - datasource + datasource - morphology - be - node - VBZ - Is - + morphology + be + node + VBZ + Is + - morphology - this - node - DT - this - + morphology + this + node + DT + this + - morphology - example - node - NN - example - + morphology + example + node + NN + example + - morphology - more - node - RBR - more - + morphology + more + node + RBR + more + - morphology - complicated - node - JJ - complicated - + morphology + complicated + node + JJ + complicated + - morphology - than - node - IN - than - + morphology + than + node + IN + than + - morphology - it - node - PRP - it - + morphology + it + node + PRP + it + - morphology - appear - node - VBZ - appears - + morphology + appear + node + VBZ + appears + - morphology - to - node - TO - to - + morphology + to + node + TO + to + - morphology - be - node - VB - be + morphology + be + node + VB + be - morphology - ? - node - . - ? + morphology + ? + node + . + ? contrast-focus - node + node topic - node + node - ROOT - syntax - node + ROOT + syntax + node - SQ - syntax - node + SQ + syntax + node - NP - syntax - node + NP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - ADJP - syntax - node + ADJP + syntax + node - SBar - syntax - node + SBar + syntax + node - S - syntax - node + S + syntax + node - NP - syntax - node + NP + syntax + node - VP - syntax - node + VP + syntax + node - S - syntax - node + S + syntax + node - VP - syntax - node + VP + syntax + node - VP - syntax - node + VP + syntax + node - node + node diff --git a/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_with_timeline.snap b/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_with_timeline.snap index f2c40a9f..80744d6a 100644 --- a/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_with_timeline.snap +++ b/src/importer/saltxml/snapshots/annatto__importer__saltxml__tests__read_salt_with_timeline.snap @@ -4,1313 +4,1309 @@ expression: actual --- - - - - - - - - - - - - + + + + + + + + + + - corpus + corpus - - file:/tmp/pepper_thomas/workspace/rdr3o1mf/dialog.demo5661470868672726454.salt - dialog.demo - corpus + dialog.demo + corpus - datasource + datasource - datasource + datasource - tests/data/import/salt/dialog.demo/dialog.demo/dialog.demo.webm - file + tests/data/import/salt/dialog.demo/dialog.demo/dialog.demo.webm + file - node - naja - naja + node + naja + naja - node - pass - pass + node + pass + pass - node - auf - auf + node + auf + auf - node - also - also + node + also + also - node - du - du + node + du + du - node - hast - hast + node + hast + hast - node - jetz - jetz + node + jetz + jetz - node - wohl - wohl + node + wohl + wohl - node - hier - hier + node + hier + hier - node - auch - auch + node + auch + auch - node - so - so + node + so + so - node - ne - ne + node + ne + ne - node - Karte - Karte + node + Karte + Karte - node - wie - wie + node + wie + wie - node - ich - ich + node + ich + ich - node - bloß - bloß + node + bloß + bloß - node - ich - ich + node + ich + ich - node - hab - hab + node + hab + hab - node - ne - ne + node + ne + ne - node - Linie - Linie + node + Linie + Linie - node - und - und + node + und + und - node - du - du + node + du + du - node - nich - nich + node + nich + nich - node - eine - eine + node + eine + eine - node - genau - genau + node + genau + genau - node - und - und + node + und + und - node - ich - ich + node + ich + ich - node - muss - muss + node + muss + muss - node - dir - dir + node + dir + dir - node - jetzt - jetzt + node + jetzt + jetzt - node - erklärn - erklärn + node + erklärn + erklärn - node - wie - wie + node + wie + wie - node - du - du + node + du + du - node - vom - vom + node + vom + vom - node - Start - Start + node + Start + Start - node - zum - zum + node + zum + zum - node - Ziel - Ziel + node + Ziel + Ziel - node - kommst - kommst + node + kommst + kommst - node - so - so + node + so + so - node - wie - wie + node + wie + wie - node - meine - meine + node + meine + meine - node - Linie - Linie + node + Linie + Linie - node - geht - geht + node + geht + geht - node - so - so + node + so + so - node - also - also + node + also + also - node - du - du + node + du + du - node - hast - hast + node + hast + hast - node - n - n + node + n + n - node - Stift - Stift + node + Stift + Stift - node - okay - okay + node + okay + okay - node - aso - aso + node + aso + aso - node - du - du + node + du + du - node - musst - musst + node + musst + musst - node - jetzt - jetzt + node + jetzt + jetzt - node - vom - vom + node + vom + vom - node - Startpunkt - Startpunkt + node + Startpunkt + Startpunkt - node - äh - äh + node + äh + äh - node - waagerecht - waagerecht + node + waagerecht + waagerecht - node - Richtung - Richtung + node + Richtung + Richtung - node - also - also + node + also + also - node - zu - zu + node + zu + zu - node - dem - dem + node + dem + dem - node - ersten - ersten + node + ersten + ersten - node - Bild - Bild + node + Bild + Bild - node - erstmal - erstmal + node + erstmal + erstmal - node - und - und + node + und + und - node - zum - zum + node + zum + zum - node - Rad - Rad + node + Rad + Rad - node + node + äh äh - äh - node + node + ((lacht)) ((lacht)) - ((lacht)) - node + node + fang fang - fang - node + node + einfach einfach - einfach - node + node + ma ma - ma - node + node + an an - an - node + node + ((lacht)) ((lacht)) - ((lacht)) - node + node + nee nee - nee - node + node + ich ich - ich - node + node + hab hab - hab - node + node + gar gar - gar - node + node + keine keine - keine - node + node + Linien Linien - Linien - node + node + ich ich - ich - node + node + hab hab - hab - node + node + Start Start - Start - node + node + und und - und - node + node + Ziel Ziel - Ziel - node + node + genau genau - genau - node + node + jap jap - jap - node + node + mhm mhm - mhm - node + node + zum zum - zum - node + node + (?) (?) - (?) - node + node + Schornsteinfeger Schornsteinfeger - Schornsteinfeger - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - + node + - node - naja + node + naja - node - pass + node + pass - node - auf + node + auf - node - also + node + also - node - du + node + du - node - hast + node + hast - node - jetzt + node + jetzt - node - wohl + node + wohl - node - hier + node + hier - node - auch + node + auch - node - so + node + so - node - eine + node + eine - node - Karte + node + Karte - node - wie + node + wie - node - ich + node + ich - node - bloß + node + bloß - node - ich + node + ich - node - habe + node + habe - node - eine + node + eine - node - Linie + node + Linie - node - und + node + und - node - du + node + du - node - nicht + node + nicht - node - ne + node + ne - node - genau + node + genau - node - und + node + und - node - ich + node + ich - node - muss + node + muss - node - dir + node + dir - node - jetzt + node + jetzt - node - erklären + node + erklären - node - wie + node + wie - node - du + node + du - node - vom + node + vom - node - Start + node + Start - node - zum + node + zum - node - Ziel + node + Ziel - node - kommst + node + kommst - node - so + node + so - node - wie + node + wie - node - meine + node + meine - node - Linie + node + Linie - node - so + node + so - node - also + node + also - node - du + node + du - node - hast + node + hast - node - einen + node + einen - node - Stift + node + Stift - node - okay + node + okay - node - also + node + also - node - du + node + du - node - musst + node + musst - node - jetzt + node + jetzt - node - vom + node + vom - node - Startpunkt + node + Startpunkt - node - äh + node + äh - node - waagerecht + node + waagerecht - node - Richtung + node + Richtung - node - also + node + also - node - zu + node + zu - node - dem + node + dem - node - ersten + node + ersten - node - Bild + node + Bild - node - erstmal + node + erstmal - node - und + node + und - node - zum + node + zum - node - Rad + node + Rad - naja pass auf also du hast jetzt wohl hier auch so ne Karte wie ich bloß ich hab ne Linie und du nich ne - node + node + naja pass auf also du hast jetzt wohl hier auch so ne Karte wie ich bloß ich hab ne Linie und du nich ne - genau - node + node + genau - und ich muss dir jetzt erklären wie du vom Start zum Ziel kommst so wie meine Linie geht - node + node + und ich muss dir jetzt erklären wie du vom Start zum Ziel kommst so wie meine Linie geht - so - node + node + so - also hast n Stift - node + node + also hast n Stift - okay also du musst jetzt vom Startpunkt äh waagerecht Richtung also zu dem ersten Bild erstmal - node + node + okay also du musst jetzt vom Startpunkt äh waagerecht Richtung also zu dem ersten Bild erstmal - und - node + node + und - zum Rad - node + node + zum Rad - node - äh + node + äh - node - fang + node + fang - node - einfach + node + einfach - node - mal + node + mal - node - an + node + an - node - nee + node + nee - node - ich + node + ich - node - habe + node + habe - node - gar + node + gar - node - keine + node + keine - node - Linien + node + Linien - node - ich + node + ich - node - habe + node + habe - node - Start + node + Start - node - und + node + und - node - Ziel + node + Ziel - node - genau + node + genau - node - jap + node + jap - node - mhm + node + mhm - node - zum + node + zum - node - (?) + node + (?) - node - Schornsteinfeger + node + Schornsteinfeger - äh fang einfach ma an - node + node + äh fang einfach ma an - nee ich hab gar keine Linie ich hab Start und Ziel - node + node + nee ich hab gar keine Linie ich hab Start und Ziel - genau - node + node + genau - jap - node + node + jap - zum (?) Schornsteinfeger - node + node + zum (?) Schornsteinfeger