也许看看Attempto 项目,其目标是定义一个可以自动映射到一阶逻辑的英语片段。这项工作的一部分是映射到 OWL 2 DL。参见例如在 ACE 中编写 OWL 本体。
你的例句
Bob, over on 42nd street, will have a job at the Mall after the owner approves
可以用 Attempto Controlled English (ACE) 重写为
If an owner of Mall approves John whose address is "42nd street"
then he is employed by Mall.
(或类似的东西,取决于你到底想说什么。)
这句话可以自动映射到一个OWL2 SubClassOf -axiom
SubClassOf(
ObjectIntersectionOf(
ObjectOneOf(
:Mall
)
ObjectSomeValuesFrom(
:owner
ObjectSomeValuesFrom(
:approve
ObjectIntersectionOf(
ObjectOneOf(
:John
)
DataHasValue(
:address
"42nd street"^^<http://www.w3.org/2001/XMLSchema#string>
)
)
)
)
)
ObjectSomeValuesFrom(
:employ
ObjectOneOf(
:John
)
)
)
此映射实现了有关基本词类的某些约定:
- 普通名词映射到 OWL 类名
- 专有名称映射到 OWL 个人名称
- 及物动词、及物形容词和of -constructions 映射到 OWL 属性名称:如果参数是数字或字符串,则为数据属性名称,否则为对象属性名称
此映射不支持 ACE 支持的许多词类,例如不及物动词和双及物动词、不及物形容词和副词。覆盖范围可以扩展,例如不及物动词可以映射到 OWL 类(例如,“ John sleeps. ”可以被理解为表示个体John属于sleepers类)。不太清楚如何处理例如双及物动词和副词。
一般来说,英语在其构建块(名词、不同类型的形容词、不同类型的动词......)方面比 OWL(具有类、个体、对象和数据属性,以及(类型化的)数据项)要丰富得多例如字符串和数字)。这只是“单词与实体”级别。时态之类的东西更复杂,因为它们有许多英语的表面表示,并且在 OWL 方面没有任何内置插件。