如何在MySQL表中保存语义信息?

时间:2010-10-31 11:03:29

标签: mysql database semantics

我希望在表格中保存一些有关数据的语义信息。如何在MySQL中保存此信息,以便我可以访问数据并使用语义数据搜索文章。

例如,我有一篇关于Apple和Microsoft的文章。语义数据就像是 人:史蒂夫乔布斯 人:史蒂夫鲍尔默 公司:Apple
公司:微软

我想保存信息而不会丢失史蒂夫乔布斯和史蒂夫鲍尔默是人,而苹果和微软是公司的信息。我也想搜索有关史蒂夫乔布斯/苹果的文章。

人和公司不是唯一可能的类型,因此添加新字段是不可行的。由于要保存数据类型,我不能直接使用FullText字段类型。

更新 - 这是我正在考虑的两个选项。

  1. 将数据保存为全文列中的序列化php数组。
  2. 创建另一个包含3列
  3. 的表格

    -

    --------------------------------  
    | id | subject | object        |
    --------------------------------
    |  1 | Person  | Steve Ballmer |
    |  1 | Person  | Steve Jobs    |
    |  1 | Company | Microsoft     |
    |  1 | Company | Apple         |
    |  2 | Person  | Obama         |
    |  2 | Country | US            |
    --------------------------------
    

2 个答案:

答案 0 :(得分:2)

你正在努力解决一个棘手而有趣的问题!您可以通过查看都柏林核心元数据计划获得一些有趣的想法。

http://dublincore.org/metadata-basics/

为简单起见,请将您的元数据项视为一个表中的所有内容。

e.g。

Ballmer employed-by Microsoft
Ballmer is-a Person
Microsoft is-a Organization
Microsoft run-by Ballmer
SoftImage acquired-by Microsoft
SoftImage is-a Organization
Joel Spolsky is-a Person
Joel Spolsky formerly-employed-by Microsoft
Spolsky, Joel dreamed-up StackOverflow
StackOverflow is-a Website
Socrates is-a Person
Socrates died-on (some date)

这里的诀窍是,你的第一和第三列值中的一些(但不是全部)需要是任意文本并且作为第一列和第三列的索引。然后,如果你想弄清楚你的数据库在Spolsky上有什么,你可以全文搜索你的第一和第三列的名字。你会得到一堆三胞胎。你找到的价值会告诉你很多。如果您想了解更多信息,可以再次搜索。

要解决此问题,您可能需要有五列,如下所示:

Full text subject  (whatever your user puts in)
Canonical subject (what your user puts in, massaged into a standard form)
Relation (is-a etc)
Full text object
Canonical object

您的主题和客体的规范形式的重点是允许这样的查询工作,即使您的用户在两个不同的地方放入“Joel Spolsky”和“Spolsky,Joel”,即使他们的意思是同一个人

SELECT * 
  FROM relationships a
  JOIN relationships b (ON a.canonical_object = b.canonical_subject)
 WHERE MATCH (subject,object) AGAINST ('Spolsky')

答案 1 :(得分:2)

您可能希望通过制作2个表来规范化数据表。

----------------
| id | subject |
----------------
|  1 | Person  |  
|  2 | Company |
|  3 | Country |
----------------

-----------------------------------  
| id | subject-id | object        |
-----------------------------------
|  1 |          1 | Steve Ballmer |
|  2 |          1 | Steve Jobs    |
|  3 |          2 | Microsoft     |
|  4 |          2 | Apple         |
|  5 |          1 | Obama         |
|  6 |          3 | US            |
-----------------------------------

这使您可以更轻松地查看已定义的所有不同主题类型。