elsevier

package
v0.1.137 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2017 License: GPL-3.0 Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SourceID   = "85"
	Format     = "ElectronicArticle"
	Collection = "Elsevier Journals"
	Genre      = "article"
	// Default ris.type
	DefaultRefType = "EJOUR"
)

Variables

View Source
var (
	ErrNoYearFound     = errors.New("no year found")
	ErrTarFileRequired = errors.New("a tar file is required")
)

Functions

This section is empty.

Types

type Article added in v0.1.100

type Article struct {
	xml.Name   `xml:"article"`
	Xlink      string `xml:"xlink,attr"`
	Ce         string `xml:"ce,attr"`
	Sb         string `xml:"sb,attr"`
	Docsubtype string `xml:"docsubtype,attr"`
	Version    string `xml:"version,attr"`
	Lang       string `xml:"lang,attr"`
	ItemInfo   struct {
		Jid       string `xml:"jid"`
		Aid       string `xml:"aid"`
		Pii       string `xml:"pii"`
		Doi       string `xml:"doi"`
		Copyright struct {
			Type string `xml:"type,attr"`
			Year string `xml:"year,attr"`
		} `xml:"copyright"`
	} `xml:"item-info"`
	Head struct {
		ArticleFootnote string `xml:"article-footnote"`
		Dochead         struct {
			Id     string `xml:"id,attr"`
			Textfn string `xml:"textfn"`
		} `xml:"dochead"`
		Title       string `xml:"title"`
		AuthorGroup struct {
			Id     string `xml:"id,attr"`
			Author []struct {
				Id        string `xml:"id,attr"`
				Orcid     string `xml:"orcid,attr"`
				GivenName string `xml:"given-name"`
				Surname   string `xml:"surname"`
				Degrees   string `xml:"degrees"`
				CrossRef  struct {
					Refid string `xml:"refid,attr"`
					Id    string `xml:"id,attr"`
					Sup   string `xml:"sup"`
				} `xml:"cross-ref"`
				EAddress struct {
					Type string `xml:"type,attr"`
					Id   string `xml:"id,attr"`
				} `xml:"e-address"`
			} `xml:"author"`
			Affiliation struct {
				Id          string `xml:"id,attr"`
				Textfn      string `xml:"textfn"`
				Affiliation struct {
					Sa           string   `xml:"sa,attr"`
					Organization []string `xml:"organization"`
					AddressLine  string   `xml:"address-line"`
					City         string   `xml:"city"`
					State        string   `xml:"state"`
					PostalCode   string   `xml:"postal-code"`
					Country      string   `xml:"country"`
				} `xml:"affiliation"`
			} `xml:"affiliation"`
			Correspondence struct {
				Id    string `xml:"id,attr"`
				Label string `xml:"label"`
				Text  string `xml:"text"`
			} `xml:"correspondence"`
		} `xml:"author-group"`
		DateReceived struct {
			Day   string `xml:"day,attr"`
			Month string `xml:"month,attr"`
			Year  string `xml:"year,attr"`
		} `xml:"date-received"`
		DateRevised struct {
			Day   string `xml:"day,attr"`
			Month string `xml:"month,attr"`
			Year  string `xml:"year,attr"`
		} `xml:"date-revised"`
		DateAccepted struct {
			Day   string `xml:"day,attr"`
			Month string `xml:"month,attr"`
			Year  string `xml:"year,attr"`
		} `xml:"date-accepted"`
		Abstract []struct {
			Text         string `xml:",innerxml"`
			Lang         string `xml:"lang,attr"`
			Id           string `xml:"id,attr"`
			View         string `xml:"view,attr"`
			Class        string `xml:"class,attr"`
			SectionTitle string `xml:"section-title"`
			AbstractSec  []struct {
				Role         string `xml:"role,attr"`
				Id           string `xml:"id,attr"`
				View         string `xml:"view,attr"`
				SectionTitle string `xml:"section-title"`
				SimplePara   struct {
					Id   string `xml:"id,attr"`
					View string `xml:"view,attr"`
					List struct {
						Id       string `xml:"id,attr"`
						ListItem []struct {
							Id    string `xml:"id,attr"`
							Label string `xml:"label"`
							Para  struct {
								Id   string `xml:"id,attr"`
								View string `xml:"view,attr"`
							} `xml:"para"`
						} `xml:"list-item"`
					} `xml:"list"`
				} `xml:"simple-para"`
			} `xml:"abstract-sec"`
		} `xml:"abstract"`
		Keywords struct {
			Lang         string `xml:"lang,attr"`
			Id           string `xml:"id,attr"`
			View         string `xml:"view,attr"`
			Class        string `xml:"class,attr"`
			SectionTitle string `xml:"section-title"`
			Keyword      []struct {
				Id   string `xml:"id,attr"`
				Text string `xml:"text"`
			} `xml:"keyword"`
		} `xml:"keywords"`
	} `xml:"head"`
	// in case of a "simple-article", carry this field as well
	SimpleHead struct {
		Title       string `xml:"title"`
		AuthorGroup struct {
			Id     string `xml:"id,attr"`
			Author []struct {
				Id        string `xml:"id,attr"`
				GivenName string `xml:"given-name"`
				Surname   string `xml:"surname"`
				EAddress  struct {
					Id   string `xml:"id,attr"`
					Type string `xml:"type,attr"`
				} `xml:"e-address"`
			} `xml:"author"`
			Affiliation struct {
				Id          string `xml:"id,attr"`
				Textfn      string `xml:"textfn"`
				Affiliation struct {
					Sa           string   `xml:"sa,attr"`
					Organization []string `xml:"organization"`
					AddressLine  string   `xml:"address-line"`
					City         string   `xml:"city"`
					PostalCode   string   `xml:"postal-code"`
					Country      string   `xml:"country"`
				} `xml:"affiliation"`
			} `xml:"affiliation"`
		} `xml:"author-group"`
	} `xml:"simple-head"`
}

