This problem can be simplified by putting restrictions on the data found in the number
field and using existing citation commands.
Here I've assumed that patent numbers contain at least three consecutive digits. The numbers can have an alphabetic prefix or suffix, possibly with a dash separator. New field formats are defined to add a thousands separator in patent numbers. This is done via some hacks based on the numprint package. The three citation variants you're wanting can be achieved on the basis of any standard author-year citation style.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=authoryear-comp,sorting=nyt]{biblatex}
\usepackage[colorlinks]{hyperref}
\usepackage{numprint}
% Just for demonstration
\ExecuteBibliographyOptions{maxnames=1,firstinits}
\makeatletter
% Have \numprint ignore characters in prefix/suffix
\renewcommand*\nprt@ignorelist{-ABCDEFGHIJKLMNOPQRSTUVWXYZ}%
% Patch \numprint to output ignored prefix
\pretocmd{\nprt@testcharacter}
{\nprt@IfCharInString{#1}{\nprt@ignorelist}
{\csxappto{cbx@ignored}{#1}}
{\csuse{cbx@ignored}%
\global\csundef{cbx@ignored}}}
{}{}
% Define "hair" space, breakable with high penalty
\newrobustcmd*{\addhphairspace}{%
\unspace\blx@postpunct
\penalty\value{highnamepenalty}%
\hskip0.0416667em\relax\blx@imc@resetpunctfont}
% Add thousands separator
\newrobustcmd*{\mkbibnumsep}[1]{%
\npthousandsep{\addcomma\addhphairspace}%
\numprint{#1}\csuse{cbx@ignored}%
\global\csundef{cbx@ignored}}
% Modify \numprint to abbreviate numbers by last three digits
\newrobustcmd*{\mkbibnumshort}{%
\let\nprt@printone\cbx@printone%
\let\nprt@printtwo\cbx@printtwo%
\let\nprt@printthree\cbx@printthree}
\def\cbx@printthree#1#2#3#4\@empty{%
\def\nprt@tmp{#4}%
\ifx\nprt@tmp\@empty'#1#2#3%
\else\cbx@printthree#4\@empty\@empty\@empty\fi}
\def\cbx@printtwo#1#2#3\@empty{%
\def\nprt@tmp{#3}%
\ifx\nprt@tmp\@empty
\else\nprt@printthree#3\@empty\@empty\@empty\fi}
\def\cbx@printone#1#2\@empty{%
\def\nprt@tmp{#2}%
\ifx\nprt@tmp\@empty
\else\nprt@printthree#2\@empty\@empty\@empty\fi}
% Use patent number instead of labelyear
\AtEveryCitekey{%
\ifentrytype{patent}
{\savefield{number}{\cbx@number}%
\restorefield{labelyear}{\cbx@number}%
\clearfield{extrayear}%
\let\compcitedelim\multicitedelim}
{}}
\makeatother
\DeclareFieldFormat[patent]{number}{\mkbibnumsep{#1}}
\DeclareFieldFormat[patent]{labelyear}{\mkbibnumsep{#1}}
\newrobustcmd*{\patcite}{\AtNextCite{\mkbibnumshort}\cite}
\begin{filecontents}{\jobname.bib}
@patent{edison,
title = {Electric distribution system},
author = {Edison, Thomas A.},
number = {266793},
type = {patentus},
date = {1882-10-31}}
@patent{sorace:cal,
author = {Sorace, Ronald E. and Reinhardt, Victor S. and Chan, Clinton},
title = {Phase array calibration orthogonal phase sequence},
number = {5861843},
type = {patentus},
date = {1999-01-19}}
@article{sorace:sol,
author = {Sorace, Ronald E. and Lee, E. and Baldauf, J. and Heffernan, P.},
title = {Analysis of solar degradation to {TDRS} {S-band} phased array antenna},
volume = {34},
doi = {10.1109/7.705900},
number = {3},
month = jul,
year = {1998},
pages = {947--954}}
@patent{laufenberg:dev,
author = {Laufenberg, Xaver and Eynius, Dominique and Suelzle, Helmut and Usbeck, Stephan and Spaeth, Matthias and Neuser-Hoffmann, Miriam and Myrzik, Christian and Schmid, Manfred and Nietfeld, Franz and Thiel, Alex ander and Braun and Harald and Ebner, Norbert},
title = {Electrical device and operating method},
number = {8022677},
type = {patentus},
date = {2011-09-20}}
\end{filecontents}
\addbibresource{\jobname.bib}
\addbibresource{biblatex-examples.bib}
\begin{document}
\citeauthor{almendro} showed that...
Filler text \parencite{almendro}.
\textcite{sorace,sorace:cal,sorace:sol} and \textcite{edison} showed that...
Filler text \parencite{laufenberg,kowalik,laufenberg:dev}.
\patcite{edison}, \patcite{almendro} and \patcite{kowalik} showed that...
\subsection*{Patents}
\printbibliography[heading=none,type=patent]
\subsection*{Other references}
\printbibliography[heading=none,nottype=patent]
\end{document}

With the compact author-year citation styles, citations lists are sorted according to the scheme specified by the sorting
option. Compact lists can look awkward with a mix of patents and other entry types. See the list by Sorace et al. above, for example.
To avoid this we can incorporate number
into sorting with biber as the backend and \DeclareSortingScheme
. Since other entry types might use number
, we can configure biber to copy patent numbers to an empty field, say, usera
.
<?xml version="1.0" encoding="UTF-8"?>
<config>
<sourcemap>
<maps datatype="bibtex">
<map>
<per_type>PATENT</per_type>
<map_step map_field_source="NUMBER" map_final="1"/>
<map_step map_field_set="USERA" map_origfieldval="1"/>
</map>
</maps>
</sourcemap>
</config>
Just save this as biber.conf
in the same folder as the above document. In the document preamble we can modify the nyt
scheme to include usera
.
\DeclareSortingScheme{nyt}{
\sort{
\field{presort}
}
\sort[final]{
\field{sortkey}
}
\sort{
\name{sortname}
\name{author}
\name{editor}
\name{translator}
\field{sorttitle}
\field{title}
}
\sort{
\field{usera}
}
\sort{
\field{sortyear}
\field{year}
}
\sort{
\field{sorttitle}
\field{title}
}
\sort{
\field[padside=left,padwidth=4,padchar=0]{volume}
\literal{0000}
}
}
By default a minimum value is used as a fallback for usera
. So under this scheme non-patent entries appear first in a compact citation list.
Loading biblatex with
\usepackage[backend=biber,style=authoryear-comp,sorting=nyt,%
uniquename=init,uniquelist=false]{biblatex}
now gives the following output.

First thing to do is to add a field for the journal abbreviation to the article entrytype, journalabbr
in the MWE. Therefore you need to declare a datamodel (an extra file; in the MWE I've used filecontents to simulate that) and you have to tell biblatex/biber to use it in the package options.
Then you have to modify the cite command, so it fits your needs. \citep
from the authoryear-style (your citestyle) uses the \cite
command. There you just have to add a switch, which checks if the field journalabbr
is empty or not, and prints it out or not.
Last but not least you have to add the abbreviation fields to the entries.
MWE:
\begin{filecontents}{min.bib}
@article{boisson2003unexpected,
title={Unexpected protein families including cell defense components feature in the N-myristoylome of a higher eukaryote},
author={Boisson, B. and Giglione, Carmela and Meinnel, Thierry},
journal={Journal of Biological Chemistry},
journalabbr={JBC},
year={2003},
publisher={ASBMB}
}
\end{filecontents}
\begin{filecontents}{authorjabbryear.dbx}
\ProvidesFile{authorjabbryear.dbx}
\DeclareDatamodelFields[type=field,datatype=literal]{journalabbr}
\DeclareDatamodelEntryfields[article]{journalabbr}
\end{filecontents}
\documentclass[fontsize=11pt, paper=a4, ngerman, DIV=calc]{scrartcl}
\usepackage[scaled]{helvet}
\renewcommand*\familydefault{\sfdefault}
\usepackage{fixltx2e}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{babel}
\usepackage[german=quotes]{csquotes}
\usepackage[style=authoryear-comp,sortcites=true,sorting=nyt,isbn=false,natbib=true, citestyle=authoryear,bibstyle=authoryear,backend=biber,maxnames=1,maxcitenames=1,
,datamodel=authorjabbryear%added!
] {biblatex}
\DefineBibliographyStrings{ngerman}{ andothers = {{et\,al\adddot}} }
\renewbibmacro*{cite}{%from authoryear.cbx
\iffieldundef{shorthand}
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\addspace}}
{\printnames{labelname}%
\setunit{\nameyeardelim}}%
\iffieldundef{journalabbr}{}{%
\printfield{journalabbr}%
\setunit{\nameyeardelim}%
}%
\usebibmacro{cite:labelyear+extrayear}}
{\usebibmacro{cite:shorthand}}}
\addbibresource{min.bib}
\begin{document}
\citep{boisson2003unexpected}
How it should look like:
(Boisson et al., JBC, 2003)
\printbibliography
\end{document}
Best Answer
You will want to use the
@article
entry type.Since this is arguably an article that appeared in the online version of a newspaper, you should be fine using
@article
.As cfr noted in the comments, it is a good idea to specify the publishing date (with newer versions you can even give the time as well
date = {2017-03-12T19:57:00}
).