Source code for fairgraph.openminds.publications.scholarly_article

"""
<description not available>
"""

# this file was auto-generated

from openminds.properties import Property
from openminds.v4.publications import ScholarlyArticle as OMScholarlyArticle
from fairgraph import KGObject

from fairgraph.utility import as_list
from .publication_issue import PublicationIssue
from .periodical import Periodical
from datetime import date
from openminds import IRI


[docs] class ScholarlyArticle(KGObject, OMScholarlyArticle): """ <description not available> """ type_ = "https://openminds.om-i.org/types/ScholarlyArticle" default_space = "livepapers" # forward properties are defined in the parent class (in openMINDS-Python) reverse_properties = [ Property( "related_to", [ "openminds.v4.computation.ValidationTestVersion", "openminds.v4.computation.WorkflowRecipeVersion", "openminds.v4.core.DatasetVersion", "openminds.v4.core.MetaDataModelVersion", "openminds.v4.core.ModelVersion", "openminds.v4.core.SoftwareVersion", "openminds.v4.core.WebServiceVersion", "openminds.v4.publications.LivePaperVersion", "openminds.v4.sands.BrainAtlasVersion", "openminds.v4.sands.CommonCoordinateSpaceVersion", ], "relatedPublication", reverse="related_publications", multiple=True, description="reverse of 'related_publications'", ), ] existence_query_properties = ("name",) def __init__( self, name=None, abstract=None, authors=None, cited_publications=None, copyright=None, creation_date=None, custodians=None, digital_identifier=None, editors=None, funding=None, iri=None, is_part_of=None, keywords=None, license=None, modification_date=None, pagination=None, publication_date=None, publisher=None, related_to=None, version_identifier=None, id=None, data=None, space=None, release_status=None, ): return KGObject.__init__( self, id=id, space=space, release_status=release_status, data=data, name=name, abstract=abstract, authors=authors, cited_publications=cited_publications, copyright=copyright, creation_date=creation_date, custodians=custodians, digital_identifier=digital_identifier, editors=editors, funding=funding, iri=iri, is_part_of=is_part_of, keywords=keywords, license=license, modification_date=modification_date, pagination=pagination, publication_date=publication_date, publisher=publisher, related_to=related_to, version_identifier=version_identifier, ) def get_journal(self, client, with_volume=False, with_issue=False): journal = volume = issue = None if self.is_part_of: issue_or_volume = self.is_part_of.resolve( client, release_status=self.release_status, follow_links={"is_part_of": {}} ) if isinstance(issue_or_volume, PublicationIssue): volume = issue_or_volume.is_part_of issue = issue_or_volume else: volume = issue_or_volume issue = None journal = volume.is_part_of if not isinstance(journal, Periodical): journal = journal.resolve(client, release_status=self.release_status) retval = [journal] if with_volume: retval.append(volume) if with_issue: retval.append(issue) if not with_volume and not with_issue: return journal else: return tuple(retval) def get_citation_string(self, client): # Eyal, G., Verhoog, M. B., Testa-Silva, G., Deitcher, Y., Lodder, ' # - 'J. C., Benavides-Piccione, R., ... & Segev, I. (2016). Unique ' # - 'membrane properties and enhanced signal processing in human ' # - 'neocortical neurons. Elife, 5, e16553. self.resolve(client, follow_links={"is_part_of": {}, "authors": {}}) authors = as_list(self.authors) if len(authors) == 1: author_str = authors[0].full_name elif len(authors) > 1: author_str = ", ".join(au.full_name for au in authors[:-1]) author_str += " & " + self.authors[-1].full_name journal, volume, issue = self.get_journal(client, with_volume=True, with_issue=True) title = self.name if title and title[-1] != ".": title += "." journal_name = journal.name if journal else "" volume_number = f"{volume.volume_number}: " if (volume and volume.volume_number != "placeholder") else "" year = self.publication_date.year if self.publication_date else "unpublished?" return f"{author_str} ({year}). {title} {journal_name}, {volume_number}{self.pagination or ''}."