Skip to content

Commit

Permalink
refactor(数据结构): ♻️ 润色文档、拆分文件
Browse files Browse the repository at this point in the history
现在词项定义中作为「类型参数」的抽象类型,统一放在「概念」的文件夹中
  • Loading branch information
ARCJ137442 committed Sep 1, 2023
1 parent 373d6a2 commit 292f7ea
Show file tree
Hide file tree
Showing 12 changed files with 1,979 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ uuid = "11330a76-bea1-45e0-8f80-7114e2f607b1"
authors = ["ARCJ137442 <61109168+ARCJ137442@users.noreply.github.com>"]
git-tree-sha1 = "308b5830bd3f1eb7f6bde386a3a23b3ce8b3365e"
repo-url = "https://github.com/ARCJ137442/JuNarsese.jl"
version = "2.6.2"
version = "2.6.3"

[deps]
Reexport = "189a3867-3050-52da-a836-e630ba90ab69"
Expand Down
41 changes: 41 additions & 0 deletions src/Narsese/Sentences/Sentences.jl
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,47 @@

"""
构建「Narsese语句」的支持
## 数据结构
(最后更新于20230901 9:22:27)
- ^真值
- 基础真值{F精度 <: 抽象浮点, C精度 <: 抽象浮点}
+ 优先级
+ 耐久性
+ 质量
- ^标点
- ^判断
- ^问题
- ^目标
- ^请求
- ^时间戳
- 基础时间戳{时态}
+ 证据基础
+ 创建时间
+ 置入时间
+ 发生时间
- Py风时间戳
+ 证据基础
+ 创建时间
+ 置入时间
+ 发生时间
- ^语句{标点}
- 判断句 <: 语句{判断}
+ 词项
+ 时间戳
+ 真值
- 目标句 <: 语句{目标}
+ 词项
+ 时间戳
+ 真值
- 问题句 <: 语句{问题}
+ 词项
+ 时间戳
- 请求句 <: 语句{请求}
+ 词项
+ 时间戳
(使用`^`标注抽象类,`+`表示成员)
"""
module Sentences

Expand Down
2 changes: 1 addition & 1 deletion src/Narsese/Sentences/stamp.jl
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ export StampBasic


