nostralink 0.2.4

Linked data library for nostr
Documentation
use crate::oxistore::result_set::*;
use oxigraph::model::vocab::xsd;
use oxigraph::model::*;

impl RdfCellValue {
    fn new_cellvalue_from_term(
        term: &Term,
    ) -> Result<Self, Box<dyn std::error::Error>> {
        match term {
            Term::NamedNode(iri) => {
                return Ok(RdfCellValue::Node(iri.clone().into_string()));
            }
            Term::BlankNode(_bnode) => {
                return Ok(RdfCellValue::Blank());
            }
            Term::Literal(literal) => match literal.datatype() {
                xsd::INTEGER => {
                    let value_str = literal.value();
                    return Ok(RdfCellValue::Int(
                        value_str.parse::<i32>().unwrap(),
                    ));
                }
                xsd::UNSIGNED_INT => {
                    let value_str = literal.value();
                    return match value_str.parse::<u32>() {
                        Ok(uint) => Ok(RdfCellValue::UnsignedInt(uint)),
                        Err(_) => Err(Box::from("Invalid uint")),
                    };
                }
                xsd::FLOAT => {
                    let value_str = literal.value();
                    return Ok(RdfCellValue::Float(
                        value_str.parse::<f64>().unwrap(),
                    ));
                }
                xsd::STRING => {
                    return Ok(RdfCellValue::Text(literal.value().to_string()));
                }
                _ => {
                    return Ok(RdfCellValue::Text(literal.value().to_string()));
                }
            },
            Term::Triple(_var) => {}
        }

        Ok(RdfCellValue::Blank())
    }
}

impl RdfCell {
    pub fn new_cell_from_value_term(
        variable: &Variable,
        term: &Term,
    ) -> Result<Self, Box<dyn std::error::Error>> {
        Ok(RdfCell {
            name: variable.clone().into_string(),
            value: RdfCellValue::new_cellvalue_from_term(term).unwrap(),
        })
    }
}