sdml-core 0.2.15

Core Model for Simple Domain Modeling Language (SDML)
Documentation

#+TITLE: Package sdml-core #+AUTHOR: Simon Johnston #+EMAIL: johnstonskj@gmail.com #+LANGUAGE: en #+STARTUP: overview hidestars inlineimages entitiespretty #+OPTIONS: author:nil created:nil creator:nil date:nil email:nil num:3 toc:nil

Rust in-Memory model of the Simple Domain Modeling Language (SDML).

[[https://crates.io/crates/sdml_core][https://img.shields.io/crates/v/sdml_core.svg]] [[https://docs.rs/sdml_core][https://docs.rs/sdml_core/badge.svg]]

This package is part of the Rust SDML project and specifically defines the in-memory model of an SDML module. The project's intent is to provide an idiomatic implementation of the in-memory model, parser, generators, and the CLI tool.

The following figure demonstrates this package in the broader project context.

#+CAPTION: Package Organization #+BEGIN_EXAMPLE ╭───────╮ │ CLI │ ╔══ │ crate │ ══╗ ║ ╰───────╯ ║ ┌╌╌╌╌╌╌╌╌┐ V V ┆ ┆ ╭───────╮ ╭──────────╮ Formatted Source ┆ source ┆ ══> │ parse │ ══> │ generate │ ══> RDF Representation ┆ file ┆ ╭───│ crate │───────│ crate │───╮ Documentation ┆ ┆ │ ╰───────╯ ╰──────────╯ │ Diagrams └╌╌╌╌╌╌╌╌┘ │ core crate │ ╰──────────────────────────────────╯ ┌───────┐ ⋀ │ other │ ║ │ tools │ ════════════════╝ └───────┘ #+END_EXAMPLE

Note that other tools can use the =sdml_core= API to create or manipulate models.

  • Changes

Version 0.2.15

  • Fix: =Identifier::from_str= should allow type names.

Version 0.2.14

  • Feature: add new =ModuleStore= trait, implemented by =ModuleCache=.

While not advantageous immediately, it mirrors the separation of trait and implementation that worked well for =ModuleLoader= and =ModuleResolver=.

Version 0.2.13

  • Feature: add new validation for =IdentifierNotPreferredCase=, to enforce case conventions.

Version 0.2.12

  • Feature: more term validation, mainly to reduce the number of =todo!()= panics.

Version 0.2.11

  • Refactor: moved errors and diagnostics to new crate =sdml_error=.
  • Feature: started on diagnostics and verification, working but incomplete.
  • Added: =deprecated= terminology validation.

Version 0.2.10

  • Feature: Add new stdlib modules =iso_3166= for country codes, and =iso_4217= for currency codes.
  • Style: Shortened stdlib constant names for readability.
  • Fix: Correct the regex for identifiers, now in sync with the grammar.

Version 0.2.9

  • Fix: Cardinality parser set incorrect default values.
    • Update: the =with_= constructors on =Cardinality= to take option types.

Version 0.2.8

  • Feature: Add more to the SDML standard library module as needed for RDF generator.

Version 0.2.7

Clean-up release.

  • Added new =import!= macro for stdlib modules.
  • Removed debugging =println!= calls.
  • Fixed compiler warnings and fmt issues.

Version 0.2.6

  • Feat: Added more to the =sdml= stdlib module.
  • Feat: Added helpers =is_stdlib_property= and =is_datatype_facet= to =AnnotationProperty=.
  • Feat: Added new =AnnotationBuilder= trait and impls on most definitions to allow easy adding of annotation properties.
  • Feat: Added helper methods to =ModuleCache= to make it more collection-like.

Version 0.2.5

  • Feature: Implemented the core standard library modules.
    • =dc= (elements) -- Complete.
    • =dc_terms= -- Not started.
    • =dc_am= -- Not started.
    • =dc_type= -- Not started.
    • =owl= -- Complete.
    • =rdf= -- Complete.
    • =rdfs= -- Complete.
    • =sdml= -- Mostly complete.
    • =skos= -- Complete.
    • =xsd= (part 2) -- Complete.

This change affects the =ModuleCache= as well, it's =with_stdlib= constructor will include all the library modules and their definitions. This can be checked out with the command-line tool to either draw diagrams of the standard library modules or convert into s-expressions, etc.

Version 0.2.4

  • Feature: add new stdlib modules with standard layout.
  • Feature: minor refactor of cache and loader.

Version 0.2.3

  • Feature: Update to latest grammar for version URIs and RDF definitions.

Version 0.2.2

  • Feature: Add initial support for versioned modules.
    • Remove =base= keyword.
    • Add new optional =version= keyword after module URI with:
      • optional version string that becomes =owl:versionInfo=.
      • version URI that becomes =owl:verionIRI=.
  • Feature: Add new RDF structure/property definitions.
    • Add new keyword =rdf= followed by either =structure= or =property= with name and annotation body.
    • Extended =SimpleModuleWalker= with support for RDF class/property definitions.

Version 0.2.1

  • Feature: Remove member groups.

Version 0.2.0

  • Feature: Update to latest grammar.
    • Remove Value Variant numeric values.
    • Update formal constraints.
    • Add type classes.

Version 0.1.11

  • Feature: Update =Cardinality::to_uml_string= to output constraints.
  • Fix: Missing features in mapping types and values.

Version 0.1.10

  • Feature: Added support for =mapping_type= and =mapping_value= rules.

Version 0.1.9

  • Style: Run Cargo format and clippy.

Version 0.1.8

  • Feature: Made the name for constraints required, not =Option=.
  • Style: Remove most macros from the model.

Version 0.1.7

  • Fix: Minor fixes.

Version 0.1.6

  • Build: Updated parser with grammar changes in =tree-sitter-sdml= version =0.1.29=

Version 0.1.6

  • Build: Updated parser with grammar changes in =tree-sitter-sdml= version =0.1.26=

Version 0.1.5

  • Created a =stdlib= module and moved all the SDML and relevant RDF files into it.
  • Updated model to the same level as =tree-sitter-sdml= version =0.1.21=.
  • Updated =tree-sitter-sdml= dependency with updated constraints.
    • Renamed =TypeDefinition= to =Definition= to address the fact that property definitions aren't types.
    • Renamed =EnumVariant= to =ValueVariant= to align with =TypeVariant= on unions. This required change to walker methods.

Version 0.1.4

Previously part of a single crate [[https://crates.io/crates/sdml][sdml]].