2

例如,完整的作业名称是

Steven Paul "Steve" Jobs

而女王歌手是

Freddie Mercury与出生的名字Farrokh Bulsara

埃尔顿约翰是Sir Elton Hercules John和出生Reginald Kenneth Dwight

如何用 RDF 存储所有这些?不同语言的同名怎么办?FOAF 字典足够吗?

4

1 回答 1

3

这是许多不同的问题合二为一。让我们从史蒂夫乔布斯开始。如何写下来取决于您希望这些数据可用的粒度。不管你想要哪种方式,FOAF 词汇都足够富有表现力。最简单/最不细粒度的方法就是将整个名称粘贴在foaf:name属性中:

:steveJ a foaf:Person ;
        foaf:name "Steven Paul \"Steve\" Jobs" .

但是,FOAF 还提供了一些更具体的名称属性来进一步分解。例如:

:steveJ a foaf:Person ;
        foaf:givenName "Steven Paul";
        foaf:familyName "Jobs" ;
        foaf:nick "Steve" .

一个方便的组合是将您喜欢的任何“默认名称”编码为rdfs:label,这是大多数使用 RDF 的应用程序最初用于显示资源的名称。例如像这样:

:steveJ a foaf:Person ;
        rdfs:label "Steve Jobs";
        foaf:name "Steven Paul \"Steve\" Jobs";
        foaf:givenName "Steven Paul";
        foaf:familyName "Jobs" ;
        foaf:nick "Steve" .

因此,作为该数据的作者,您在 FOAF 词汇中具有足够的表达能力,可以按照您认为合适的方式对其进行分解 - 甚至可以提供多余的替代方案,就像您在上面看到的那样。

现在,至于 Freddie Mercury、Elton John 和他们的出生名,FOAF 没有为此提供特定的属性。您当然可以将其记录为foaf:name属性的第二个值,但这使得很难区分哪个名称是“当前”名称。如果这种区别很重要,您将需要为此使用其他东西。DBPedia 提供了dbo:birthName对这种情况非常具体或更一般的属性dbo:alias

最后,不同的语言:这相当简单。RDF 文字带有一个(可选的)语言标签,用于指定书写名称所使用的语言。让我们以一个城市名称为例(因为我更容易用不同的语言想出不同的名称)——荷兰城市海牙:

:TheHague rdfs:label "The Hague"@en ; // English name
          rdfs:label "Den Haag"@nl ;  // Dutch name
          rdfs:label "La Haye"@fr .   // French name
于 2015-08-17T21:28:25.587 回答