asdi 0.2.5

Another Simplistic Datalog Implementation (in Rust)
Documentation
@startuml

!include options.plantuml

interface asdi::AttributeName
hide "asdi::AttributeName" members

interface asdi::Collection<T>
hide "asdi::Collection" members

interface asdi::IndexedCollection<K,V>
hide "asdi::IndexedCollection" members

interface asdi::Labeled
hide "asdi::Labeled" members

interface asdi::MaybeAnonymous
hide "asdi::MaybeAnonymous" members

interface asdi::MaybeLabeled<T : AttributeName>
hide "asdi::MaybeLabeled" members

interface asdi::idb::query::Queryable
hide "asdi::idb::query::Queryable" members

class asdi::edb::io::FilePragma
hide "asdi::edb::io::FilePragma" members

namespace asdi::edb {
    class Attribute<T: AttributeName>
    class Fact
    class Predicate
    class Relation
    class RelationSet
    class Schema<T: AttributeName>
    class Number <<opaque>>
    class FunctionalDependency
    class PredicateRef << (T,#ADD1B2) type >>

    PredicateRef o-> Predicate

    enum AttributeIndex<T: AttributeName> {
        Label : T
        Index : usize
    }
    enum AttributeKind {
        Boolean
        Integer
        Float
        String
    }
    enum Constant {
        Boolean : bool
        Number : Number
        String : String
    }

    Attribute .down.|> asdi::MaybeAnonymous
    Attribute ..|> asdi::MaybeLabeled
    Attribute *--> asdi::AttributeName
    Attribute *--> AttributeKind

    Constant .up.> AttributeKind
    Constant *-right> Number

    Fact ..|> asdi::Collection
    Fact ..|> asdi::IndexedCollection
    Fact ..|> asdi::Labeled
    Fact o-> PredicateRef
    Fact *-up-> "*" Constant
  ' Fact ..|> asdi::idb::query::relational::FactOps

    Predicate ..|> asdi::AttributeName

    Relation ..|> asdi::Collection
    Relation ..|> asdi::IndexedCollection
    Relation ..|> asdi::Labeled
    Relation .up.|> asdi::idb::query::Queryable
    Relation o-> Predicate
    Relation *-> Schema
    Relation *-> "*" Fact
    Relation *-up-> "?" asdi::edb::io::FilePragma
    Relation *-up-> "*" FunctionalDependency

    RelationSet ..|> asdi::Collection
    RelationSet ..|> asdi::IndexedCollection
    RelationSet .up.|> asdi::idb::query::Queryable
    RelationSet *-> "*" Relation

    Schema ..|> asdi::Collection
    Schema ..|> asdi::IndexedCollection
    Schema *-> "*" Attribute
    Schema .up.> AttributeIndex
}


@enduml