如何在 RDF 中对长而多语言的人名进行编码?
How to encode long and multilingual personal names in RDF?
例如,完整的职位名称是
Steven Paul "Steve" Jobs
天后歌手是
Freddie Mercury
,本名 Farrokh Bulsara
。
埃尔顿·约翰 Sir Elton Hercules John
出生于 Reginald Kenneth Dwight
。
如何用RDF存储所有这些?不同语言的同名怎么办? FOAF dictionary 够吗?
这是将很多不同的问题合而为一。让我们从史蒂夫·乔布斯开始。如何记录下来取决于您希望此数据可用的粒度。但是,无论您想要哪种方式,FOAF vocabulary 都足以表达。 simplest/least 细粒度的方法只是将整个名称粘贴在 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" .
一个方便的组合是将任何您喜欢的 'default name' 编码为 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
属性 的第二个值,但是这样很难区分哪个名称是 'current'。如果这种区别很重要,您将需要为此使用其他东西。 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
例如,完整的职位名称是
Steven Paul "Steve" Jobs
天后歌手是
Freddie Mercury
,本名 Farrokh Bulsara
。
埃尔顿·约翰 Sir Elton Hercules John
出生于 Reginald Kenneth Dwight
。
如何用RDF存储所有这些?不同语言的同名怎么办? FOAF dictionary 够吗?
这是将很多不同的问题合而为一。让我们从史蒂夫·乔布斯开始。如何记录下来取决于您希望此数据可用的粒度。但是,无论您想要哪种方式,FOAF vocabulary 都足以表达。 simplest/least 细粒度的方法只是将整个名称粘贴在 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" .
一个方便的组合是将任何您喜欢的 'default name' 编码为 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
属性 的第二个值,但是这样很难区分哪个名称是 'current'。如果这种区别很重要,您将需要为此使用其他东西。 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