例如,完整的作业名称是
Steven Paul "Steve" Jobs
而女王歌手是
Freddie Mercury
,姓氏为Farrokh Bulsara
。
Elton John Sir Elton Hercules John
生于Reginald Kenneth Dwight
。
如何使用RDF存储所有这些内容?不同语言的同名怎么样? FOAF dictionary足够吗?
答案 0 :(得分:3)
这是一个很多不同的问题。让我们从史蒂夫乔布斯开始。如何将其写下来取决于您希望此数据可用的粒度。无论你想要哪种方式,FOAF vocabulary都足够表达。最简单/最细粒度的方法就是将整个名称粘贴在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