Open tankarup opened 3 years ago
如月千早は明らかな日本語だということは分かります(実は中国語かもしれないけど、それはないはず...)
一方ユニット名は、造語も多くあります。
L'Anticaって何語なんでしょう...
そういったことを考えたくない + ユニットのリソースで統一したい = 全部stringにしよう
といった経緯があります。
とはいえ、 #250 をやっていった後であれば、schema:name
は様々な言語が入り混じっても良いかもしれませんね
みなさま、ありがとうございます。
いただいたご意見を合わせて考えますと、
・基本はrdf:datatype
でよい
・多言語化する場合はxml:lang
を使用する。
・言語不明の場合はrdf:datatype
を使う。
・schema:name
が複数存在する場合は、rdfs:label
を追加する。
という指針でよろしいでしょうか。
いくつか事例を考えてみました。xml:lang
を使う場合は、公式媒体の表記を尊重することが重要であるように感じました。
例:プリンセススターズ
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">プリンセススターズ</rdfs:label>
<schema:name xml:lang="ja">プリンセススターズ</schema:name>
<schema:name xml:lang="en">Princess Stars</schema:name> <!--CDなどで英語表記あり-->
<imas:nameKana xml:lang="ja">ぷりんせすすたーず</imas:nameKana>
例:アスタリスク
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">*(Asterisk)</rdfs:label>
<schema:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">*</schema:name>
<schema:name xml:lang="en">Asterisk</schema:name>
<!-- <schema:name xml:lang="ja">アスタリスク</schema:name> かな表記している公式媒体はありましたっけ…? -->
<imas:nameKana xml:lang="ja">あすたりすく</imas:nameKana>
例:TIntMe!
<rdfs:label rdf:datatype="http://www.w3.org/2001/XMLSchema#string">TIntMe!</rdfs:label>
<schema:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">TIntMe!</schema:name>
<!-- <schema:name xml:lang="en">TIntMe!</schema:name> 英語とは言えない-->
<!-- <schema:name xml:lang="ja">ティントミー!</schema:name> 日本語表記はしないとおもう -->
<imas:nameKana xml:lang="ja">てぃんとみー</imas:nameKana> <!-- 読み方として表記するのはあり -->
事例に違和感がありましたらコメントいただければと思います。
また作業を進めることになった場合、 (a) 現在のschema:nameをrdfs:labelに一括変換したあとに、個別でschema:name, imas:nameKanaの追加をおこなう (b) 現在のschema:nameをrdfs:labelとして一括追加したあとに、個別でschema:name, imas:nameKanaの追加・修正をおこなう (c) 個別でrdfs:label, schema:name, imas:nameKanaの追加・修正をおこなう のいずれが適切でしょうか?
(c)であれば私個人でもちまちまと作業できますが、(a)(b)の場合は影響が大きそうなので私では手を出しづらいです。
良くないです。
同じ述語に複数の rdf:datatype
を混ぜると SPARQL で問い合わせるのが難しくなります。 rdfs:label
には xsd:string
、 schema:name
には rdf:langString
のようにそれぞれ統一したほうが良いです。
それと rdf:datatype
と xml:lang
を同列に扱われているように聞こえるのですが、これは概念が別です。同列になるのは xsd:string
と rdf:langString
であって、それぞれ rdf:datatype
の一種です。 xml:lang
を付与すると自動的に rdf:datatype
が rdf:langString
に解釈されます。
説明が難しいですが、 @crssnky さんのこの記事がわかりやすかったので一度ご覧になってください(参考資料をググってたら偶然出てきた)。
分かりやすく解説いただきありがとうございます。@crssnky さんの記事も拝見させていただきました。勉強が必要だなぁと再認識いたしました。
同じ述語に複数の rdf:datatype を混ぜると SPARQL で問い合わせるのが難しくなります。
なるほど。検索時にどのような影響が出るのかといった知識がありませんでした。ありがとうございます。
rdf:datatype と xml:lang を同列に扱われているように聞こえるのですが、
ご指摘の通り同じ位置づけで認識しておりました。失礼しました。
あらためて、"プリンセススターズ"に英語名として"Princess Stars"を追加するケースを考えますと、
・全てのユニットデータに対し、<schema:name rdf:datatype=xsd:string>
を<schema:name rdf:datatype=rdf:langString xml:lang=*>
に変更することが必要
・ただし言語が特定できない造語名称(TIntMe!, など)は`<schema:name rdf:datatype=rdf:langString xml:lang=>`に入れることができない問題が残る。
との認識でよろしかったでしょうか。
その場合、schema:alternateName
にPrincess Starsを入れるのが問題が少ないのでしょうか。
はい、その認識で問題ございません。
schema:alternateName
が現実的な解決策かもしれませんね。 @crssnky さんのおっしゃる通り、言語で分類できないユニット名もありますし、言語がわかったとしても "L'Antica"@it
などとするのはちょっと違う気がします。
ちなみに、拙作の https://mltd.pikopikopla.net ではどうしていたかなと思って確認したら、 schema:alternateName
に xsd:string
を突っ込んでいました。
(話が脱線しますが、上記で RDF の記述に用いているのが Turtle です。RDF を記述する構文は複数あって、im@sparql では RDF/XML が使われていますが、Turtle は比較的コンパクトで読み書きしやすいフォーマットとして勧告されています。)
(b) 現在のschema:nameをrdfs:labelとして一括追加したあとに、個別でschema:name, imas:nameKanaの追加・修正をおこなう
これは比較的安全な印象もありますがどうでしょう。分解すると:
「schema:nameをrdfs:labelとして一括追加」 (imas:Unit
を対象として)
schema:name
がその意図で1個だけ入っているはず(?)だから心配することはなくコピペでいけるともいえる?(上の)あとに、個別でschema:name の追加・修正をおこなう
schema:name
には rdf:langString
」と決まっているほうがクエリ書きやすいのはたしかschema:alternateName
で入れていくのは比較的安全にできそう
schema:alternateName
は,1個特定するためというより,検索でより広くマッチさせるために使われている気がする? つまりSPARQLでもリテラルマッチじゃなくて,変数にとってstr(),filter()される系なのでは・・・?という推測(上の)あとに、個別でimas:nameKana の追加・修正をおこなう
banjunさん、分解ありがとうございます。 その方法が今の所ベストかと思います。
ここは単なる述語と値の追加なので,いつやっても安全にみえる
の通り、 「schema:nameをrdfs:labelとして一括追加」 (imas:Unitを対象として) の後にやっていくのが良いでしょう。 ユニットに関する別issueとして #421 があるのですが、それも↑の後が良さそうですね。 (リソース分割の際は、rdfs:labelの追加を忘れずに!)
皆さま、ありがとうございます。
imas:nameKana
の追加を検討していましたが、rdfs:label
の追加(およびリソースの分割も?)を待ってから実施したいと思います。
schema:name
に付けられている属性ですが、ユニットの場合はrdf:datatype
が使われています。 例:<schema:name rdf:datatype="http://www.w3.org/2001/XMLSchema#string">灼熱少女</schema:name>
一方、アイドルの場合はxml:lang
が使われています。 例:<schema:name xml:lang="ja">櫻木真乃</schema:name>
どちらの属性を使うのか、基準を教えていただけませんでしょうか。
デフォルトは
rdf:datatype
で、多国語化した場合にxml:lang
に変更するのでしょうか?(ユニット「プリンセススターズ」に"Princess Stars"を追加することを想定しています。)