"""
抽象时间戳{时态}
抽象时间戳
- 统一对接的数据类型
- 时态(类型参数):存储语句作为事件所发生的时间
- 参考:
Expand Down
15 changes: 15 additions & 0 deletions src/Narsese/Tasks/Tasks.jl
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
"""
构建「Narsese任务」的支持
## 数据结构
(最后更新于20230901 9:19:02)
- ^预算
- 基础预算{精度 <: 抽象浮点}
+ 优先级
+ 耐久性
+ 质量
- ^物品
- ^任务
- 基础任务
+ 语句
+ 预算值
(使用`^`标注抽象类,`+`表示成员)
"""
module Tasks

Expand Down
82 changes: 82 additions & 0 deletions src/Narsese/Terms/Terms.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
"""
提供基本的词项定义
## 架构总览(最后更新于20230901 8:52:54)
## 作为**类型参数**的抽象类型
- 外延内涵
- 外延
- 内涵
- 逻辑操作
- 与
- 或
- 非
- 变量类型
- 独立
- 非独
- 查询
- 时序关系
- 序列
- 平行
- 陈述类型
- 继承
- 相似
- 蕴含{时态}
- 等价{时态}
- 复合词项类型
- 词项集{外延内涵}
- 词项逻辑集{外延内涵,逻辑操作}
- 乘积
- 像{外延内涵}
- 陈述逻辑集{逻辑操作}
- 陈述时序集{时序关系} <: 陈述逻辑集{与}
## 实现**数据结构**的具体类型
- ^词项
- ^原子
- 词语
- 像占位符
- 变量{变量类型}
- 间隔
- 操作符
- ^复合词项{复合词项类型}
- 通用复合词项{CT} <: ^复合词项{CT}
- 像{EI} <: ^复合词项{复合词项类型_像{EI}}
- ^陈述{陈述类型}
- 陈述{T} <: ^陈述{T}
(使用`^`标注抽象类型)
📄具体在Narsese的文本表示,参见Conversion/core/string.jl
## 参考
- OpenJunars 词项层级结构
## 现况
- 📌现在不使用「deepcopy」对词项进行深拷贝:将「拷贝与否」交给调用者
- 【20230803 11:31:40】暂不将整个文件拆分为「Narsese1-8」的形式,而是以[NAL-X]的格式标注其来源
"""
module Terms

# 引入 #

# 抽象概念
include("concepts.jl")

# 数据结构
include("structs.jl")

# 别名
include("aliases.jl")

# 方法
include("methods.jl")

# 快捷构造方式
include("constructor_shortcuts.jl")

# 副系词
include("secondary_copulas.jl")

end # module
197 changes: 197 additions & 0 deletions src/Narsese/Terms/aliases.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,197 @@
#=
存放各类Narsese词项类名的别名
- 缩写
- 归类(Union)
现况:
- 【20230724 18:08:29】使用连等号🆚使用常量(连等号定义常量问题)
=#

# 导出
export Term, ATerm, Atom, AAtom, ACompound
export Compound, CCompound
export Var, Op
export TermSet, TermLogicalSet, TermProduct, StatementLogicalSet, StatementTemporalSet
export TSet
export TLSet, TermLSet, TLogicSet
export TImage, TProduct
export SLSet, StatementLSet, SLogicSet
export STSet, StatementTSet, STemporalSet

export AVType, AVariableType
export VTIndependent, VTDependent, VTQuery
# export Independent, VTIndependent # 【20230730 22:54:28】删去非VT别名,因:与「标点」的「Query请求」重名
# export Dependent, VTDependent
# export Query, VTQuery

export ACType, ACompoundType, AbstractCompoundType

export ALOperation, ALogicOperation

export IVar, DVar, QVar
export STInheritance, STSimilarity, STImplication, STEquivalence,
Inheritance, Similarity, Implication, Equivalence
export TemporalStatementTypes
export AStatement, AbstractStatement

export ASType, AStatementType, AbstractStatementType
export STImplicationRetrospective, STImplicationConcurrent, STImplicationPredictive
export ImplicationRetrospective, ImplicationConcurrent, ImplicationPredictive
export STEquivalenceRetrospective, STEquivalenceConcurrent, STEquivalencePredictive
export EquivalenceRetrospective, EquivalenceConcurrent, EquivalencePredictive
export STImplicationRetrospective, STImplicationConcurrent, STImplicationPredictive
export ImplicationRetrospective, ImplicationConcurrent, ImplicationPredictive
export STEquivalenceRetrospective, STEquivalenceConcurrent, STEquivalencePredictive
export EquivalenceRetrospective, EquivalenceConcurrent, EquivalencePredictive

export CTTermSet, CTTermLogicalSet, CTTermProduct, CTTermImage, CTStatementLogicalSet, CTStatementTemporalSet

export Negation, Conjunction, Disjunction
export ExtSet, ExtensionSet,
IntSet, IntensionSet
export ExtImage, ExtensionImage,
IntImage, IntensionImage
export ExtIntersection, ExtensionIntersection,
IntIntersection, IntensionIntersection
export ExtUnion, ExtensionUnion, IntUnion, IntensionUnion
export ExtDiff, ExtensionDiff, ExtDifference, ExtensionDifference,
IntDiff, IntensionDiff, IntDifference, IntensionDifference
export ParConjunction, SeqConjunction

export ATense, Tense, TTense
export Eternal, Past, Present, Future
export Retrospective, Concurrent, Predictive # 用于「时序蕴含/等价」的别名

# 抽象类型 #
const AVType = AVariableType = AbstractVariableType
const VTIndependent = VariableTypeIndependent
const VTDependent = VariableTypeDependent
const VTQuery = VariableTypeQuery # 【20230730 22:54:28】删去非VT别名,因:与「标点」的「Query请求」重名

const ALOperation = ALogicOperation = AbstractLogicOperation

const ACType = ACompoundType = AbstractCompoundType

const Tense = ATense = AbstractTense
const TTense = Type{<:Tense}

# 用于「时序蕴含/等价」的别名
const Retrospective::DataType = TensePast
const Concurrent ::DataType = TensePresent
const Predictive ::DataType = TenseFuture

# 【20230814 16:20:01】注意:Julia以最后一个定义出的别名作为显示用类名
const Eternal::DataType = TenseEternal
const Past ::DataType = TensePast
const Present::DataType = TensePresent
const Future ::DataType = TenseFuture

# 根类型 #
# 省去Abstract前缀
const Term = ATerm = AbstractTerm # 省去Abstract前缀

# 原子词项 #
const Atom = AAtom = AbstractAtom
const Var = Variable
const Op = Operator

# 各类型变量
const IVar = Variable{VTIndependent}
const DVar = Variable{VTDependent}
const QVar = Variable{VTQuery}

# 复合词项 #
# 结构
const ACompound = AbstractCompound
const Compound = CCompound = CommonCompound
# 类型
const CTTermSet = CompoundTypeTermSet
const CTTermLogicalSet = CompoundTypeTermLogicalSet
const CTTermProduct = CompoundTypeTermProduct
const CTTermImage = CompoundTypeTermImage
const CTStatementLogicalSet = CompoundTypeStatementLogicalSet
const CTStatementTemporalSet = CompoundTypeStatementTemporalSet

const AStatement = AbstractStatement

# 复合词项:先定义泛型,再定义别名
const TermSet{EI} = Compound{CTTermSet{EI}} where EI <: AbstractEI
const TermLogicalSet{EI, LO} = Compound{CTTermLogicalSet{EI, LO}} where {EI <: AbstractEI, LO <: AbstractLogicOperation}
# const TermImage = Compound{CTTermImage} # 默认就是「像」,无需重定向
const TermProduct = Compound{CTTermProduct}
const StatementLogicalSet{LO} = Compound{CTStatementLogicalSet{LO}} where {LO <: AbstractLogicOperation}
const StatementTemporalSet{TR} = Compound{CTStatementTemporalSet{TR}} where {TR <: AbstractTemporalRelation}

# 上述「泛型」的别名
const TSet = TermSet
const TLSet = TermLSet = TLogicSet = TermLogicalSet
const TImage = TermImage
const TProduct = TermProduct
const SLSet = StatementLSet = SLogicSet = StatementLogicalSet
const STSet = StatementTSet = STemporalSet = StatementTemporalSet

# 词项集
const Negation = StatementLSet{Not}
const Conjunction = StatementLSet{And}
const Disjunction = StatementLSet{Or}

const ExtSet = ExtensionSet = Compound{CTTermSet{Extension}}
const IntSet = IntensionSet = Compound{CTTermSet{Intension}}

const ExtImage = ExtensionImage = TermImage{Extension}
const IntImage = IntensionImage = TermImage{Intension}

# 交集
const ExtIntersection = ExtensionIntersection = TermLSet{Extension, And}
const IntIntersection = IntensionIntersection = TermLSet{Intension, And}

# 并集(一般不使用)
const ExtUnion = ExtensionUnion = TermLSet{Extension, Or}
const IntUnion = IntensionUnion = TermLSet{Intension, Or}

const ExtDiff = ExtensionDiff = ExtDifference = ExtensionDifference = TermLogicalSet{Extension, Not}
const IntDiff = IntensionDiff = IntDifference = IntensionDifference = TermLogicalSet{Intension, Not}

# 陈述时序集(原创)
const ParConjunction = STSet{Parallel}
const SeqConjunction = STSet{Sequential}

# 陈述 #

# 类型
const ASType = AStatementType = AbstractStatementType

const STInheritance = StatementTypeInheritance
const STSimilarity = StatementTypeSimilarity
const STImplication = StatementTypeImplication{Eternal} # 【20230804 14:48:54】⚠此处变成了特值「Eternal」
const STEquivalence = StatementTypeEquivalence{Eternal} # 【20230804 14:48:54】⚠此处变成了特值「Eternal」
# 三个「带时态蕴含」
const STImplicationRetrospective = StatementTypeImplication{Retrospective}
const STImplicationConcurrent = StatementTypeImplication{Concurrent}
const STImplicationPredictive = StatementTypeImplication{Predictive}
# 三个「带时态等价」
const STEquivalenceRetrospective = StatementTypeEquivalence{Retrospective}
const STEquivalenceConcurrent = StatementTypeEquivalence{Concurrent}
const STEquivalencePredictive = StatementTypeEquivalence{Predictive}

"「有时态系词」:需要有格式`ST{时态<:Tense}`"
const TemporalStatementTypes = Union{
STImplication, # 所有蕴含
STEquivalence # 所有等价
}

# 构造器
const Inheritance = Statement{STInheritance}
const Similarity = Statement{STSimilarity}
const Implication = Statement{STImplication}
const Equivalence = Statement{STEquivalence}
# 三个「带时态蕴含」 【20230814 23:14:55】不再采用「Past/Present/Future」别名,此举会导致外部引用发生歧义(显示为原本的「参数类型」形式)
const ImplicationRetrospective = Statement{STImplicationRetrospective}
const ImplicationConcurrent = Statement{STImplicationConcurrent}
const ImplicationPredictive = Statement{STImplicationPredictive}
# 三个「带时态等价」
const EquivalenceRetrospective = Statement{STEquivalenceRetrospective}
const EquivalenceConcurrent = Statement{STEquivalenceConcurrent}
const EquivalencePredictive = Statement{STEquivalencePredictive}

# 【20230821 22:14:31】现在只放置别名,那些其他什么的「统称」之类,留给「严格模式」预加载
Loading

0 comments on commit 292f7ea

Please sign in to comment.