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 rule
quantieid_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