你们中的一些人或许已经听说过FactEngine(www.factengine.ai)。FactEngine致力于革新人们对数据库和数据库查询的认知。
数据库行业长期面临困境,直到最近,人们对更加简便的查询方式的需求才逐渐被满足。早在上世纪90年代初期,人们就开始探索自然语言查询作为一种简化数据库访问的方式。当时,结构化查询语言(SQL)盛行,关系型数据库主导了整个行业。
然而,关系型数据库的一个主要缺点是SQL编写复杂,反向工程耗时。例如,下面的SQL查询示例:
SELECT [Lecturer].FirstName, [Lecturer].LastName, [School].SchoolName, [Faculty].FacultyName, [TimetableBooking].LecturerId, [TimetableBooking].Semester, [TimetableBooking].WeekDay, [TimetableBooking].PeriodNr, [TimetableBooking].RoomRoomNr, [Lecturer].EmailAddress, [TimetableBooking].ClassId
FROM Lecturer, School, Faculty, TimetableBooking, Room, Position, Timeslot
WHERE Lecturer.SchoolId = School.SchoolId AND School.FacultyId = Faculty.FacultyId AND TimetableBooking.FacultyId = Faculty.FacultyId AND TimetableBooking.RoomRoomNr = Room.RoomRoomNr AND Lecturer.PositionId = Position.PositionId AND TimetableBooking.Semester = Timeslot.Semester AND TimetableBooking.WeekDay = Timeslot.WeekDay AND TimetableBooking.PeriodNr = Timeslot.PeriodNr AND Room.RoomName = 'A1'
这段代码确实让人头疼。
因此,长期以来,人们一直寻求一种自然语言查询的方法,以简化数据库访问过程。图数据库的兴起部分原因是查询语言更能自然地反映实体之间的关系。例如,一个简单的图查询可能是这样的:
MATCH (p1:person)-[:FRIEND-WITH]-(p2:person)
WHERE p1.name = "Jack"
RETURN p2.name
使用FactEngine,只需输入自然语言查询即可:
谁是杰克的朋友?
FactEngine的优势在于,使用受控自然语言(一种受控的自然语言语法),无论是在图数据库还是关系数据库上运行都无关紧要。
早期的文章提到,任何关系数据库都可以被视为图数据库,所有数据库本质上都是多模型的。这意味着可以用自然语言查询任何数据库,即使它们是受控的。这是因为图形数据库和关系数据库在概念上是同构的,即它们在概念上可以视为相同的。
受控自然语言是一种自然语言语法,具有一定的控制,以确保清晰和一致。FactEngine的受控自然语言之所以有效,是因为它与其他语言同构。
自然语言查询曾经被视为“蛇油”,因为大多数尝试都依赖推理引擎将自然语言映射到查询语言和数据库结构。这可能导致误解自然语言查询的情况。而受控自然语言则解决了这个问题,因为它提供了清晰的查询结构,直到人工智能通用技术(AGI)能够自行处理查询为止。
FactEngine需要一个基础架构,使其能够构建受控自然语言查询。作者的前公司Viev在开发波士顿概念建模工具方面取得了进展,该工具帮助用户开发包含自然语言构造的数据模型。
此外,FactEngine的灵感来源于Grakn查询语言。Grakn查询语言如下:
match $p isa person; $i isa issue; $auth1($i, $p) isa authorship;
$r isa repository; $cr($i, $r) isa contains;
$m isa milestone; $cm($i, $m) isa contains;
$p2 isa person; $p != $p2; $ass($i, $p2) isa assignment;
$comm isa comment; $t ($i, $comm) isa thread;
$p3 isa person; $p2 != $p3; $auth2 ($comm, $p3) isa authorship;
$i2 isa issue; $dep ($i, $i2) isa dependency;
limit 5; offset 0; get;
而同样的查询在FactEngine中则更为简洁:
找到与问题相关的人员。
受控自然语言查询提供了与SQL和图形查询相同的实用性,并且能够帮助用户更轻松地编写查询。这使得软件能够更好地辅助用户。
自然语言查询使得编写查询变得更加容易,尤其是在人工智能时代。人们希望从数据库中获得更多的信息,而不必成为信息技术专家。自然语言查询使得面向客户的应用程序可以直接查询数据库,而不必依赖更多的技术人员。
自然语言查询也易于阅读和分享,编写后可以轻松地与其他人共享,他们可以在阅读后立即理解查询的目的。
传统的查询语言如SQL和当前的图形查询语言(除了FactEngine的知识语言)源于一个复杂的时代。FactEngine通过对象角色建模软件的研究和开发,以及基于事实的建模研究,实现了非凡的成就。这些技术使得模型可以轻松地转换为关系数据库的实体关系图(ERD)或图形数据库的属性图模式(PGS)。
用户无需关心自己是在图形数据库还是关系数据库上操作,只需简单地编写查询即可。
FactEngine是一种新型的商业数据库查询语言技术。对于直接到SQL的映射,该技术已经相当成熟并且在不断发展。图形查询语言(如Neo4j)也具备SQL O/JDBC驱动程序,因此通过SQL和图形数据库进行概念验证已经实现。
总之,FactEngine提供了一种更简洁、更直观的方式来查询数据库,极大地提升了用户体验。