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"] 直接访问,其中 objEntityEntityClassEntityPropertyEntityPropertyClassEntityType对象.
  • 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 可为任意标头:EntityClassFilteredEntityClassExtendedEntityClassSampledEntityClassSortedEntityClassAggregatedEntityClassCombinedEntityClass.
  • 在关系数据库支持的实体存储中,EntityStore 的第一个参数的结构具有形式 <|"Types"-><|"type1"-><||>,"type2"-><||>,|>|>,其中每个 "typei" 的右侧的关联可以有以下的键:
  • "Properties"定义属性的关联
    "EntityTypeExtractor"表格名称或计算所得的类别
    "CanonicalNameProperties"形成 CanonicalName 的属性
  • 在关系数据库中,属性有三种形式:原始数据库上的列、计算所得的属性或关系.
  • 用包含以下内容的关联定义列属性:
  • "ColumnPrefix"通常为表格的名称
    "ColumnName"列的名称
  • 用包含以下内容的关联定义计算所得的属性:
  • "Function"定义属性的 EntityFunction
  • 关系属性是接受 EntityEntityClass 值的属性;这些值指代 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" 属性的格式化以确保对 EntityValueEntityList 的所有调用只调用一次数据库.
  • 可以给出以下选项:
  • Initialization None当实体存储注册时要运算的表达式
    MetaInformation<||>与实体存储相关的元信息

范例

打开所有单元关闭所有单元

基本范例  (3)

为类型为 "fruit" 的实体创建一个实体存储:

在实体存储的全局列表中注册该实体存储:

现在,实体的属性值会自动在实体存储中查找:

获得指定类型的实体列表:

查找属性 "color" 的值为 Red 的实体:

获取指定属性的所有实体和值的关联:

注销该实体存储:

要连接到外部数据库,请构建 RelationalDatabase 对象:

根据 RelationalDatabase 对象构建一个 EntityStore

注册 EntityStore

进行查询:

取消注册:

用数据库中原始表格的子集构建基于数据库的 EntityStore

范围  (11)

基本用法  (4)

创建计算属性为 "p3" 和实体及属性类别的实体存储:

获取计算值:

查找 "ec2" 的成员:

获取一个实体在 "pc1" 中所有属性值的 Association

直接访问实体存储:

值不被计算:

访问实体类别的属性:

提取为 "Entities" 存储的原始数据:

创建所有整数的实体存储:

获取实体的数字值:

计算实体 "4" 的阶乘:

无效实体被拒绝:

改变实体 "7""Factorial" 值:

这里将新值与实体一起引入已注册的 "integer" 的实体存储中:

其他实体不具有显式值:

定义含有带标签的实体和实体类别的 EntityStore

通常 EntityClass 的行为与它所表示的实体列表相似. 获取类别中各实体的 "Label"

如要获得该类别的 "Label",直接访问 EntityStore

将实体存储放在云端:

与别人共享云对象,使其可以使用它所包含的实体:

数据库连接  (5)

构建重命名表格的 EntityStore

用列的子集构建 EntityStore

构建重命名列的 EntityStore

用算出的类型构建 EntityStore

用算出的类属性构建 EntityStore

限定符  (1)

使用合适 "Date""Population" 属性指定 "beehive" 属性:

获取最新的丽萨蜂巢的数量:

获取 2014 年中期的数量:

使用 Dated:

这等价于:

获取时间序列:

2013 年所有蜂巢的数量:

子类型  (1)

用人名创建一个实体存储,其中有些人是音乐创作者或科学家:

注册存储:

列出适用于所有人的属性:

具体的实体可以有额外的属性:

获取实体的所有数据,包括来自子类型的数据:

当没有歧义的时候,子类型的属性可以被指定为字符串:

下例使用一个完整的子类型属性规范:

列出所有在物理学领域工作的人:

列出所有音乐创作者:

列出在物理学领域工作的音乐家:

其结果是前面两个结果的交集:

选项  (2)

Initialization  (1)

创建一个包含初始化表达式的实体存储:

初始化表达式在注册时被运行:

注销存储:

Metainformation  (1)

创建一个包括元信息的实体存储:

查看元信息:

可能存在的问题  (2)

在数据库支持的实体存储中,不使用 "Label" 属性进行格式化:

在处理外部数据库时,可能会遇到一个数据库,其中没有为某些表设置主键:

这种情况下,EntityStore 将发出一条消息. 这意味着将禁用涉及单个实体的某些功能:

但是 EntityValue 一般依然可用:

解决此问题的唯一方法是在外部数据库中设置主键约束.

Wolfram Research (2016),EntityStore,Wolfram 语言函数,https://reference.wolfram.com/language/ref/EntityStore.html (更新于 2019 年).

文本

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 年

BibTeX

@misc{reference.wolfram_2024_entitystore, author="Wolfram Research", title="{EntityStore}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/EntityStore.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_entitystore, organization={Wolfram Research}, title={EntityStore}, year={2019}, url={https://reference.wolfram.com/language/ref/EntityStore.html}, note=[Accessed: 22-November-2024 ]}