-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Usul: Ayat dan Biblio #33
Comments
Kajian Kes: ZoteroZotero ialah pengurus rujukan bersumber terbuka. Data-datanya disimpan secara setempat dan boleh dibaca begitu sahaja. Dengan membuka Ringkasnya, jadual struct Items {
id: i64,
itemType: ItemType,
// Daripada terus mentakrif data {tarikh: A, tajuk: B},
// Zotero mentarkrif data sebagai [('tarikh', A), ('tajuk', B)]
// untuk membolehkan jenis medan nilai mengikut `ItemType` berbeza,
// misalnya: [('tahun', A),('tajuk_buku', B)] untuk ItemType("Buku")
// dan [('tarikh', A), ('tajuk_rencana', B)] untuk ItemType("Rencana")
values: Vec<(Field, Value)>,
// Perkara yang sama juga untuk `Creator`.
// Misalnya: [(A, 'penulis')] untuk ItemType("Buku")
// dan [(B, 'pengarah')] untuk ItemType("Filem")
creators: Vec<(Creator, CreatorType)>,
}
struct Field(String);
struct Value(String);
struct Creator(String);
struct ItemType(String);
struct CreatorType {
itemtype: ItemType,
name: String,
} Rajah ERD
|
Kajian Kes: HayagrivaHayagriva ialah format bibliografi moden yang menandingi BibTeX atau RIS. Daripada dokumentasinya (ditebalkan di sini),
Disebabkan SQL tidak seanjal JSON dalam membolehkan data sembarangan bentuk, objektif untuk "keep the number of fields it uses small" itu sesuai untuk kegunaan kita. Format FailHayagriva menggunakan format yaml untuk menyusun datanya. Bentuk data nampaknya agak leper yang mudah untuk dipindahkan jadi jadual SQL melainkan beberapa nilai yang perlu dinormalkan semula. Bentuknya begini: # [panduan baca]
# - <a> : ganti `a` dengan nilai
# - a | b : `a` atau `b`
# - a[] : senarai yang sejenis `a`.
# - {a: A, b: B}: dictionary (sila format balik ikut cara yaml)
<citekey>:
type: string
title: string
author: string | string[]
date: Date
# a list of object with the same structure
parent: Recursive[]
### -- Nampaknya nilai-nilai di bawah ini untuk jenis-jenis khusus
abstract: string
genre: string
editor: string | string[]
# persons involved with the item that do not fit author or editor
affiliated: {role: string, name: string | string[]}[]
call-number: string
publisher: string | {name: string, location: string}[]
# location at which an entry is physically located or took place.
location: string
organization: string
issue: numeric | string
volume: numeric | string
volume-total: numeric
edition: numeric | string
page-range: numeric | string # e.g. 812-847
page-total: numeric
# the time range within the parent this item starts and ends at
time-range: timestamp range
runtime: timestamp
url: string | {value: string, date: date}
serial-number: string | {<type>: string} # e.g. {doi: <doi value here>, arxiv: <arxiv value here>}
language: string
archive: string
archive-location: string
note: string |
Mengusulkan dokumentasi penggunaan kata dalam ayat serta maklumat bibliografi.
Cadangan bentuk datanya lebih kurang begini:
Struct
Biblio
seharusnya diambil inspirasi dari pengurus rujukan seperti Zotero, Mendeley dan EndNote. Ia seharusnya boleh menguruskan media pelbagai termasuklah media cetak akademik, bukan akademik, media video, media sosial, dsb.The text was updated successfully, but these errors were encountered: