kgdata 4.0.1

Library to process dumps of knowledge graphs (Wikipedia, DBpedia, Wikidata)
Documentation
use super::multilingual::{MultiLingualString, MultiLingualStringList};
use super::value::Value;
use hashbrown::HashMap;
use pyo3::prelude::*;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Entity {
    pub id: String,
    pub label: MultiLingualString,
    pub description: MultiLingualString,
    pub aliases: MultiLingualStringList,
    pub props: HashMap<String, Vec<Statement>>,
}

#[pyclass(module = "kgdata.core.models", name = "StatementRank")]
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)]
pub enum StatementRank {
    #[serde(rename = "normal")]
    Normal,
    #[serde(rename = "preferred")]
    Preferred,
    #[serde(rename = "deprecated")]
    Deprecated,
}

impl StatementRank {
    pub fn to_str(&self) -> &'static str {
        match self {
            StatementRank::Normal => "normal",
            StatementRank::Preferred => "preferred",
            StatementRank::Deprecated => "deprecated",
        }
    }

    pub fn intersect(&self, another: &StatementRank) -> StatementRank {
        match self {
            StatementRank::Normal => match another {
                StatementRank::Normal => StatementRank::Normal,
                StatementRank::Preferred => StatementRank::Normal,
                StatementRank::Deprecated => StatementRank::Deprecated,
            },
            StatementRank::Preferred => match another {
                StatementRank::Normal => StatementRank::Normal,
                StatementRank::Preferred => StatementRank::Preferred,
                StatementRank::Deprecated => StatementRank::Deprecated,
            },
            StatementRank::Deprecated => StatementRank::Deprecated,
        }
    }
}

#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Statement {
    pub value: Value,
    pub qualifiers: HashMap<String, Vec<Value>>,
    pub qualifiers_order: Vec<String>,
    pub rank: StatementRank,
}