STEP标准描述方法-EXPRESS语言

     据模型正式定义数据对象和数据之间的关系,对象为感兴趣的领域。数据模型的一些典型应用包括支持数据库的开发和实现数据在感兴趣的特定领域的交流。数据模型在数据建模语言来指定。 EXPRESS是在ISO 10303-11的EXPRESS语言参考手册定义的数据建模语言。

      一个Express数据模型可以通过两种方式来定义,以文字和图形。格式验证和输入如SDAI工具中的ASCII文件的文字表述是最重要的之一。在另一方面的图形表示通常更适合人类使用,如用于解释和教学。图形表示,所谓的EXPRESS- G,是不是能够代表可在文本格式中描述的所有细节。

     EXPRESS是非常类似与编程语言,如Pascal。在一个SCHEMA中,各种数据类型可以与结构性约束和算法规则来定义。EXPRESS的一个主要特点是,提供了正式验证数据类型的实例集数的可能性 – 也就是说检查所有的结构和算法规则。EXPRESS 构件块

数据类型(Datatypes)

Express提供了一系列的数据类型,用EXPRESS -G符号的特定数据类型的符号:

  • Entity data type(实体数据类型):这是在表达最重要的数据类型。这是下面有更详细。实体数据类型可以有两种方式,在一个子树的父和/或属性有关。
  • Enumeration data type(枚举数据类型):枚举值是简单的字符串,如红色,绿色和蓝色为RGB-枚举。在这种枚举类型声明可扩展的情况下它可以扩展在其他模式。
  • Defined data type(定义数据类型):这进一步专业其他数据类型 - 例如,定义一个数据类型积极的,是整数类型的值> 0 。
  • Select data type(选择数据类型):选择定义不同的选项之间进行选择或替代。最常使用的是不同的entity_types之间进行选择。更难得的是选择,其中包括定义的类型。在这种枚举类型声明可扩展的情况下,它可以扩展在其他模式。
  • Simple data type(简单数据类型)
  • String(字符串):这是最常用的简单类型。明示的字符串可以是任意长度的,并且可以包含任何字符(ISO 10646/Unicode中) 。然而,它是常见的做法。
  • Binary(二进制):本数据类型仅很少使用。它涵盖了数位(而不是字节) 。对于一些实施方式中的大小被限制为32位。
  • Logical(逻辑):类似于布尔数据类型的逻辑有TRUE和FALSE并且除了未知的可能值。
  • Boolean(布尔):随着布尔值TRUE和FALSE 。
  • Number(数字): Number数据类型既,整数和实的超类型。大多数的实现需要使用double类型来表示real_type ,即使实际值是一个整数。
    1. Integer(整型):快递整数原则上可以有任意长度,但大多数实现限制他们有符号的32位值。
    2. Real(实):理想的表达真正的价值是无限的精度和大小。但在实践中真正的价值是由一个double类型的浮点值来表示。
  • Aggregation data type(²聚合数据类型):可能的种aggregation_types被设置,包列表和数组。而SET和BAG是无序的, LIST和ARRAY是有序的。一包可以包含一个特定的值超过一次,这是不允许的设置。数组是可能含有未设置成员的唯一聚集。这是不可能的SET ,LIST袋。总的成员可以是任何其它数据类型。

一些一般的东西都被提及的数据类型。

  • 构造数据类型可以在EXPRESS Schema中定义。它们主要用于定义实体,并以指定的实体的属性和聚合部件的类型。
  • 数据类型可以用在递归的方式来建立更多和更复杂的数据类型。例如它可以定义或者一些单位或其他数据类型的一个SELECT的数组列表。如果是有意义的定义这样的数据类型是一个不同的问题。
  • 明确定义了一些规则是如何的数据类型可以进一步专业化。这是实体的重新声明的属性很重要。
  • 通用数据类型可用于过程,函数和抽象的实体。
  • 实体属性(Entity-Attribute)

体属性允许“属性”添加到实体和关系一个实体与另一个在一个特定的角色。该属性的名称指定的角色。大多数的数据类型可以直接作为一个属性的类型。这包括聚集为好。

有三种不同类型的属性,显式的,衍生的和逆属性。而所有这些都可以被重新宣布一个亚子类型。除了明确的属性可以被重新声明为导出的一个子类型。那种属性没有其他的变化是可能的。

  • 显式的属性是那些在STEP - 文件可见的直接价值。
  • 派生属性从表达式获取它们的值。在大多数情况下,表达式引用此实例的其他属性。表达式也可以使用明示的功能。
  • 逆属性做“信息”不能增加一个实体,但只有名字和约束从另一端的明确属性的实体。在EXPRESS -G符号的特定属性的符号

父类型和子类型(Supertypes and subtypes)

一个实体可以被定义为一种类型或其他几个实体(多重继承是允许的! ) 。超类型可以有任意多个子类型。在步骤建立非常复杂的子超类型的图表非常普遍的做法。一些图涉及100多实体类型。

实体实例可以被构造为一个单一实体(如果不是抽象)或实体以这样的子父图形的复杂组合。对于大图的可能组合数很可能在天文范围内增长。要限制特殊的超类型的限制得到了介绍,如oneOf的和TOTALOVER可能的组合。另外一个实体可以被声明为抽象的执行,没有实例可眼前这个实体的构造,但只有当它包含非抽象的子类型。

      1. ​​​​​​​算法约束(Algorithmic constraints)

实体和自定义数据类型可能会进一步限制与WHERE规则。在这种规则也是全球规则的一部分。 A其中的规则是一个表达式,其结果必须为TRUE ,否则一个Express架构的人口,是无效的。等得到的属性这些表达可以调用明示的功能,这可能会进一步明确调用程序。该函数和过程允许制定与局部变量,参数和常量复杂的语句 - 非常类似于一种编程语言。

该EXPRESS语言可以形容本地和全球规则。例如:

ENTITY area_unit
  SUBTYPE OF (named_unit);
WHERE
  WR1: (SELF\named_unit.dimensions.length_exponent = 2) AND
       (SELF\named_unit.dimensions.mass_exponent = 0) AND
       (SELF\named_unit.dimensions.time_exponent = 0) AND
       (SELF\named_unit.dimensions.electric_current_exponent = 0) AND
       (SELF\named_unit.dimensions.
         thermodynamic_temperature_exponent = 0) AND
       (SELF\named_unit.dimensions.amount_of_substance_exponent = 0) AND
       (SELF\named_unit.dimensions.luminous_intensity_exponent = 0);
END_ENTITY; -- area_unit

这个例子描述了面积单位实体必须有长度的平方值。对于这个属性dimensions.length_exponent必须等于2和基本SI单位的所有其他指数必须为0。
另一个例子:

TYPE day_in_week_number = INTEGER;
WHERE
  WR1: (1 <= SELF) AND (SELF <= 7);
END_TYPE; -- day_in_week_number

也就是说,它表示星期的值不能超过7 。
所以,你可以描述一些规则,以您的实体。在给定的例子,更多细节可在ISO 10303-41被发现.

    1. EXPRESS-G
      1. EXPRESS-G概述

EXPRESS -G是一种信息模型标准的图形符号。一个有用的伴侣的EXPRESS语言来显示实体和类型定义,关系和基数。 这种图形表示法支持EXPRESS语言的一个子集。对使用EXPRESS -G超过明示的优点是数据模型的结构可以更容易理解的方式呈现。的EXPRESS-G的一个缺点是复杂的约束不能被正式指定。

      1. EXPRESS-Schema定义
        1. EXPRESS –Schema 架构

EXPRESS-Schema 定义如下图所示:

定义完成后文件被保存为“.exp”。

        1. 类型(basic)定义(type declaration)
  • 简单(内嵌)内型定义:
  • 数据类型有:
    1. BINARY, BOOLEAN, INTEGER, LOGICAL, NUMBER, REAL, STRING
    2. EXPRESS-G图例如下:

  • 定义示例如下:

TYPE distance = REAL;

END_TYPE;

  • 集合类型(Collection types):
  • 数据类型有:
    1. Array (fixed size, position relevant)
    2. Bag (variable size, position not relevant)
    3. Set (like bag but without duplicates)
    4. List (variable size, position relevant)
  • 定义实例如下:

TYPE positive_integer = INTEGER;

WHERE NotNegative : SELF >= 0;

END_TYPE;

  • 枚举类型(Enumeration type):
  • 定义实例如下:

TYPE trafficLightColor = ENUMERATION OF (Red, Amber, Green);

END_TYPE;

  • 选择类型(Select type):
  • 定义示例如下:

TYPE vehicle = SELECT( car, boat, plane );

END_TYPE;

        1. 实体定义(entity declarations
  • 实体定义实例:

ENTITY point;

   x : REAL;

   y : REAL;

END_ENTITY;

  • 线:

ENTITY line;

   end1 : point;

   end2 : point;

   length : distance;

END_ENTITY;

  • Polyline

ENTITY polyline;

   lines : LIST[ 1 : ? ] OF line;

END_ENTITY;

  • EXPRESS-G实体及其关系定义:

  • Entities: DERIVE and OPTIONAL(来自和可选):
  • DERIVE示例:

ENTITY line;

   start : point;

   end : point;

DERIVE

   length : distance:=SQRT((end.xcoord - start.xcoord)**2

                      + (end.ycoord - start.ycoord)**2);

END_ENTITY;

  • OPTIONAL示例:

ENTITY person;

   first_name : STRING;

   last_name : STRING;

   nickname : OPTIONAL STRING;

END_ENTITY;

  • Entities: INVERSE

ENTITY employee;

   name : person_name;

END_ENTITY;

 

ENTITY person_name;

   last_name : STRING;

   first_name : STRING;

INVERSE

   link : employee FOR name;

END_ENTITY

一个PERSON_NAME不能存在,除非有employee,有它的值是自一个名为name属性的一个值。

  • 关系和基数

 

        1. 准则定义(rule declarations
  • 全局准则:全局准则定义在Schema内:
  • 全局准则示例1:

RULE max_number_of_students FOR (student);

   WHERE

   max_is_40 : SIZEOF(student) <= 40;

END_RULE;

  • 全局准则示例2:

RULE rule_name FOR (entity_type_1,…, entity_type_N);

   (* executable statements *)

WHERE

  (* some expression that returns TRUE or FALSE *)

END_RULE;

  • 实体内部准则:定义在实体内部:
  • 实体内部准则示例1:

ENTITY student;

   first_name : STRING;

   last_name : STRING;

   ssn : STRING;

UNIQUE

   unique_ssn_rule : ssn;

END_ENTITY;

  • 实体内部准则示例2

ENTITY unit_vector;

   a,b,c : REAL;

WHERE

   unit_length_rule : a**2+b**2+c**2 = 1.0;

END_ENTITY;

 

        1. 函数定义(functions

函数定义实例如下:

FUNCTION days_between( d1 : date, d2 : date ) : INTEGER;

   (* returns the number of days between the two

      input dates. If d1 is earlier than d2, a positive

      number is returned *)

END_FUNCTION;

 

 

 

      1. 简单的例子
        1. 点、线示例

下图为点、线的EXPRESS Schema和对应的EXPRESS-G图形。

                图 例子Schema及其对应的Express-G 图

通过该Schema方式定义的Part21文件如下图所示:

          图  具体实例及其对应的Part 21文件

        1. 完整的person 示例
  • EXPRESS-Schema

SCHEMA example;

TYPE date = ARRAY [1:3] OF INTEGER; END_TYPE;

TYPE hair_type = ENUMERATION OF (bald,dyed,natural,wig);

END_TYPE;

ENTITY person

   SUPERTYPE OF(ONEOF(female,male));

   first_name, last_name : STRING;

   nickname : OPTIONAL STRING;

   birthdate : date;

   children : SET[0:?] OF person;

   hair : hair_type;

DERIVE

   age : INTEGER:=years(birthdate);

INVERSE

   parents : SET[0:2] OF person FOR children;

END_ENTITY;

ENTITY female

   SUBTYPE OF (person);

   maiden_name : OPTIONAL STRING;

END_ENTITY;

ENTITY male

   SUBTYPE OF (person);

END_ENTITY;

ENTITY married;

   husband : male;

   wife : female;

UNIQUE

   no_polyandry : husband;

   no_polygamy : wife;

END_ENTITY;

FUNCTION years(aDate:date) : INTEGER;

(* returns the number of years between aDate and today *)

END_FUNCTION;

END_SCHEMA;

  • EXPRESS-G

原文地址:https://blog.csdn.net/lyalong0616/article/details/90312325

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


根据官网 入门 express
java叫接口control什么的app.get.post等等都是请求方式我们可以在游览器输入localhost端口/或者在Apifox里面写。
为了前端丢进去的时候可以直接判断中间件就是经过了这个就会被使用可以做一些自己的数据处理什么的。
Express 文件的上传和下载
运行命令下载app.js 增加中间件。
基本模板来的 后面用后就有什么加什么都行。
此篇完成 增删 刷新文件 的基本操作
最基本的创建 以及 添加了其他的一些插件 登录接口和四个接口
由于每个接口都要放就很麻烦 所以做个中间件
1importre234defstrip_operate(exp):#合并多余的操作符5exp=exp.replace("+-","-")6exp=exp.replace("--","+")7returnexp8910defcal_exp_son(exp_son):#计算两数的乘除11if&
 socket.html<script>//高级api不兼容socket.io//http单向的,socket是双向的,传输都靠tcpletsocket=newWebSocket('ws://localhost:3000')socket.onopen=()=>{//多个页面通信就是先发给服务器,服务器再发给另一个页面socket.send('我
M模式:类,表示数据的应用程序和使用验证逻辑以强制实施针对这些数据的业务规则。V视图:应用程序使用动态生成HTML响应的模板文件。C控制器:处理传入的浏览器请求的类中检索模型数据,然后指定将响应返回到浏览器的视图模板。简单练习: 1、添加ControllerHelloWorldControlle
在Node开发中免不了要使用框架,比如express、koa、koa2拿使用的最多的express来举例子开发中肯定会用到很多类似于下面的这种代码varexpress=require('express');varapp=express();app.listen(3000,function(){console.log('listen3000...');});app.use(middle
node的http创建服务与利用Express框架有何不同原生http模块与使用express框架对比:consthttp=require("http");letserver=http.createServer(function(req,res){//服务器收到浏览器web请求后,打印一句话console.log("recvreqfrombrowser");
编辑nginx文件vi/usr/local/etcginxginx.confnginx配置如下,配置后需重启nginxnginx-sreloadlocation~.*\.json{roothtml;add_header"Access-Control-Allow-Origin""*";}前端index.html<script>fetch('http://localhost:12
constexpress=require('express')constapp=express()//步骤的拆解constresult=express.static('./views')app.use(result)//再次托管一下样式表的资源目录app.use('/css',express.static('./css'))//托管JS文件目录app.use('/js&#
问题描述:最近在做毕设,express里边的中间件(body-parser)失效,req.body获取不到任何值,req.query能获取到值。一开始加body-parser中间件是有用的,直到昨天加了token之后,body-parser失效。试着把token去掉,无济于事,也不是这个问题,也有说版本对不上的,换了中间件的引入方法,还是没用!!! 后
express官网:---->传送门 expressexpress框架有许多功能,比如路由配置,中间件,对于想配置服务器的前端来说,非常便捷自从node发展之后,基于nodejs的开发框架也不断涌现出来,express就是其中之一,最近简单的写了点express框架的简单的处理请求的demo首先是安装express模块npminstall
目录问题: 操作:Win+S按键,输入“事件查看器”问题详情:模块DLLC:\ProgramFiles(x86)\IISExpress\aspnetcore.dll未能加载。返回的数据为错误信息。问题:  操作:Win+S按键,输入“事件查看器” 问题详情:模块DLLC:\ProgramFiles(x86)\IISExpress\aspnetcore.dll
//获取阿里云市场,快递物流记录https://market.aliyun.com/products/56928004/cmapi022273.html?spm=5176.2020520132.101.26.61f97218v18GBF#sku=yuncode1627300000//get_express_log(self::$config['web']['aliyun_AppCode']阿里云市场AppCode,缓存秒数如300秒,'快递公司代