Article describes a single article.

func (Article) Authors added in v0.1.100

func (article Article) Authors() []finc.Author

func (Article) Date added in v0.1.100

func (article Article) Date() (time.Time, error)

Date returns the date of the article. Currently use the date-received attribute.

func (Article) Title added in v0.1.109

func (article Article) Title() string

type Dataset

type Dataset struct {
	xml.Name         `xml:"dataset"`
	SchemaVersion    string `xml:"schema-version,attr"`
	Xsi              string `xml:"xsi,attr"`
	SchemaLocation   string `xml:"schemaLocation,attr"`
	DatasetUniqueIds struct {
		ProfileCode      string `xml:"profile-code"`
		ProfileDatasetId string `xml:"profile-dataset-id"`
		Timestamp        string `xml:"timestamp"`
	} `xml:"dataset-unique-ids"`
	DatasetProperties struct {
		DatasetAction     string `xml:"dataset-action"`
		ProductionProcess string `xml:"production-process"`
	} `xml:"dataset-properties"`
	DatasetContent struct {
		JournalIssue []struct {
			Version struct {
				VersionNumber string `xml:"version-number"`
				Stage         string `xml:"stage"`
			} `xml:"version"`
			JournalIssueUniqueIds struct {
				Pii    string `xml:"pii"`
				Doi    string `xml:"doi"`
				JidAid struct {
					Jid  string `xml:"jid"`
					Issn string `xml:"issn"`
					Aid  string `xml:"aid"`
				} `xml:"jid-aid"`
			} `xml:"journal-issue-unique-ids"`
			JournalIssueProperties struct {
				Jid               string `xml:"jid"`
				Issn              string `xml:"issn"`
				VolumeIssueNumber struct {
					VolFirst string `xml:"vol-first"`
					Suppl    string `xml:"suppl"`
				} `xml:"volume-issue-number"`
				CollectionTitle string `xml:"collection-title"`
			} `xml:"journal-issue-properties"`
			FilesInfo struct {
				Ml []struct {
					Pathname   string `xml:"pathname"`
					Filesize   string `xml:"filesize"`
					Purpose    string `xml:"purpose"`
					DTDVersion string `xml:"dtd-version"`
				} `xml:"ml"`
			} `xml:"files-info"`
		} `xml:"journal-issue"`
		JournalItem []struct {
			CrossMark string `xml:"cross-mark,attr"`
			Version   struct {
				VersionNumber string `xml:"version-number"`
				Stage         string `xml:"stage"`
			} `xml:"version"`
			JournalItemUniqueIds struct {
				Pii    string `xml:"pii"`
				Doi    string `xml:"doi"`
				JidAid struct {
					Jid  string `xml:"jid"`
					Issn string `xml:"issn"`
					Aid  string `xml:"aid"`
				} `xml:"jid-aid"`
			} `xml:"journal-item-unique-ids"`
			JournalItemProperties struct {
				Pit                   string `xml:"pit"`
				ProductionType        string `xml:"production-type"`
				OnlinePublicationDate string `xml:"online-publication-date"`
			} `xml:"journal-item-properties"`
			FilesInfo struct {
				Ml []struct {
					Pathname   string `xml:"pathname"`
					Filesize   string `xml:"filesize"`
					Purpose    string `xml:"purpose"`
					DTDVersion string `xml:"dtd-version"`
				} `xml:"ml"`
			} `xml:"files-info"`
		} `xml:"journal-item"`
	} `xml:"dataset-content"`
}

