如何在RDF中编码长的和多语言的人名?

如何在RDF中编码长的和多语言的人名?,rdf,ontology,foaf,Rdf,Ontology,Foaf,例如,完整的作业名称是 Steven Paul“Steve”Jobs 当女王歌手 Freddie Mercury出生名为Farrokh Bulsara 埃尔顿·约翰是埃尔顿·赫拉克勒斯·约翰爵士,出生于雷金纳德·肯尼斯·德怀特 如何用RDF存储所有这些?不同语言中的同一个名字呢?够了吗 这是一个由许多不同问题组合而成的问题。让我们从史蒂夫·乔布斯开始。如何记录这些内容取决于您希望这些数据可用的粒度。不管你想用哪种方式,它都足够有表现力。最简单/最不细粒度的方法就是将整个名称粘贴在foaf:nam

例如,完整的作业名称是

Steven Paul“Steve”Jobs

当女王歌手

Freddie Mercury
出生名为
Farrokh Bulsara

埃尔顿·约翰是埃尔顿·赫拉克勒斯·约翰爵士,出生于雷金纳德·肯尼斯·德怀特


如何用RDF存储所有这些?不同语言中的同一个名字呢?够了吗

这是一个由许多不同问题组合而成的问题。让我们从史蒂夫·乔布斯开始。如何记录这些内容取决于您希望这些数据可用的粒度。不管你想用哪种方式,它都足够有表现力。最简单/最不细粒度的方法就是将整个名称粘贴在
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

一般来说,情况更多。例如,在俄语中,姓名有3个固定的组成部分:姓名、主名和姓氏。FOAF中是否有客户财产?此外,在英语中还有更复杂的情况,比如比尔·盖茨,他是威廉·亨利·比尔·盖茨三世。我可以用FOAF单独标记“数字”吗?好的,当然这些不是你最初的问题。看看它们,我不认为FOAF在这些情况下有标准属性,所以你要么泛化以适应其中一个标准属性,要么只是扩展,引入你自己的属性(或者重用另一个现有的vocab,我记得类似的东西,如果我发现它,就会添加链接)