Elapsed time until patent decision

Here you can post your opinions, ask questions and share experiences on the PATSTAT product line. Please always indicate the PATSTAT edition (e.g. 2015 Autumn Edition) and the database (e.g. PATSTAT Online, MySQL, MS SQL Server, ...) you are using.
Post Reply

Tim Grünebaum
Posts: 18
Joined: Thu Aug 27, 2015 12:43 pm

Elapsed time until patent decision

Post by Tim Grünebaum » Sat Mar 21, 2020 3:16 pm

Hello everyone,

I am interested in how long the corresponding patent office takes to finally decide upon a patent, thus rejection or grant.
I have written a code for Patstat online and it works. However, it might not yield what I am looking for. Here is the code for patents from German applicants at the German or European Patent Offices in 2010 for example:

Code: Select all

SELECT DISTINCT TLS201_APPLN.APPLN_ID, TLS231_INPADOC_LEGAL_EVENT.EVENT_AUTH, TLS231_INPADOC_LEGAL_EVENT.EVENT_DESCR, TLS231_INPADOC_LEGAL_EVENT.EVENT_CODE, TLS201_APPLN.EARLIEST_FILING_DATE, TLS201_APPLN.EARLIEST_PUBLN_DATE, TLS231_INPADOC_LEGAL_EVENT.EVENT_PUBLN_DATE, DATEDIFF(month, TLS201_APPLN.EARLIEST_FILING_DATE, TLS231_INPADOC_LEGAL_EVENT.EVENT_PUBLN_DATE) AS DateDiff
FROM TLS201_APPLN
INNER JOIN TLS207_PERS_APPLN ON TLS201_APPLN.APPLN_ID = TLS207_PERS_APPLN.APPLN_ID
INNER JOIN TLS206_PERSON On TLS207_PERS_APPLN.PERSON_ID = TLS206_PERSON.PERSON_ID 
INNER JOIN TLS231_INPADOC_LEGAL_EVENT ON TLS201_APPLN.APPLN_ID = TLS231_INPADOC_LEGAL_EVENT.APPLN_ID
WHERE TLS206_PERSON.PERSON_CTRY_CODE='DE'
AND TLS231_INPADOC_LEGAL_EVENT.EVENT_AUTH  in ('DE', 'EP')
AND TLS231_INPADOC_LEGAL_EVENT.EVENT_CODE in('eventcode#1')
AND TLS201_APPLN.EARLIEST_FILING_YEAR=2010
ORDER BY TLS201_APPLN.EARLIEST_PUBLN_DATE;
The crucial part is the legal status or event code (eventcode#1). For this I rely on the following explanations of the legal status codes:
https://www.epo.org/searching-for-paten ... rs-ep.html
https://www.epo.org/searching-for-paten ... eekly.html

So basically my question is: What legal status code (in Patstat the attribute TLS231_INPADOC_LEGAL_EVENT.EVENT_CODE ) do I have to take into account for
1. rejected patents
2. granted patents

By now I have a bunch of codes which some how refer to...
...rejection: '8131', '8231', '8235', '18R', 'D18R', 'R18R', 'R002', 'R003', 'OHW', 'BHV'
...grant: ('8308', 'V484', 'ZTFE', 'INTG')
However, the results especially on the grant case look not too promising. What codes to I have to take into account to measure the time from filing to final grant decision?

Thanks

Tim
TU Dortmund


EPO / PATSTAT Support
Posts: 227
Joined: Thu Feb 22, 2007 5:33 pm
Contact:

Re: Elapsed time until patent decision

Post by EPO / PATSTAT Support » Mon Mar 23, 2020 12:56 pm

Hello Tim,
for the granted EP applications, it is fairly straightforward.
Take the filing date and the date of grant (publication of the B1 document).

For the EP "pending & non granted" applications it is more difficult. One can of course say that if no B1 is published, the patent is "pending" or the application is "dead". At this moment there is no single clear indicator,but the "STATUS" flag in PATSTAT Register gives you a fairly good overview.
Here is a query that illustrates it (and it also shows some contradictions),

Code: Select all

SELECT reg403_appln_status.status,  reg403_appln_status.status_text,
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2010 then tls201_appln.appln_id end)) as "2010",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2011 then tls201_appln.appln_id end)) as "2011",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2012 then tls201_appln.appln_id end)) as "2012",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2013 then tls201_appln.appln_id end)) as "2013",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2014 then tls201_appln.appln_id end)) as "2014",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2015 then tls201_appln.appln_id end)) as "2015",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2016 then tls201_appln.appln_id end)) as "2016",
COUNT (distinct(case when year(tls201_appln.appln_filing_date) = 2017 then tls201_appln.appln_id end)) as "2017",
COUNT (distinct(case when (tls201_appln.granted) = 'Y' then tls201_appln.appln_id end)) as "granted"
From tls201_appln join reg101_appln on tls201_appln.appln_id = reg101_appln.appln_id
join reg403_appln_status on reg101_appln.status = reg403_appln_status.status
where appln_filing_year  between 2010 and 2017
and tls201_appln.appln_auth = 'EP' 
and tls201_appln.appln_id < 900000000
  group by reg403_appln_status.status_text,reg403_appln_status.status
  order by reg403_appln_status.status asc
