This commit is contained in:
2026-08-05 18:33:30 -04:00
parent 7ce5ed118d
commit cd47d868c1
20 changed files with 307 additions and 181 deletions
+29 -3
View File
@@ -12,6 +12,7 @@ pub use tantivy::schema::document::{Document, Value};
pub use tantivy::indexer::IndexWriter;
pub use error::{Result, SearchError};
use gl_graph::vocab;
pub use index::{SearchIndex, SearchIndexBuilder};
pub use schema::Schema;
@@ -20,12 +21,37 @@ pub enum DocType {
RdfsClass = 1,
SkosConcept = 2,
Person = 3,
CorporateBody = 4,
Work = 5,
Expression = 6,
Manifestation = 7,
}
impl DocType {
pub fn from_named_node(node: NamedNodeRef) -> Option<Self> {
match node.as_str() {
"http://rdaregistry.info/Elements/c/C10004" => Some(DocType::Person),
pub fn to_named_node(&self) -> NamedNodeRef<'_> {
match self {
DocType::RdfProperty => vocab::rdf::PROPERTY,
DocType::RdfsClass => vocab::rdfs::CLASS,
DocType::SkosConcept => vocab::skos::CONCEPT,
DocType::Person => vocab::rdac::PERSON,
DocType::CorporateBody => vocab::rdac::CORPORATE_BODY,
DocType::Work => vocab::rdac::WORK,
DocType::Expression => vocab::rdac::EXPRESSION,
DocType::Manifestation => vocab::rdac::MANIFESTATION,
}
}
pub fn from_named_node<'a>(node: impl Into<NamedNodeRef<'a>>) -> Option<Self> {
let node = node.into();
match node {
vocab::rdf::PROPERTY => Some(DocType::RdfProperty),
vocab::rdfs::CLASS => Some(DocType::RdfsClass),
vocab::skos::CONCEPT => Some(DocType::SkosConcept),
vocab::rdac::PERSON => Some(DocType::Person),
vocab::rdac::CORPORATE_BODY => Some(DocType::CorporateBody),
vocab::rdac::WORK => Some(DocType::Work),
vocab::rdac::EXPRESSION => Some(DocType::Expression),
vocab::rdac::MANIFESTATION => Some(DocType::Manifestation),
_ => None,
}
}