EntityStore
EntityStore["type"]
表示类型为 "type" 的实体的空实体存储.
EntityStore["type"data]
表示类型为 "type" 的实体的实体存储,其属性和值由 data 定义.
EntityStore[{tspec1,tspec2,…}]
表示多种类型的实体的实体存储.
EntityStore[RelationalDatabase[…]]
根据外部数据库的模式构建实体存储.
EntityStore[{tspec1,tspec2,...},dbspec]
通过将 dbspec 指定的数据库中的表格名称映射到 tspeci 指定的类型来构建实体存储.
更多信息和选项
- 如果 EntityStore 对象包括在列表 EntityStores[] 中,则它所包含的实体类型将在 Entity 被使用时自动被访问. 除非权限另作设置,它的内容可以通过形如 entity[property]=value 的赋值来进行修改.
- 在 EntityStore 对象中的数据可以使用 store[obj,"property"] 直接访问,其中 obj 是 Entity、EntityClass、EntityProperty、EntityPropertyClass 或 EntityType对象.
- 在 EntityStore[{tspec1,tspec2,…}] 中,每一个 tspeci 可以是 "typei" 或者 "typei"datai.
- 在 EntityStore["type"data] 中,data 是一个关联,定义与指定的类型关联的实体、属性和值.
- data 的 "Entities" 属性可以给出指定类型的实体属性的关联:"Entities"-><"name1"->props1,… >. propsi 给出指定实体的属性值:<"propa"->val1a,"propb"->val1b,… >.
- 特殊属性 "Label" 可以赋给任意实体,指定它将如何显示.
- data 的 "Properties" 元素给出关于属性的信息,比如属性应该如何显示,未显式指定的属性值应该如何计算等.
- data 关联中已知类型的可能项包括:
-
"Entities" 关联,给出各实体的属性值 "EntityClasses" 关联,给出实体类别的实体和属性 "Label" 显示该类型所用的标签 "LabelPlural" 显示该类型所用标签的复数形式 "Properties" 关联,给出该类型的属性信息 "PropertyClasses" 关联,给出该类型的属性类别信息 "EntityTypes" 为子类型给出属性和值的关联关系 - data 中的 "Properties" 项的形式为 <"propa"-><k1->v1,…>,"propb"->…,… >. 关联中对各属性给出的可能项包括:
-
"DefaultFunction" 计算该属性值的默认函数 "Label" 显示该属性所用的标签 - 对于给定属性,当设置为 "DefaultFunction"->f 时,如果在 "Entities" 关联中未被显式指定,则 f 被应用于一个实体,来计算该属性值.
- "EntityClasses" 中各实体类别的可能项包括:
-
"Entities" 指定类别中实体的名称或谓词列表 "Label" 显示该实体类别所用的标签 - 在对于特别实体类别的关联中,"Entities"->{"name1","name2",…} 给出实体类别中实体的显式列表. "Entities"->"prop"->pred 指定类别中的实体当应用于属性 prop 的值时,pred 给出的结果为 True.
- "PropertyClasses" 中各属性类别的可能项包括:
-
"Label" 显示该属性类别所用的标签 "Properties" 该属性类别中的属性名称 - data 的 "EntityTypes" 元素给出了关于特定实体类型的子类型的信息. 子类型由该类型的实体的一个子集组成,该子集被称为其父类型,对父类型适用额外的属性.
- data 的 "EntityTypes" 元素的形式是 <"child1"data1,… >,其中对应于子类型 "childi" 的 datai 的形式与 data 相同.
- 子类型从其父类型处继承实体. 类型为 "type" 的子类型 "child" 的属性、实体类别和属性类别分别有如下形式 EntityProperty["type""child",…]、EntityClass["type""child",…] 和 EntityPropertyClass["type""child",…]. 更深层次嵌套类型的形式是 "type"…"grandchild".
- 在 EntityStore[{"type1"->meta1,"type2"->meta2,…},databasespec] 形式中,metai 可以采用以下形式:
-
{"col1","col2",…} 要公开的列名称列表 {"prop1""col1",…} 将 "coli" 重命名为 "propi" {…,"propi"EntityFunction[…],…} 从 EntityFunction 算出"propi" class 整个类型由计算所得的实体类构成 - 在 EntityStore[{…,"typei"->class,…},…] 形式中,class 可为任意标头:EntityClass、FilteredEntityClass、ExtendedEntityClass、SampledEntityClass、SortedEntityClass、AggregatedEntityClass、CombinedEntityClass.
- 在关系数据库支持的实体存储中,EntityStore 的第一个参数的结构具有形式 <"Types"-><"type1"-><… >,"type2"-><… >,… > >,其中每个 "typei" 的右侧的关联可以有以下的键:
-
"Properties" 定义属性的关联 "EntityTypeExtractor" 表格名称或计算所得的类别 "CanonicalNameProperties" 形成 CanonicalName 的属性 - 在关系数据库中,属性有三种形式:原始数据库上的列、计算所得的属性或关系.
- 用包含以下内容的关联定义列属性:
-
"ColumnPrefix" 通常为表格的名称 "ColumnName" 列的名称 - 用包含以下内容的关联定义计算所得的属性:
-
"Function" 定义属性的 EntityFunction - 关系属性是接受 Entity 或 EntityClass 值的属性;这些值指代 EntityStore 中的类型;它们由包含以下内容的关联定义:
-
"DestinationEntityType" 关系引用的实体类型 "EntityTypeMapping" 输入属性和目标类型之间的映射 - "EntityTypeMapping" 和 CombinedEntityClass 有相同的规定,可接受以下形式的值:
-
"prop" 源和目标类型的属性 "propi" 的值相同 {"prop1","prop2",…} 源和目标类型的所有 "propi" 的值相同 "left""right" 源类型的 "left" 的值与目标类型的 "right" 的值相同 {"left1""right1",…} 源类型的 "lefti" 的值与目标类型的 "righti" 的值相同 EntityFunction[{left,right},…] 原始实体 left 的关系的值是实体函数计算结果为 True 的所有目标类型实体 right - 在关系数据库支持的实体存储中,禁用使用 "Label" 属性的格式化以确保对 EntityValue 和 EntityList 的所有调用只调用一次数据库.
- 可以给出以下选项:
-
Initialization None 当实体存储注册时要运算的表达式 MetaInformation < > 与实体存储相关的元信息
范例
打开所有单元关闭所有单元基本范例 (3)
查找属性 "color" 的值为 Red 的实体:
要连接到外部数据库,请构建 RelationalDatabase 对象:
根据 RelationalDatabase 对象构建一个 EntityStore:
注册 EntityStore:
用数据库中原始表格的子集构建基于数据库的 EntityStore:
范围 (11)
基本用法 (4)
获取一个实体在 "pc1" 中所有属性值的 Association:
这里将新值与实体一起引入已注册的 "integer" 的实体存储中:
定义含有带标签的实体和实体类别的 EntityStore:
通常 EntityClass 的行为与它所表示的实体列表相似. 获取类别中各实体的 "Label":
如要获得该类别的 "Label",直接访问 EntityStore:
数据库连接 (5)
构建重命名表格的 EntityStore:
用列的子集构建 EntityStore:
构建重命名列的 EntityStore:
用算出的类型构建 EntityStore:
用算出的类属性构建 EntityStore:
限定符 (1)
使用合适 "Date" 的 "Population" 属性指定 "beehive" 属性:
使用 Dated:
选项 (2)
可能存在的问题 (2)
在数据库支持的实体存储中,不使用 "Label" 属性进行格式化:
在处理外部数据库时,可能会遇到一个数据库,其中没有为某些表设置主键:
这种情况下,EntityStore 将发出一条消息. 这意味着将禁用涉及单个实体的某些功能:
但是 EntityValue 一般依然可用:
文本
Wolfram Research (2016),EntityStore,Wolfram 语言函数,https://reference.wolfram.com/language/ref/EntityStore.html (更新于 2019 年).
CMS
Wolfram 语言. 2016. "EntityStore." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2019. https://reference.wolfram.com/language/ref/EntityStore.html.
APA
Wolfram 语言. (2016). EntityStore. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/EntityStore.html 年