For the DE applications it is more complicated because you will need to look at the relevant INPADOC codes. These codes (most of them) come from the national patent offices, so DPMA would be your first source to provide information on the correct meaning and interpretation of the codes.
In the document at this link: mapping-data-completeness-inpadoc-legal ... ls231-8681 , you can see what and how many times legal status codes have been assigened to patents based on the application filing year. You can use the filters to narrow down the scope. The event_category_code can help you to identify the correct sets of codes for your purpose, and you will also see that some codes are outdated or not relevant anymore for patents filed in more recent years.
If you want to analyse a specific year, you could use as query as the one below to retrieve and select the codes that are relevant.

Code: Select all

SELECT DISTINCT TLS201_APPLN.APPLN_ID, tls201_appln.appln_nr_epodoc,TLS231_INPADOC_LEGAL_EVENT.EVENT_AUTH, 
TLS201_APPLN.EARLIEST_FILING_DATE, TLS201_APPLN.EARLIEST_PUBLN_DATE, TLS231_INPADOC_LEGAL_EVENT.EVENT_PUBLN_DATE, granted,
tls803_legal_event_code.*
FROM TLS201_APPLN
INNER JOIN TLS207_PERS_APPLN ON TLS201_APPLN.APPLN_ID = TLS207_PERS_APPLN.APPLN_ID
INNER JOIN TLS206_PERSON On TLS207_PERS_APPLN.PERSON_ID = TLS206_PERSON.PERSON_ID 
INNER JOIN TLS231_INPADOC_LEGAL_EVENT ON TLS201_APPLN.APPLN_ID = TLS231_INPADOC_LEGAL_EVENT.APPLN_ID
join tls803_legal_event_code on tls231_inpadoc_legal_event.event_auth = tls803_legal_event_code.event_auth
and tls231_inpadoc_legal_event.event_code = tls803_legal_event_code.event_code
WHERE appln_auth= 'DE'AND
TLS206_PERSON.PERSON_CTRY_CODE='DE'
--AND tls803_legal_event_code.event_category_code = 'F'
and appln_filing_year = 2010
ORDER BY tls201_appln.appln_id
A quick word of warning, if you do this analysis for DE patent filed before 1994, you will see that many country codes for the applicants are missing. This illustrates it:

Code: Select all