Dataset describes journal issues and items, usually inside a dataset.xml.

type Elsevier added in v0.1.100

type Elsevier struct{}

Elsevier journals source.

func (Elsevier) Iterate added in v0.1.100

func (e Elsevier) Iterate(r io.Reader) (<-chan []span.Importer, error)

Iterate expects a reader over a tar source. Items are converted in a batch, then sent in once throw to the rest of the pipeline. This works as long as the working sets fit into memory.

type Pages added in v0.1.100

type Pages struct {
	FirstPage string `xml:"first-page"`
	LastPage  string `xml:"last-page"`
}

Pages is a helper, so we can calculate the total.

func (Pages) Total added in v0.1.100

func (p Pages) Total() string

Total number of pages. Will not do any plausibility checks.

type SchemaFunc added in v0.1.100

type SchemaFunc finc.IntermediateSchema

SchemaFunc make an already converted intermediate schema look like something, that can be converted into one. Workaround to satisfy the interface, for the moment.

func (SchemaFunc) ToIntermediateSchema added in v0.1.100

func (s SchemaFunc) ToIntermediateSchema() (*finc.IntermediateSchema, error)

ToIntermediateSchema does a type conversion only.

type SerialIssue

type SerialIssue struct {
	xml.Name  `xml:"serial-issue"`
	IssueInfo struct {
		Pii               string `xml:"pii"`
		Jid               string `xml:"jid"`
		Issn              string `xml:"issn"`
		VolumeIssueNumber struct {
			VolFirst string `xml:"vol-first"`
			IssFirst string `xml:"iss-first"`
		} `xml:"volume-issue-number"`
	} `xml:"issue-info"`
	IssueData struct {
		CoverDate struct {
			DateRange struct {
				StartDate string `xml:"start-date"`
			} `xml:"date-range"`
		} `xml:"cover-date"`
		Pages      []Pages `xml:"pages"`
		CoverImage string  `xml:"cover-image"`
	} `xml:"issue-data"`
	IssueBody struct {
		IncludeItem []struct {
			Pii   string `xml:"pii"`
			Doi   string `xml:"doi"`
			Pages string `xml:"pages"`
		} `xml:"include-item"`
		IssueSec []struct {
			SectionTitle string `xml:"section-title"`
			IncludeItem  []struct {
				Pii   string `xml:"pii"`
				Doi   string `xml:"doi"`
				Pages Pages  `xml:"pages"`
			} `xml:"include-item"`
		} `xml:"issue-sec"`
	} `xml:"issue-body"`
}

SerialIssue contains information about an issue, usually inside issue.xml.

type Shipment added in v0.1.100

type Shipment struct {
	// contains filtered or unexported fields
}

Shipment is a tar export, looks like SAXC0000000000046A.tar. The tar is not extracted but loaded into memory at once. Issues and articles are stored in a map, each keyed on the PII.

func NewShipment added in v0.1.100

func NewShipment(r io.Reader) (Shipment, error)

NewShipment creates a new bag of data from a given tarfile.

func (Shipment) BatchConvert added in v0.1.100

func (s Shipment) BatchConvert() ([]span.Importer, error)

BatchConvert converts all items for a shipment into importable objects.

func (Shipment) String added in v0.1.100

func (s Shipment) String() string

String describes the shipment briefly.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL