#version #modeling #domain #module #language #model #sdml

sdml-core

Core Model for Simple Domain Modeling Language (SDML)

21 releases

0.2.15 Feb 21, 2024
0.2.14 Feb 20, 2024
0.2.9 Jan 31, 2024
0.2.0 Nov 1, 2023
0.1.6 Jul 28, 2023

#6 in #sdml

32 downloads per month
Used in 3 crates

Custom license

585KB
12K SLoC

#+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://docs.rs/sdml_core]

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]].

Dependencies

~12–24MB
~332K SLoC