SELECT appln_filing_year,
count (distinct (case when appln_auth = 'DE' and person_Ctry_code = '' then tls206_person.person_id end)) as DE_no_ctry,
count (distinct (case when appln_auth = 'DE' and person_Ctry_code <> '' then tls206_person.person_id end)) as DE_ctry,
count (distinct (case when appln_auth = 'EP' and person_Ctry_code = '' then tls206_person.person_id end)) as EP_no_ctry,
count (distinct (case when appln_auth = 'EP' and person_Ctry_code <> '' then tls206_person.person_id end)) as EP_ctry
FROM tls201_appln 
join tls207_pers_appln on tls201_appln.appln_id = tls207_pers_Appln.appln_id
join tls206_person on tls207_pers_appln.person_id = tls206_person.person_id
where appln_auth in ('EP','DE') and applt_Seq_nr > 0 and appln_filing_year > 1980 --and granted = 'Y'
group by appln_filing_year
order by appln_filing_year
PATSTAT Support Team
EPO - Vienna
patstat @ epo.org


Tim Grünebaum
Posts: 18
Joined: Thu Aug 27, 2015 12:43 pm

Re: Elapsed time until patent decision

Post by Tim Grünebaum » Tue Mar 24, 2020 2:53 pm

Thank you very much,

for the grants you are probably right that just using TLS211_PAT_PUBLN.PUBLN_FIRST_GRANT='Y' and get the PBLN_DATE should be sufficient here.
For rejected patents from Germany I replied to the DPMA in hope for an answer on which codes refer to rejections. Your advice that pendling or withdrawn patents are also an issue here is also helpful.

For this topic's issue, I made this nice graph from my Patstat results with event codes I think refer to grant and rejection, showing time until grant and rejection at German and European Patent Office respectively. There are very few rejections directly at the EP. I suppose this is because most rejections are made directly at the national offices and also there are a lot withdrawals instead of official rejections. Also the national patent office seems to work quicker on granting patents. Do you think the numbers are reasonable?
https://ibb.co/v4tv3Cm

One short question off-topic: I also quickly wanted to check for the sole number of applications per year just to compare them to grants. The following simple code just should yield national as well as PCT applications for German applicants at the DPMA:

Code: Select all

--Query 1
SELECT TLS201_APPLN.APPLN_FILING_YEAR, COUNT( DISTINCT TLS201_APPLN.APPLN_ID) AS Applications
FROM TLS206_PERSON
INNER JOIN TLS207_PERS_APPLN ON TLS206_PERSON.PERSON_ID = TLS207_PERS_APPLN.PERSON_ID
INNER JOIN TLS201_APPLN ON TLS207_PERS_APPLN.APPLN_ID = TLS201_APPLN.APPLN_ID
WHERE TLS201_APPLN.APPLN_FILING_YEAR between 2000 and 2017
AND TLS206_PERSON.PERSON_CTRY_CODE='DE'
AND TLS201_APPLN.APPLN_AUTH='DE'
AND TLS201_APPLN.APPLN_KIND in ('A')
GROUP BY  TLS201_APPLN.APPLN_FILING_YEAR
HAVING COUNT(TLS201_APPLN.APPLN_ID)>0;
However, the results were significantly lower than official statistics by the DPMA, see applications in 2010 for instance table 1 here on page 5:
https://www.dpma.de/docs/english/jahres ... rt2010.pdf
There should be 47,047 applications but there are only 40,269 yielded by the code above.
Do you have any advice? Is it maybe because the person_ctry_code is non known in every case?
TU Dortmund


EPO / PATSTAT Support
Posts: 227
Joined: Thu Feb 22, 2007 5:33 pm
Contact:

Re: Elapsed time until patent decision

Post by EPO / PATSTAT Support » Wed Mar 25, 2020 7:40 pm

Hello Tim,
it is a bit more complicated.
In fact, it is always rather complicated to replicate statistics published by patent offices because the approach (or interpretation of the description) and the used data might be different.

Without reading the whole DPMA report I would ask the following questions:

the document specifies "applications received at the DPMA": does that include filings that were withdrawn before the publication ? This is what we do at the EPO, and the result is that official published figures are higher +10% at the EPO, and results can not be replicated.
the document specifies "German companies and inventors filed 47,047 patent applications at the DPMA", strictly spoken, I would assume this to be at least 1 German applicant or at least 1 German Inventor or both and more. (PATSTAT allows all variations, but I am not 100% sure how DPMA published figures were produced)
the document specifies :"DPMA direct applications and DPMA PCT national phase": for 2010 does that mean the date that the PCT entered the national phase, or the PCT filing date ? (EPO uses entry into EP phase), another question would be how the analyst dealt with the priority filings and utility models: there are about 1800 PCT's filed in 2010 at DPMA that have a DE utility model or patent as priority. Most have a date in 2009 (12 months before the PCT), but if you put 2009 besides 2010 you will have double counts at "invention level" but not at "application level" . (Patent offices normally publish data to represent "work done", so applications - versus - innovative capacity "inventions" which we want to measure for econometrics.)

With regards to you query, it needs a small correction: PCT applications filed at DPMA can be identified via the attribute "Receiving office" and not as in the past via kind code = "W".

Code: Select all

SELECT TLS201_APPLN.APPLN_FILING_YEAR, COUNT( DISTINCT TLS201_APPLN.APPLN_ID) AS Applications
FROM TLS206_PERSON
INNER JOIN TLS207_PERS_APPLN ON TLS206_PERSON.PERSON_ID = TLS207_PERS_APPLN.PERSON_ID
INNER JOIN TLS201_APPLN ON TLS207_PERS_APPLN.APPLN_ID = TLS201_APPLN.APPLN_ID
WHERE TLS201_APPLN.APPLN_FILING_YEAR between 2000 and 2017
AND TLS206_PERSON.PERSON_CTRY_CODE='DE'
AND (TLS201_APPLN.APPLN_AUTH='DE' or receiving_office = 'DE')
GROUP BY  TLS201_APPLN.APPLN_FILING_YEAR
HAVING COUNT(TLS201_APPLN.APPLN_ID)>0
order by  TLS201_APPLN.APPLN_FILING_YEAR
But on the other hand, PCT's that have entered the German national phase are in PATSTAT as normal DE applications (they will have an internat_Appln_id <> 0), so I would think that there is no need to take into account the PCT applications at all.
One more observation: if you look at the the DE applications filed in 2010 that originate from a PCT, and you compare that with WO application where there is a legal status event indicating that the WO application entered the DE national phase you will see that the sets are far from equal. Experience has learned that one can take the "common denominator" from the 2 sets to get a more complete overview.

PCT data:

Code: Select all

SELECT distinct tls201_appln.*, tls231_inpadoc_legal_event.*
FROM TLS206_PERSON
INNER JOIN TLS207_PERS_APPLN ON TLS206_PERSON.PERSON_ID = TLS207_PERS_APPLN.PERSON_ID
INNER JOIN TLS201_APPLN ON TLS207_PERS_APPLN.APPLN_ID = TLS201_APPLN.APPLN_ID
join tls231_inpadoc_legal_event on tls201_appln.appln_id = tls231_inpadoc_legal_event.appln_id
WHERE TLS201_APPLN.APPLN_FILING_YEAR = 2010
AND TLS206_PERSON.PERSON_CTRY_CODE='DE'
AND (TLS201_APPLN.APPLN_AUTH='WO')
and event_code =  'wwe'
and ref_doc_auth = 'DE'
order by  ref_doc_nr
PCT-indication for DE filings (called national phase applications)

Code: Select all

