55 个版本
| 0.3.2 | 2024年7月2日 |
|---|---|
| 0.2.16 | 2024年1月19日 |
| 0.2.7 | 2023年12月20日 |
| 0.2.6 | 2023年10月20日 |
| 0.1.26 | 2023年7月28日 |
37 在 文本编辑器
32 每月下载量
用于 4 crates
495KB
17K SLoC
Tree-Sitter 的 SDML 语法
Simple Domain Modeling Language (SDML) 的 tree-sitter 语法。有关该语言的更多信息,请参阅 文档。
示例
module campaign base <https://advertising.amazon.com/api-model> is
import [dc skos xsd]
@skos:prefLabel = "Campaign sub-domain"@en
@skos:version = xsd:decimal(2)
datatype Name <- xsd:string is
@xsd:minLength = 5
@xsd:maxLength = 25
end
datatype Identifier <- opaque xsd:string is
@xsd:length = 20
end
property CampaignId -> Identifier is
@skos:prefLabel = [
"Campaign Identifier"@en
"Identified de campagne"@fr
]
@skos:description = "The globally unique identifier for a Campaign entity"@en
end
structure Tag is
key -> xsd:NMTOKEN
value -> {0..} rdfs:langStrings
end
entity Campaign is
identity ref CampaignId
name -> Name is
@skos:definition = "the name of the campaign"@en
end
tag -> {0..} Tag
target -> {1..} Target
end
entity Target
end
绑定
以下绑定与源代码版本升级版本一起构建和发布。tree-sitter 工具还生成 C、Go 和 Swift 的绑定,这些绑定未构建和发布到任何仓库。
Node 绑定发布到 npmjs,可以使用 npm 命令直接安装,或将其作为项目依赖项。
〉npm install -g tree_sitter_sdml
Python 绑定发布到 PyPI,可以使用任何标准工具安装,例如 pip。
〉pip3 install tree_sitter_sdml
Rust 绑定发布到 crates.io,可以通过 cargo 以常规方式安装。
〉cargo install tree_sitter_sdml
许可证
本软件包根据 Apache 许可证,版本 2.0 发布。有关详细信息,请参阅 LICENSE 文件。
变更
版本:0.3.2
- 功能:更改
module的 良好性规则,不允许将rdf_def和type_class_def定义添加到非库模块。 - 功能:完全删除规则
feature_reference,并在规则type_reference中的引用。
type_reference: $ => choice(
$.unknown_type,
$.identifier_reference,
$.builtin_simple_type,
$.mapping_type
),
版本:0.3.1**
- 修复:字符串内部字符的正则表达式。
- 添加
examples/escaped_strings.sdm文件以进行基本测试。 - 添加
test/corpus/escaped_strings.sdm文件以进行更完整的测试。
- 添加
版本:0.3.0
- 功能:简化属性定义。
- 删除了角色概念,一个
property_def是唯一的。 - 删除了 "in" 关键字,
property_ref使用 "ref"。 - 删除了逆名称。
- 删除了角色概念,一个
property_def: $ => seq(
keyword('property'),
$.member_def
),
- 功能:统一
member的单一定义。- 更改成员,现在是 either
property_ref或member_def。 - 将
property_def更改为member_def。 - 将
entity_identity更改为member。 - 预期将添加对实体标识符非约束性基数的不确定警告。
- 更改成员,现在是 either
entity_identity: $ => seq(
keyword('identity'),
$.member
),
member: $ => choice(
$.member_def,
$.property_ref,
),
member_def: $ => seq(
field('name', $.identifier),
$._type_expression_to,
optional(field('body', $.annotation_only_body))
),
property_ref: $ => seq(
keyword('ref'),
field('property', $.identifier_reference),
),
版本:0.2.14-16
- 功能:简化
rdf_def的形式。
版本:0.2.13
- 功能:向
rdf_def添加可选规则rdf_super_types。
版本:0.2.12
- 重构:将
rdf_thing_def规则简化为rdf_def。
版本:0.2.11
- 修复:将规则
module_import中的字段uri重命名为version_uri。 - 重构:清理测试用例名称以匹配 sdml-parse Rust 库中的名称。
版本:0.2.10
- 功能:为模块添加版本支持。
- 移除
base关键字。 - 添加可选的
version关键字和字符串/IRI 版本信息。 - 在模块导入标识符后添加可选的 IRI。
- 移除
版本:0.2.8/0.2.9
- 功能:更好地支持 RDF 生成。
- 添加对 RDF 结构和属性的直接支持,而不是使用 SDML 结构。
- 参见文件
examples/rdf_schema.sdm
- 参见文件
- 移除关键字
"base",在模块定义中添加新的版本子句。- 参见文件
test/corpus/module_empty_with_version.sdm
- 参见文件
- 添加对 RDF 结构和属性的直接支持,而不是使用 SDML 结构。
版本:0.2.7
- 从语法中移除成员组,因为找不到更好的方法是将成员移动到它们自己的结构中。
版本:0.2.6
- 修复:测试用例中的拼写错误。
版本:0.2.5
- 功能:在类型类中内联类型变量。
版本:0.2.4
- 修复:整理类型类的语法。
版本:0.2.3
- 功能:将规则
sequence_of_predicate_values扩展到与sequence_of_values匹配,包括值构造函数、映射值和标识符引用选项。 - 功能:简化规则
value_variant以删除对无符号值的赋值。 - 功能:将规则
feature_reference更改为包含标识符引用,更新规则_type_expression_to以有feature_reference或type_reference的选择。 - 修复:将字段
byte添加到规则binary中,以帮助解析和突出显示。
同时还有突出显示和示例中的少量更改。
版本:0.2.2
- 功能:为操作符 "?" 添加规则
optional以允许可选值。也添加到类型引用规则中。 - 修复:对类型类进行少量更新。
- 添加:将名称
parameters添加到规则引用type_class_parameters中,在规则type_class_def中列出。 - 重命名:将规则
type_variable_subtype重命名为type_variable_restriction。 - 移除:从规则
type_variable_restriction的顶部移除通配符。 - 添加:在限制中使用加号分隔多个类型的能力。
- 添加:将名称
版本:0.2.1
此版本主要是为了实现 类型类,允许更好地描述标准库的约束。添加此支持确定了函数术语和序列构建器的一些简化。
module example is
class Typed(T) is
def has_type(v -> T) → Type is
@skos:definition = "Returns the SDML type of the passed value."@en
@skos:example = "~type_of(rentals:Customer) = sdml:Entity~"
end
end
end
- 功能:添加用于管理约束语言库的类型类。
- 添加:规则
type_class_def并将其列在definition中的备选方案。 - 添加:规则
method_def并将其包括在type_class_def的成员中。 - 移除:从规则
function_type_reference中移除选择wildcard,通配符仅允许在类型类参数上使用。
- 添加:规则
- 功能:简化规则
quantified_sentence以只包含单个量词变量绑定。- 修改:将
quantified_sentence中的字段binding修改为删除重复项。 - 修改:字段
body从_quantified_body更改为constraint_sentence。 - 重命名:规则
quantifier_bound_names为quantified_variable以表示单数。 - 修改:在
quantified_variable中将字段source更改为使用现有的term。 - 移除:规则
type_iterator和sequence_iterator。
- 修改:将
- 特性:简化序列构建器的结构,使用
quantified_sentence作为主体。- 修改:规则
sequence_builder中的字段body从_variable_binding更改为sequence_builder_body。 - 移除:规则
_variable_binding。 - 添加:规则
sequence_builder_body,该规则简单地引用了规则quantified_sentence。
- 修改:规则
- 特性:添加规则
actual_aruments以用于规则atomic_sentence和functional_term。 - 重构:重命名布尔常量。
- 重命名:将
_boolean_true重命名为boolean_truth。 - 重命名:将
_boolean_false重命名为boolean_falsity。
- 重命名:将
版本:0.2.0
这是一次重大的重构,旨在简化语法,并减少之前看起来不太显著的区分所使用的结构数量。
- 重构:整体简化模型,特别是成员和特性。
- 重构:合并按值和按引用的成员类型。
- 移除:规则
member_by_value和role_by_value。 - 重命名:将规则
member_by_reference重命名为member,将role_by_reference重命名为member_role。 - 移除:从规则
member和member_role中移除关键字ref。 - 重命名:将规则
identity_member重命名为entity_identity。
- 移除:规则
- 重构:合并结构化类型组。
- 重命名:将规则
structure_body重命名为structured_body。 - 重命名:将规则
structure_group重命名为member_group。 - 移动:将结构和实体主体的公共部分移动到公共
_structured_body_inner规则。
- 重命名:将规则
- 重构:将特性从定义移动到成员修饰符。
- 移除:规则
feature_set_def,并相应更新definition。 - 添加:将可选关键字
features添加到规则_type_expression_to中。
- 移除:规则
- 重构:合并按值和按引用的成员类型。
- 特性:在数据类型定义中添加新关键字
opaque。 - 风格:在整个文档中统一使用
:=用于赋值/定义。- 添加:静默规则
_by_definition。 - 修改:修改规则
value_variant、function_def和constant_def以使用_by_definition。
- 添加:静默规则
- 风格:将规则
_property_member重命名为_property_reference。
版本:0.1.42
- 特性:简化
features定义,使其仅限于或/异或。- 替换:使用
UnionBody分隔独立的主体。 - 添加:现在使用基数来确定或/异或。
- 替换:使用
FeatureSetDef
::= "features" Identifier Cardinality? UnionBody?
版本:0.1.41
- 特性:添加对产品线工程特性支持。
- 向规则
definition中添加新的定义规则feature_set_def。 - 向
feature_set_def中添加 和、或、异或 主体。 - 向手册添加基本文档。
- 向规则
- 特性:内置简单类型更新。
- 添加新类型
unsigned。 - 添加新类型
binary。 - 将类型
iri_reference重命名为iri。
- 添加新类型
版本:0.1.40
- 特性:将Unicode字符
↦添加到规则_has_type中,以提高某些排版的兼容性。 - 特性:在
equation旁边添加inequation规则。- 添加新规则
inequation并使其成为simple_sentence中的一个选择。 - 添加不平等关系的规则;
not_equal、less_than、less_than_or_equal、greater_than和greater_than_or_equal。
- 添加新规则
- 重构:将规则
boolean_sentence重新结构化为unary_boolean_sentence和binary_boolean_sentence的选择。- 添加规则
unary_boolean_sentence仅用于否定。 - 添加规则
binary_boolean_sentence用于逻辑连接词。 - 添加每个逻辑连接词的关键字/操作符符号的规则。
- 添加规则
- 重构:将字段
variable_binding重命名为 ``bindingin rulequantieid_sentence`。 - 重构:使用相同的规则在值序列中的空集中。
- 重构:将规则
_function_type_expression_to重命名为_function_type。 - 重构:添加规则
_has_type和_type_restriction并允许ASCII和Unicode箭头。- 添加规则
_has_type用于值->和→。 - 添加规则
_type_restriction用于值<-和←。
- 添加规则
- 修复:新共享绑定的规则名称令人困惑。
- 添加规则
quantified_variable_binding。 - 将规则
quantifier_binding重命名为quantifier_bound_names。
- 添加规则
- 文档:添加包含Unicode使用详细信息的附录。
版本:0.1.39
- 特性:允许在量词句子开头有多个绑定。
- 特性:在突出显示中处理局部作用域方面取得进展。
- 将规则
_constant_def重命名为constant_def。 - 待办事项:当前引用没有获取它们的定义格式。
- 将规则
- 重构:将规则
name_path重命名为function_composition。 - 重构:合并两个规则
quantified_sentence和sequence_builder的组件。- 添加新共享规则
quantifier_binding(附带_bound_name_set),现在在句子和构建器中都使用。 - 添加在绑定中可以有多个名称的能力。
- 添加序列构建器可以有多个量词绑定的能力。
- 将字段
expression改名为body,类型为constraint_sentence。 - 删除规则
expression和conjunctive_expression。
- 添加新共享规则
- 样式:更改规则
predicate_value中选择顺序以匹配value和相应的序列。
版本:0.1.38
- 特性:更新迭代器的命名以使其一致。
- 将规则
iterator_target重命名为iterator_source。 - 将
type_iterator中的字段from重命名为source。 - 将
sequence_iterator中的字段from重命名为source。
- 将规则
版本:0.1.37
- 特性:更新规则
function_cardinality_expression以允许序列约束。- 将规则
any_type重命名为wildcard。 - 删除规则
any_cardinality并用wildcard替换。
- 将规则
- 特性:将列表重命名为序列。
- 将规则
list_of_predicate_values重命名为sequence_of_predicate_values。 - 将规则
list_of_values重命名为sequence_of_values。
- 将规则
- 特性:将规则
property_role作为私有规则重命名为_property_role。 - 特性:允许在序列值上使用序列约束。
- 添加规则
_sequence_value_constraints。 - 将可选的
_sequence_value_constraints添加到规则sequence_of_predicate_values。 - 将可选的
_sequence_value_constraints添加到规则sequence_of_values。
- 添加规则
版本:0.1.36
- 特性:使规则
sequence_comprehension更加灵活。- 将规则
sequence_comprehension重命名为sequence_builder。 - 将规则
returned_value重命名为variables并重新编写为选择 - 添加规则
tuple_variable以返回不同的变量。 - 添加规则
sequence_variable以序列形式返回不同的变量。 - 添加规则
mapping_variable以映射形式返回两个变量。
- 将规则
版本:0.1.35
- 特性:修改规则
_property_member以允许属性名称为identifier_reference。- 新的解释,成员中的字段
name将是角色的名称。 - 重命名关键字
in,而不是as。 - 将字段
role重命名为property并将其类型重命名为identifier_reference。
- 新的解释,成员中的字段
版本:0.1.34
- 特性:更新属性定义,使其更像成员。
- 更新规则
property_role以成为三个新规则的选择。 - 添加规则
identity_role,它是identity_member的子集。 - 添加规则
role_by_value,它是member_by_value的子集。 - 添加规则
role_by_reference,它是member_by_reference的子集。
- 更新规则
版本:0.1.33
- 特性:将量词绑定目标重命名为更一致的形式。
- 将规则
binding_target重命名为iterator_target。 - 将规则
binding_type_reference重命名为type_iterator并将字段名from_type重命名为from。 - 将规则
binding_seq_iterator重命名为sequence_iterator并将字段名from_sequence重命名为from。
- 将规则
- 特性:简化了规则
environment_definition并使命名更一致。- 删除可选的
signature字段 - 删除赋值运算符
- 将字段名
rhs重命名为body并将其更改为function_def或_value_def的选择。 - 添加规则
function_def以保存从环境定义中删除的签名和运算符。 - 将规则
fn_parameter重命名为function_parameter。 - 将规则
_fn_type重命名为_function_type_expression_to。 - 添加规则
function_cardinality_expression和any_cardinality以捕获基数或通配符。 - 添加规则
function_type_reference允许使用通配符。
- 删除可选的
- 特性:更新所有上述更改的查询
highlights、locals和tags。 - 文档:更新所有上述更改的 BNF 语法和图表。
版本:0.1.32
- 特性:更新环境定义序列类型,使其与成员类型和基数使用相同的语法。
版本:0.1.31
- 特性:更新具有对 locals 支持的约束高亮查询。
- 特性:添加一个
locals.scm文件,用于正式约束的作用域。 - 特性:在约束中添加
∅(空集)作为[]的同义词。 - 修复:更新映射值测试用例,使用域/范围字段名。
版本:0.1.30
- 特性(较小):为映射类型和值添加了域和范围字段名。
版本:0.1.29
- 修复:一个明显的回归,构造函数的值从
simple_value更改为value。现在将其改回。
版本:0.1.28
- 特性:添加映射类型和相应的值语法。
版本:0.1.27
- 特性:将 排序 和 唯一性 约束添加到基数表达式中。用于约束成员的序列类型。
版本:0.1.26
- 特性:对 0.1.25 中的更改进行了相同的修改,但针对属性角色。
版本:0.1.25
- 特性:更改了引用成员的语法。
- 已删除生成规则
source_cardinality。 - 已添加生成规则
member_inverse_name。
- 已删除生成规则
版本:0.1.24
- 特性:约束语法更改
- 为非正式约束添加一个 语言标记。
- 为约束语言添加一个 通配符类型。
版本:0.1.23
- 特性:添加约束高亮测试,必须调整一些事情。
版本:0.1.22**
- 特性:阐明规则及其相关含义。
- 将语法规则
type_definition重命名为definition,以解决属性定义不是类型的事实。 - 将语法规则
enum_variant重命名为value_variant,以与type_variant上的联合保持一致。
- 将语法规则
版本:0.1.21
- 特性:添加对序列构建器支持(集合构建器)语法的支持。
- 修复:更新约束的突出显示/缩进/折叠。
- 样式:对正式约束进行了多项外观更改。
版本:0.1.19/0.1.20
- 修复:对 '..' 范围运算符添加一个字段名的小改动。
版本:0.1.18
- 特性:添加约束断言构造。这允许为任何模型元素记录特定的约束。
- 已重命名语法规则
annotation为annotation_property。 - 已添加语法规则
constraint。 - 定义了一个新的语法规则
annotation,作为annotation_property或constraint的选择。 - 这允许使用旧规则被新定义所包含。
- 已重命名语法规则
- 特性:约束现在可以以非正式的非结构化方式或嵌入的形式编写。
- 非正式表示仅是一个字符串。
- 正式表示是一种映射到 ISO/IEC 24707:2018 常见逻辑子集的语法。
- 文档:增加了关于 RDF 映射和域建模过程的更多文档。
module example is
import tag
structure Thing is
inner -> {0..} InnerThing is
;; informal
assert same_tags = "All inner tags contain a tag value \"This\"."
;; formal
assert same_tags_formal is
forall self ( not_empty(self) and contains(self.tags "This") )
end
end
end
structure InnerThing is
tags -> {0..} tag:Tag
end
end
版本:0.1.17
- 修复:属性的高亮显示。
版本:0.1.16
- 功能:调整了属性语法。
- 文档:开始编写属性文档。
module ddict is
import account
property accountId is
@skos:prefLabel = "accountId"@en
@skos:altLabel = "account_id"@en
identifier -> {1} account:AccountId is
@skos:definition = "Used as an identifier for account-scoped things"@en
end
reference ref {1} -> {1} account:AccountId
end
structure Account is
accountId as identifier
name -> string
end
end
版本:0.1.15
- 功能:在语法中添加了新的结构,以允许数据字典样式的可重用属性定义。
module ddict is
import account
property accountId -> account:AccountId is
@skos:prefLabel = "accountId"@en
@skos:altLabel = "account_id"@en
identifier is
@skos:definition = "Used as ..."@en
end
default = {1..1}
end
structure Account is
accountId as default
name -> string
end
end
版本:0.1.14
- 添加了名为
builtin_simple_type的新规则(选择string、double、decimal、integer、boolean和iri)。- 将
identifier_reference替换为新的规则data_type_base,用于data_type_def, - 添加到
type_reference的选择中,该选择用于成员target字段。
- 将
允许两种
module example is
datatype mystring <- string
structure Person is
name -> string
age -> integer
end
end
其中关键字 string 和 integer 分别展开为限定标识符 sdml:string 和 sdml:integer。
版本:0.1.13
- 为模块添加了显式的
base语法,而不是使用xml:base作为属性。 - 将
Identifier的语法扩展到允许在第一个位置之后的任何位置使用十进制数字。 - 明确了
TypeVariant的语法。
引入
module example base <https://example.org/v/example> is
end
它取代了注释形式
module example is
import xml
@xml:base = <https://example.org/v/example>
end
版本:0.1.12
- 修复了具有
IdentifierReference值的注释的高亮问题 - 为
TypeVariant添加了名称字段
版本:0.1.11
- 将可选值重命名为
TypeVariant - 修复了
annotation和language_tag语法规则冲突
引入
module example is
union Example is
Variant1
Variant1 as Alternative
end
end
这允许在 union 中具有唯一的新标识符的情况下,将同一类型作为变体多次使用。
版本:0.1.10
- 清理了查询。
版本:0.1.9
- 简化了不交集的
UnionDef类型。
版本:0.1.8
- 添加了不交集的
UnionDef类型。
版本:0.1.7
- 将字段名称
sourceCardinality改为source_cardinality。 - 将字段名称
targetCardinality改为target_cardinality。 - 添加了版本注释
版本:0.1.6
- 将
_simple_value改为simple_value命名规则。 - 将
_type_reference改为type_reference命名规则。
其他链接
依赖项
~2.7–4MB
~71K SLoC