equal
(<=>
(
stringConcatenation
?S1 ?S2 ?S3)
(
equal
?S3
(
StringConcatenateFn
?S1 ?S2)))
Mid-level-ontology.kif 24496-24498
符号串
和
另一个 符号串
的
concatenation
是
第三 符号串
若且唯若
那个 第三 符号串
equal
那个 符号串
和
那个 另外 符号串
的
concatenation
(<=>
(
stringLength
?INT ?STRING)
(
equal
?INT
(
StringLengthFn
?STRING)))
Mid-level-ontology.kif 24466-24468
符号串
是
非负整数
characters
long
若且唯若
那个 非负整数
equal
那个 符号串
的
length
(=>
(<=>
(
element
?ELEMENT ?SET1)
(
element
?ELEMENT ?SET2))
(
equal
?SET1 ?SET2))
Merge.kif 5421-5425
如果
实体
是
集合
的
element
若且唯若
那个 实体
是
另一个 集合
的
element
,
然后
那个 集合
equal
那个 另外 集合
(=>
(
and
(
amount
?S ?CO
(
MeasureFn
?N ?U))
(
instance
?SI ?S)
(
measure
?SI
(
MeasureFn
?N2 ?U))
(
part
?SI ?CO))
(
exists
(?L)
(
and
(
inList
(
MeasureFn
?N2 ?U) ?L)
(
equal
?L
(
AmountsFn
?S ?CO ?U))
(
equal
?N
(
ListSumFn
?L)))))
Merge.kif 7596-7611
如果
amount
有点 物质
,
躯体性物体
and
实数
UnitOfMass
和
有点 物质
I 是
那个 有点 物质
的
instance
和
那个 有点 物质
I 的
measure
是
那个 实数
2
那个 UnitOfMass
和
那个 有点 物质
I 是
那个 躯体性物体
的
part
,
然后 有存在
串列
这样
那个 实数
2
那个 UnitOfMass
是
那个 串列
的
member
和
那个 串列
equal
AmountsFn
那个 有点 物质
,
那个 躯体性物体
and
那个 UnitOfMass
和
那个 实数
equal
ListSumFn
那个 串列
(=>
(
and
(
applicableRelation
?O ?R)
(
instance
?O ?OC)
(
domain
?R 1 ?DC))
(
or
(
equal
?OC ?DC)
(
subclass
?OC ?DC)))
Mid-level-ontology.kif 31387-31394
如果
applicableRelation
客体
and
关系
和
那个 客体
是
那个 客体
C 的
instance
和
那个 关系
的 1 数量 是
另一个 类
的
instance
,
然后
那个 客体
C
equal
那个 另外 类
或
那个 客体
C 是
那个 另外 类
的
subclass
(=>
(
and
(
approximateDiameter
?O
(
MeasureFn
?L ?LM))
(
sphereRadius
?S
(
MeasureFn
(
DivisionFn
?L 2.0) ?LM))
(
measure
?S
(
MeasureFn
?V1 ?VM))
(
measure
?O
(
MeasureFn
?V2 ?VM))
(
instance
?LM
UnitOfLength
)
(
instance
?VM
UnitOfVolume
))
(
equal
?V1 ?V2))
Mid-level-ontology.kif 17948-17959
如果 1 的
approximate
diameter
是 %2 和
客体
的
radius
是
实数
和 2.0
那个 实数
M 和
那个 客体
的
measure
是
另一个 实数
另一个 测量单位
和
自身连接物体
的
measure
是
第三 实数
那个 另外 测量单位
和
那个 实数
M 是
UnitOfLength
的
instance
和
那个 另外 测量单位
是
UnitOfVolume
的
instance
,
然后
那个 另外 实数
equal
那个 第三 实数
(=>
(
and
(
attribute
?A
AppraisalAsJustTreatment
)
(
instance
?AJT
AppraisalProcess
)
(
agent
?AJT ?A))
(
exists
(?P ?A2)
(
and
(
instance
?P
Process
)
(
refers
?AJT ?P)
(
agent
?P ?A2)
(
not
(
equal
?A ?A2))
(
patient
?P ?A)
(
wants
?A ?P))))
emotion.kif 374-387
如果
AppraisalAsJustTreatment
是
有认知的主事
的
attribute
和
那个 有认知的主事
JT 是
AppraisalProcess
的
instance
和
那个 有认知的主事
是
那个 有认知的主事
JT 的
agent
,
然后 有存在
另一个 过程
和
那个 有认知的主事
2 这样
那个 另外 过程
是
过程
的
instance
和
那个 有认知的主事
JT 提到
那个 另外 过程
和
那个 有认知的主事
2 是
那个 另外 过程
的
agent
和
那个 有认知的主事
不
equal
那个 有认知的主事
2 和
那个 有认知的主事
是
那个 另外 过程
的
patient
和
那个 有认知的主事
wants
那个 另外 过程
(=>
(
and
(
attribute
?A
AppraisalAsUnjustTreatment
)
(
instance
?AUJ
AppraisalProcess
)
(
agent
?AUJ ?A))
(
exists
(?P ?A2)
(
and
(
instance
?P
Process
)
(
refers
?AUJ ?P)
(
agent
?P ?A2)
(
not
(
equal
?A ?A2))
(
patient
?P ?A)
(
not
(
wants
?A ?P)))))
emotion.kif 349-363
如果
AppraisalAsUnjustTreatment
是
有认知的主事
的
attribute
和
那个 有认知的主事
UJ 是
AppraisalProcess
的
instance
和
那个 有认知的主事
是
那个 有认知的主事
UJ 的
agent
,
然后 有存在
另一个 过程
和
那个 有认知的主事
2 这样
那个 另外 过程
是
过程
的
instance
和
那个 有认知的主事
UJ 提到
那个 另外 过程
和
那个 有认知的主事
2 是
那个 另外 过程
的
agent
和
那个 有认知的主事
不
equal
那个 有认知的主事
2 和
那个 有认知的主事
是
那个 另外 过程
的
patient
和
那个 有认知的主事
doesn't
wants
那个 另外 过程
(=>
(
and
(
attribute
?C
Collectible
)
(
hasPurpose
?C ?P))
(
exists
(?H ?P2)
(
and
(
instance
?H
Human
)
(
wants
?H ?C)
(
desires
?H ?P2)
(
entails
?P2
(
possesses
?H ?C))
(
not
(
equal
?P ?P2)))))
Mid-level-ontology.kif 29507-29519
如果
Collectible
是
客体
的
attribute
和
那个 客体
的 目的 是
公式
,
然后 有存在
有认知的主事
和
那个 公式
2 这样
那个 有认知的主事
是
人类
的
instance
和
那个 有认知的主事
wants
那个 客体
和
那个 有认知的主事
desires
那个 公式
2 和
那个 公式
2
entails
那个 有认知的主事
possesses
那个 客体
和
那个 公式
不
equal
那个 公式
2
(=>
(
and
(
attribute
?M
MashupRecording
)
(
instance
?M
Recording
))
(
exists
(?M1 ?M2 ?S1 ?S2)
(
and
(
musicInterpretation
?M1 ?S1)
(
musicInterpretation
?M2 ?S2)
(
not
(
equal
?S1 ?S2))
(
part
?M1 ?M)
(
part
?M2 ?M))))
Music.kif 426-436
如果
MashupRecording
是
客体
的
attribute
和
那个 客体
是
Recording
的
instance
,
然后 有存在
那个 客体
1,
那个 客体
2,, ,
音乐
, and 和
另一个 音乐
这样
那个 客体
1 是
那个 音乐
的
recording
和
那个 客体
2 是
那个 另外 音乐
的
recording
和
那个 音乐
不
equal
那个 另外 音乐
和
那个 客体
1 是
那个 客体
的
part
和
那个 客体
2 是
那个 客体
的
part
(=>
(
and
(
attribute
?M
RemixRecording
)
(
instance
?M
MusicRecording
))
(
exists
(?O ?A)
(
equal
?M
(
RemixFn
?O ?A))))
Music.kif 444-449
如果
RemixRecording
是
音乐录音
的
attribute
和
那个 音乐录音
是
音乐录音
的
instance
,
然后 有存在
另一个 音乐录音
和
有认知的主事
这样
那个 音乐录音
equal
那个 另外 音乐录音
的
remix
由
那个 有认知的主事
(=>
(
and
(
attribute
?MR
CoverRecording
)
(
instance
?MR
MusicRecording
)
(
songArtist
?MR ?A)
(
musicInterpretation
?MR ?M)
(
record
?MR ?MM))
(
exists
(?ORIG ?ARTIST ?MUSIC)
(
and
(
musicInterpretation
?ORIG ?M)
(
songArtist
?ORIG ?ARTIST)
(
not
(
equal
?A ?ARTIST))
(
record
?ORIG ?MUSIC)
(
before
(
WhenFn
?MUSIC)
(
WhenFn
?MM)))))
Music.kif 457-470
如果
CoverRecording
是
音乐录音
的
attribute
和
那个 音乐录音
是
音乐录音
的
instance
和
有认知的主事
是
performer
在
那个 音乐录音
和
那个 音乐录音
是
音乐
的
recording
和
那个 音乐录音
是个
那个 音乐
M 的
record
,
然后 有存在
另一个 音乐录音
,
那个 有认知的主事
RTIST, and 和
那个 音乐
USIC 这样
那个 另外 音乐录音
是
那个 音乐
的
recording
和
那个 有认知的主事
RTIST 是
performer
在
那个 另外 音乐录音
和
那个 有认知的主事
不
equal
那个 有认知的主事
RTIST 和
那个 另外 音乐录音
是个
那个 音乐
USIC 的
record
和
那个 音乐
USIC 出现 的
time
%n在
那个 音乐
M 出现 的
time
before
发生
(=>
(
and
(
attribute
?ORG
UnicameralLegislature
)
(
legislativeBranch
?ORG ?AREA)
(
instance
?CHAMBER1
LegislativeChamber
)
(
subOrganization
?CHAMBER1
(
GovernmentFn
?AREA))
(
instance
?CHAMBER2
LegislativeChamber
)
(
subOrganization
?CHAMBER2
(
GovernmentFn
?AREA)))
(
equal
?CHAMBER1 ?CHAMBER2))
Government.kif 1977-1985
如果
一院制立法机关
是
机构
的
attribute
和
地缘政治区域
是
那个 机构
的
legislative
分支 和
另一个 机构
是
立法院
的
instance
和
那个 另外 机构
是
那个 地缘政治区域
的
Government
Organization
的一部分 和
第三 机构
是
立法院
的
instance
和
那个 第三 机构
是
那个 地缘政治区域
的
Government
Organization
的一部分,
然后
那个 另外 机构
equal
那个 第三 机构
(=>
(
and
(
attribute
?Order
FOKOrder
)
(
agreementPeriod
?Order ?Period))
(
or
(
exists
(?Fill ?Time1)
(
and
(
instance
?Fill
FillingAnOrder
)
(
patient
?Fill ?Order)
(
equal
(
WhenFn
?Fill) ?Time1)
(
starts
?Time1 ?Period)))
(
exists
(?Kill ?Time2)
(
and
(
instance
?Kill
CancellingAnOrder
)
(
patient
?Kill ?Order)
(
equal
(
WhenFn
?Kill) ?Time2)
(
starts
?Time2 ?Period)))))
FinancialOntology.kif 2881-2897
如果
FOK订单
是
协议
的
attribute
和
时距
是
那个 协议
的
agreement
週期,
然后 有存在
过程
和
另一个 时距
这样
那个 过程
是
填写订单
的
instance
和
那个 协议
是
那个 过程
的
patient
和
那个 过程
出现 的
time
equal
那个 另外 时距
和
那个 另外 时距
starts
了才到
那个 时距
或 有存在
另一个 过程
和
第三 时距
这样
那个 另外 过程
是
取消订单
的
instance
和
那个 协议
是
那个 另外 过程
的
patient
和
那个 另外 过程
出现 的
time
equal
那个 第三 时距
和
那个 第三 时距
starts
了才到
那个 时距
(=>
(
and
(
attribute
?Order
GTCOrder
)
(
agreementPeriod
?Order ?Period))
(
or
(
exists
(?Execute ?Time)
(
and
(
instance
?Execute
FillingAnOrder
)
(
patient
?Execute ?Order)
(
equal
(
WhenFn
?Execute) ?Time)
(
overlapsTemporally
?Time ?Period)))
(
exists
(?Cancel ?End)
(
and
(
instance
?Cancel
CancellingAnOrder
)
(
patient
?Cancel ?Order)
(
equal
(
WhenFn
?Cancel) ?End)
(
finishes
?End ?Period)))))
FinancialOntology.kif 2917-2933
如果
GTC订单
是
协议
的
attribute
和
时距
是
那个 协议
的
agreement
週期,
然后 有存在
过程
和
另一个 时距
这样
那个 过程
是
填写订单
的
instance
和
那个 协议
是
那个 过程
的
patient
和
那个 过程
出现 的
time
equal
那个 另外 时距
和
那个 时距
时段 和
那个 另外 时距
重叠 或 有存在
另一个 过程
和
第三 时距
这样
那个 另外 过程
是
取消订单
的
instance
和
那个 协议
是
那个 另外 过程
的
patient
和
那个 另外 过程
出现 的
time
equal
那个 第三 时距
和
那个 第三 时距
finishes
了才到
那个 时距
(=>
(
and
(
attribute
?Order
IOCOrder
)
(
agreementPeriod
?Order ?Period))
(
or
(
exists
(?Fill ?Time1)
(
and
(
instance
?Fill
FillingAnOrder
)
(
patient
?Fill ?Order)
(
equal
(
WhenFn
?Fill) ?Time1)
(
starts
?Time1 ?Period)))
(
exists
(?Kill ?Time2)
(
and
(
instance
?Kill
CancellingAnOrder
)
(
patient
?Kill ?Order)
(
equal
(
WhenFn
?Kill) ?Time2)
(
starts
?Time2 ?Period)))))
FinancialOntology.kif 2854-2870
如果
国际奥委会订单
是
协议
的
attribute
和
时距
是
那个 协议
的
agreement
週期,
然后 有存在
过程
和
另一个 时距
这样
那个 过程
是
填写订单
的
instance
和
那个 协议
是
那个 过程
的
patient
和
那个 过程
出现 的
time
equal
那个 另外 时距
和
那个 另外 时距
starts
了才到
那个 时距
或 有存在
另一个 过程
和
第三 时距
这样
那个 另外 过程
是
取消订单
的
instance
和
那个 协议
是
那个 另外 过程
的
patient
和
那个 另外 过程
出现 的
time
equal
那个 第三 时距
和
那个 第三 时距
starts
了才到
那个 时距
(=>
(
and
(
attribute
?Order
LimitOrder
)
(
partyToAgreement
?Order ?Broker)
(
attribute
?Broker
Broker
)
(
orderFor
?Order
Buying
?Object)
(
measure
?Object ?Quantity)
(
limitPrice
?Order
(
MeasureFn
?LimitPrice ?U))
(
instance
?U
UnitOfCurrency
)
(
askPrice
?Object
(
MeasureFn
?Price ?U) ?Time)
(
lessThanOrEqualTo
?Price ?LimitPrice))
(
holdsObligation
(
KappaFn
?Buy
(
and
(
instance
?Buy
Buying
)
(
patient
?Buy ?Object)
(
measure
?Object ?Quantity)
(
equal
(
WhenFn
?Buy) ?BuyingTime)
(
overlapsTemporally
?Time ?BuyingTime))) ?Broker))
FinancialOntology.kif 2008-2029
如果
限价订单
是
金融交易
的
attribute
和
协议
是
那个 金融交易
的
party
协议 和
经纪人
是
那个 协议
的
attribute
和
那个 金融交易
是 對於
安全
的
order
购买
和
那个 安全
的
measure
是
物理量
和
实数
测量单位
是
那个 金融交易
的
limit
价格 和
那个 测量单位
是
UnitOfCurrency
的
instance
和
施事体
为了
那个 安全
asks
另一个 实数
那个 测量单位
和
那个 另外 实数
是
lessThanOrEqualTo
那个 实数
,
然后
那个 协议
有义务执行
符号串
所描述的类别 的任务
(=>
(
and
(
attribute
?Order
LimitOrder
)
(
partyToAgreement
?Order ?Broker)
(
attribute
?Broker
Broker
)
(
orderFor
?Order
Selling
?Object)
(
measure
?Object ?Quantity)
(
limitPrice
?Order
(
MeasureFn
?LimitPrice ?U))
(
bidPrice
?Object
(
MeasureFn
?Price ?U) ?Time)
(
instance
?U
UnitOfCurrency
)
(
greaterThanOrEqualTo
?Price ?LimitPrice))
(
holdsObligation
(
KappaFn
?Sell
(
and
(
instance
?Sell
Selling
)
(
patient
?Sell ?Object)
(
measure
?Object ?Quantity)
(
equal
(
WhenFn
?Sell) ?SellingTime)
(
overlapsTemporally
?SellingTime ?Time))) ?Broker))
FinancialOntology.kif 2031-2052
如果
限价订单
是
金融交易
的
attribute
和
协议
是
那个 金融交易
的
party
协议 和
经纪人
是
那个 协议
的
attribute
和
那个 金融交易
是 對於
安全
的
order
出售
和
那个 安全
的
measure
是
物理量
和
实数
测量单位
是
那个 金融交易
的
limit
价格 和
施事体
bids
另一个 实数
那个 测量单位
對於
那个 安全
和
那个 测量单位
是
UnitOfCurrency
的
instance
和
那个 另外 实数
是
greaterThanOrEqualTo
那个 实数
,
然后
那个 协议
有义务执行
符号串
所描述的类别 的任务
(=>
(
and
(
attribute
?SYLLABLE
Stressed
)
(
instance
?WORD
Word
)
(
part
?SYLLABLE ?WORD))
(
not
(
exists
(?SYLLABLE2)
(
and
(
instance
?SYLLABLE2
Syllable
)
(
part
?SYLLABLE2 ?WORD)
(
attribute
?SYLLABLE2
Stressed
)
(
not
(
equal
?SYLLABLE2 ?SYLLABLE))))))
Mid-level-ontology.kif 19443-19453
如果
强调
是
客体
的
attribute
和
另一个 客体
是
字词
的
instance
和
那个 客体
是
那个 另外 客体
的
part
,
然后 不存在
那个 客体
2 这样
那个 客体
2 是
音节
的
instance
和
那个 客体
2 是
那个 另外 客体
的
part
和
强调
是
那个 客体
2 的
attribute
和
那个 客体
2 不
equal
那个 客体
(=>
(
and
(
attribute
?X
CommunalAttribute
)
(
instance
?X
Table
)
(
instance
?E1
Eating
)
(
agent
?E1 ?GRP1)
(
instance
?GRP1
GroupOfPeople
)
(
eventLocated
?E1 ?X))
(
modalAttribute
(
exists
(?GRP2 ?E2 ?X2)
(
and
(
instance
?E2
Eating
)
(
agent
?E2 ?GRP2)
(
not
(
equal
?GRP1 ?GRP2))
(
instance
?GRP2
GroupOfPeople
)
(
eventLocated
?E2 ?X2)
(
meetsTemporally
(
WhenFn
?E1)
(
WhenFn
?E2))
(
equal
?X ?X2)))
Possibility
))
Dining.kif 1207-1224
如果
CommunalAttribute
是
客体
的
attribute
和
那个 客体
是
表
的
instance
和
过程
是
进食
的
instance
和
施事体
是
那个 过程
的
agent
和
那个 施事体
是
一群人
的
instance
和
那个 过程
是
located
在
那个 客体
,
然后 有存在
实体
,
另一个 实体
, and 和
那个 客体
2 这样
那个 另外 实体
是
进食
的
instance
和
那个 实体
是
那个 另外 实体
的
agent
和
那个 施事体
不
equal
那个 实体
和
那个 实体
是
一群人
的
instance
和
那个 另外 实体
是
located
在
那个 客体
2 和
那个 过程
出现 的
time
接着
那个 另外 实体
出现 的
time
和
那个 客体
equal
那个 客体
2 的声明 has
可能性
的语气
(=>
(
and
(
attribute
?X
Multilingual
)
(
instance
?SPEAK
Speaking
)
(
agent
?SPEAK ?X))
(
modalAttribute
(
exists
(?LANG1 ?LANG2)
(
and
(
instance
?LANG1
SpokenHumanLanguage
)
(
instance
?LANG2
SpokenHumanLanguage
)
(
not
(
equal
?LANG1 ?LANG2))
(
or
(
patient
?SPEAK ?LANG1)
(
patient
?SPEAK ?LANG2))))
Possibility
))
Mid-level-ontology.kif 25748-25761
如果
Multilingual
是
施事体
的
attribute
和
过程
是
说话
的
instance
和
那个 施事体
是
那个 过程
的
agent
,
然后 有存在
实体
和
另一个 实体
这样
那个 实体
是
口语人类语言
的
instance
和
那个 另外 实体
是
口语人类语言
的
instance
和
那个 实体
不
equal
那个 另外 实体
和
那个 实体
是
那个 过程
的
patient
或
那个 另外 实体
是
那个 过程
的
patient
的声明 has
可能性
的语气
(=>
(
and
(
attribute
?X
Suite
)
(
instance
?X
HotelUnit
))
(
exists
(?R1 ?R2)
(
and
(
instance
?R1
HotelRoom
)
(
instance
?R2
HotelRoom
)
(
orientation
?R1 ?X
Inside
)
(
orientation
?R2 ?X
Inside
)
(
not
(
equal
?R1 ?R2)))))
Hotel.kif 1003-1014
如果
Suite
是
客体
的
attribute
和
那个 客体
是
HotelUnit
的
instance
,
然后 有存在
另一个 客体
和
第三 客体
这样
那个 另外 客体
是
HotelRoom
的
instance
和
那个 第三 客体
是
HotelRoom
的
instance
和
那个 另外 客体
在
那个 客体
的
内
和
那个 第三 客体
在
那个 客体
的
内
和
那个 另外 客体
不
equal
那个 第三 客体
(=>
(
and
(
birthdate
?A ?DAY)
(
instance
?DAY
(
DayFn
?D
(
MonthFn
?M
(
YearFn
?Y)))))
(
exists
(?CLASS ?FUTURE)
(
and
(
birthday
?A ?CLASS)
(
subclass
?CLASS
Day
)
(
instance
?FUTURE
Integer
)
(
equal
?CLASS
(
DayFn
?D
(
MonthFn
?M
(
YearFn
?FUTURE))))
(
greaterThan
?FUTURE ?Y))))
Mid-level-ontology.kif 24236-24246
如果
日
是
人类
的
birthdate
和
那个 日
是
正整数
day
的
instance
,
然后 有存在
另一个 有点 日
和
整数
这样
那个 人类
的
birthday
是
另一个 有点 日
和
那个 另外 有点 日
是
日
的
subclass
和
那个 整数
是
整数
的
instance
和
那个 另外 有点 日
equal
那个 正整数
day
和
那个 整数
是
greaterThan
另一个 整数
(=>
(
and
(
chromosomeSetCount
?SUB ?COLL ?I)
(
subCollection
?SUB ?COLL))
(
equal
?I
(
CardinalityFn
(
KappaFn
?I
(
subCollection
?SUB ?COLL)))))
VirusProteinAndCellPart.kif 829-836
如果
chromosomeSetCount
MonoploidChromosomeSet
,
群体
and
整数
和
那个 MonoploidChromosomeSet
是
那个 群体
的 真正的子集,
然后
那个 整数
equal
那个 整数
所描述的类别
instance
的数量
(=>
(
and
(
connectedBodyPartTypes
?P1 ?P2 ?O)
(
instance
?OC ?O)
(
not
(
attribute
?H
DiseaseOrSyndrome
)))
(
exists
(?PC1 ?PC2)
(
and
(
instance
?PC1 ?P1)
(
instance
?PC2 ?P2)
(
not
(
equal
?PC1 ?PC2))
(
part
?PC1 ?OC)
(
part
?PC2 ?OC)
(
connected
?PC1 ?PC2))))
Anatomy.kif 32-46
如果
connectedBodyPartTypes
有点 身体部位
,
另一个 有点 身体部位
and
有点 生物
和
有点 生物
C 是
那个 有点 生物
的
instance
和
疾病或综合症
不 是
另一个 客体
的
attribute
,
然后 有存在
第三 客体
和
第四 客体
这样
那个 第三 客体
是
有点 身体部位
的
instance
和
那个 第四 客体
是
另一个 有点 身体部位
的
instance
和
那个 第三 客体
不
equal
那个 第四 客体
和
那个 第三 客体
是
那个 有点 生物
C 的
part
和
那个 第四 客体
是
那个 有点 生物
C 的
part
和
那个 第三 客体
和
那个 第四 客体
是
connected
Display limited to 25 items.
Show next 25
Display limited to 25 items.
Show next 25
Sigma web home
Suggested Upper Merged Ontology (SUMO) web home
Sigma version 3.0 is
open source software
produced by
Articulate Software
and its partners