select distinct tls201_appln.* from tls201_appln 
INNER JOIN TLS207_PERS_APPLN ON tls201_appln.appln_id = TLS207_PERS_APPLN.appln_id
INNER JOIN tls206_person on tls207_pers_appln.person_id = tls206_person.person_id
where internat_appln_id <>0 and appln_auth = 'DE' and appln_filing_year = 2010 and TLS206_PERSON.PERSON_CTRY_CODE='DE'
and ipr_type = 'PI'
So if my presumption on the 10% unpublished is correct, then you would have 45.224 applications, and the common set could be source for the missing 1800. ( I leave it to you to check this in detail.)

An easier short cut would be if DPMA gives you the set of 47.047 DE applications, and you simply check which ones are not in PATSTAT, and try to find to find out why they are not available. The data which EPO receives from DPMA is of such good quality that differences are mostly due to "different ways of counting" and not missing data.
PATSTAT Support Team
EPO - Vienna
patstat @ epo.org


Tim Grünebaum
Posts: 18
Joined: Thu Aug 27, 2015 12:43 pm

Re: Elapsed time until patent decision

Post by Tim Grünebaum » Thu Mar 26, 2020 2:47 pm

Hi,

thanks again for your very comprehensive reply!

So basically it is not crucially necessary for me to replicate the national statistics by the DPMA in detail. Just some good explanations why my numbers are different and your opinion on my code not being rubbish is fine :)

Indeed DPMA statistics might include a lot of unpublished applications. There is no way to extract them from Patstat but this is ok.
I must admit I did not fully understand all your points, e.g.
- I think to include PCT applications I should set receiving_office='DE' AND appln_kind in ('A', 'W'); because dropping the W's will exclude some PCT's. I want the A's and also the W's but not the other kinds like utility models or designs.
receiving_office = 'DE' will always give you kind code W. There are no other kind codes used for PCT applications.
- Does it lead to double counts if I include PCT applications that have priority filings at the DPMA (because they have distinct appln_id's ?
Absolutely; the priorty and the PCT will mostly have 12 months difference in application filing dates. In fact, the DE priority filing will often proceed its' own procedure up to a granted DE patent. It would be rather uncommon -but not impossible- to restart a national phase on a PCT for which a priority was filed in DE. The query below gives you all PCT's filed in Germany, that have a DE priority.

Code: Select all

SELECT priority.appln_auth+priority.appln_nr prt_application, priority.appln_filing_date
,priority.appln_id, priority.granted,pct.*
  FROM tls201_appln priority
  join tls204_appln_prior on priority.appln_id = tls204_appln_prior.prior_appln_id
  join tls201_appln PCT on tls204_appln_prior.appln_id = pct.appln_id
  where priority.appln_auth = 'DE'
and pct.appln_auth = 'WO'
and PCT.receiving_office = 'DE'
order by priority.appln_filing_date,priority.appln_id
- Your last point of the common denominator of those both PCT sets should lead to a set of somehow "correct" (or best guess) PCT applications I should add to my former query result?
- How did you come up with the number 45.224 ? This is adding a guess of 10% unpublished applications on top of what?
40269 from "query 1 " +10 %
- Counts pre 2004 are significantly higher in every case. The DPMA annual report 2008 says: "Due to the PCT revision in 2004, strictly speaking, it is not possible to directly compare the current figures with those prior to the year 2004. Nevertheless, to show the development, the effects of the PCT revision were eliminated."
Is there a way to account for that? I also do econometrics for those years and this could cause biases I fear.
I am not familiar with the 2004 PCT revisions, or its' effects on fillings.
And did you take a look at my graph in the first part of my last post on the decision time? EPO rejections are very low. Also in official EPO publications EPO grant rates are significantly higher than for national patent offices (I can provide numbers if needed). So strictly speaking: Is it easier to get a grant at the EPO?
I can not comment on EP (or any office) grant rates. Factum is that there are many underlying factors that can affect it. One can not claim it is "easier" because the "grant rate" is higher in a comparison between different patent systems that each have their own process following their own rules.
Sorry to bother you with this load of questions. (As always in data mining) I thought it would be easier, at least to simply count applications.

Tim
TU Dortmund


Post Reply