Skip to content

Commit 5011524

Browse files
authored
Switch autoware-patent-search to module-based BigQuery workflow; add SQL examples and tests (#5)
* Clean up patent search examples before merge * Constrain patent search SQL to feature terms
1 parent 95f4858 commit 5011524

11 files changed

Lines changed: 619 additions & 141 deletions

File tree

.agents/skills/autoware-patent-search/SKILL.md

Lines changed: 94 additions & 65 deletions
Large diffs are not rendered by default.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
interface:
22
display_name: "Autoware Patent Search"
3-
short_description: "Search patent DBs and scaffold Autoware IP review charts/alerts."
4-
default_prompt: "Review this Autoware change for patent-sensitive technical features, search only Google Patents and J-PlatPat when available, and generate non-legal candidate matching, claim-comparison, and monitoring notes for IP review."
3+
short_description: "Generate BigQuery patent triage for Autoware modules."
4+
default_prompt: "Review this existing Autoware module for patent-sensitive technical features, generate Google Patents Public Data BigQuery SQL for candidate retrieval, and produce non-legal candidate matching, claim-comparison, and monitoring notes for human IP review."
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
-- Google Patents Public Data candidate search for Autoware module: planning/behavior_path_planner/lane_change
2+
-- Technical triage only; results are candidates for human IP-professional review.
3+
SELECT
4+
p.publication_number,
5+
p.application_number,
6+
p.publication_date,
7+
p.filing_date,
8+
(SELECT text FROM UNNEST(p.title_localized) LIMIT 1) AS title,
9+
(SELECT text FROM UNNEST(p.abstract_localized) LIMIT 1) AS abstract,
10+
ARRAY(SELECT a.name FROM UNNEST(p.assignee_harmonized) a LIMIT 10) AS assignees,
11+
ARRAY(SELECT c.code FROM UNNEST(p.cpc) c LIMIT 10) AS cpc_codes,
12+
(IF((EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%autonomous vehicle%') OR
13+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%autonomous vehicle%') OR
14+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%autonomous vehicle%') OR
15+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%autonomous vehicle%')), 1, 0) +
16+
IF((EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%automated driving%') OR
17+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%automated driving%') OR
18+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%automated driving%') OR
19+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%automated driving%')), 1, 0) +
20+
IF((EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%trajectory planning%') OR
21+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%trajectory planning%') OR
22+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%trajectory planning%') OR
23+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%trajectory planning%')), 1, 0) +
24+
IF((EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%vehicle control%') OR
25+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%vehicle control%') OR
26+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%vehicle control%') OR
27+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%vehicle control%')), 1, 0)) AS broad_context_match_count,
28+
CONCAT('https://patents.google.com/patent/', p.publication_number) AS google_patents_url
29+
FROM `patents-public-data.patents.publications` AS p
30+
WHERE (
31+
(EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%lane change path generation with collision check using predicted objects%') OR
32+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%lane change path generation with collision check using predicted objects%') OR
33+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%lane change path generation with collision check using predicted objects%') OR
34+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%lane change path generation with collision check using predicted objects%'))
35+
OR (EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%behavior planning%') OR
36+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%behavior planning%') OR
37+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%behavior planning%') OR
38+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%behavior planning%'))
39+
OR (EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%safety margin%') OR
40+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%safety margin%') OR
41+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%safety margin%') OR
42+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%safety margin%'))
43+
OR (EXISTS (SELECT 1 FROM UNNEST(p.title_localized) txt WHERE LOWER(txt.text) LIKE '%車線変更 経路生成 衝突判定 予測物体%') OR
44+
EXISTS (SELECT 1 FROM UNNEST(p.abstract_localized) txt WHERE LOWER(txt.text) LIKE '%車線変更 経路生成 衝突判定 予測物体%') OR
45+
EXISTS (SELECT 1 FROM UNNEST(p.description_localized) txt WHERE LOWER(txt.text) LIKE '%車線変更 経路生成 衝突判定 予測物体%') OR
46+
EXISTS (SELECT 1 FROM UNNEST(p.claims_localized) txt WHERE LOWER(txt.text) LIKE '%車線変更 経路生成 衝突判定 予測物体%'))
47+
)
48+
AND (EXISTS (SELECT 1 FROM UNNEST(p.cpc) c WHERE STARTS_WITH(c.code, 'B60W')) OR EXISTS (SELECT 1 FROM UNNEST(p.cpc) c WHERE STARTS_WITH(c.code, 'G05D1/00')) OR EXISTS (SELECT 1 FROM UNNEST(p.cpc) c WHERE STARTS_WITH(c.code, 'G08G1/00')))
49+
AND (EXISTS (SELECT 1 FROM UNNEST(p.assignee_harmonized) a WHERE LOWER(a.name) LIKE '%toyota%') OR EXISTS (SELECT 1 FROM UNNEST(p.assignee_harmonized) a WHERE LOWER(a.name) LIKE '%toyota motor%'))
50+
AND p.publication_date >= 20180101
51+
ORDER BY broad_context_match_count DESC, p.publication_date DESC
52+
LIMIT 25;
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Sample module-based patent review report: lane change planning
2+
3+
This is sample output for validating the `autoware-patent-search` MVP workflow. It is technical triage only and is not a legal opinion about infringement, validity, freedom to operate, or non-infringement.
4+
5+
## 1. Module/package name
6+
7+
`planning/behavior_path_planner/lane_change` (example module target)
8+
9+
## 2. Files/classes/functions/ROS nodes/topics reviewed
10+
11+
Sample placeholders for a real module review:
12+
13+
- README/package documentation: `README.md`
14+
- Launch/config/parameters: lane-change safety threshold and collision-check parameters
15+
- Source/classes/functions: lane-change path generation, predicted-object collision check, safety evaluation
16+
- ROS interfaces: route/lanelet inputs, predicted objects, candidate path output, behavior-planning status topics
17+
18+
## 3. Technical feature summary
19+
20+
Lane-change path generation that evaluates candidate paths against predicted objects and applies collision-check or safety-margin logic before accepting a lane-change maneuver.
21+
22+
## 4. Inputs and outputs
23+
24+
- Inputs: ego pose/velocity, route/lanelet map, predicted objects, candidate lane-change paths, safety thresholds
25+
- Outputs: accepted/rejected lane-change path, behavior-planning status, optional diagnostic or debug markers
26+
27+
## 5. Algorithmic steps or behavior logic
28+
29+
1. Generate candidate lane-change paths from current lane to target lane.
30+
2. Estimate object interactions using predicted object trajectories.
31+
3. Apply collision or safety-margin checks over the candidate path horizon.
32+
4. Accept, reject, or defer the lane-change maneuver based on safety logic.
33+
34+
## 6. Why the feature may be patent-sensitive
35+
36+
The feature combines autonomous-driving behavior planning, path generation, object prediction, and collision/safety decision logic. These are common areas for patent filings, so matching patent documents should be treated as candidates for human IP review.
37+
38+
## 7. English patent search keywords
39+
40+
lane change, path generation, collision check, predicted objects, behavior planning, autonomous vehicle, trajectory planning, safety margin
41+
42+
## 8. Japanese patent search keywords
43+
44+
車線変更, 経路生成, 衝突判定, 予測物体, 行動計画, 自動運転, 安全余裕
45+
46+
## 9. CPC/IPC hints
47+
48+
- B60W
49+
- G05D1/00
50+
- G08G1/00
51+
52+
## 10. BigQuery SQL queries generated for Google Patents Public Data
53+
54+
See `examples/lane_change_bigquery.sql`. The SQL is structurally validated in this repository, but it has not been executed in this environment.
55+
56+
## 11. Candidate patent documents and assignees
57+
58+
| Publication | Assignee | Title | Status |
59+
| --- | --- | --- | --- |
60+
| TBD from BigQuery result | TBD | TBD | candidate for IP review |
61+
62+
## 12. Technical reason for relevance
63+
64+
Placeholder candidates should be reviewed for overlap with lane-change path generation, predicted-object collision checks, safety margins, and autonomous-driving behavior-planning decision logic.
65+
66+
## 13. Risk level
67+
68+
Watch
69+
70+
## 14. Reason for risk level
71+
72+
This sample describes a patent-sensitive technical area, but candidate patent documents have not been retrieved or reviewed in this placeholder report.
73+
74+
## 15. Recommended next human IP review action
75+
76+
After configuring a Google Cloud project with BigQuery access, run a BigQuery dry run or a small `LIMIT 10` query, then collect candidate publication records, and have an IP professional review the technical overlap. Use "needs human IP review" or "not enough evidence" as dispositions; do not make legal conclusions.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Patent review workflow sample data
2+
3+
This directory contains test-only documentation and sample configuration data for
4+
validating the `autoware-patent-search` module-based BigQuery workflow.
5+
6+
These files are **not** an Autoware runtime module and should not be installed,
7+
launched, or proposed upstream. They are intentionally stored under the skill's
8+
`examples/` directory so reviewers can exercise the patent-review workflow
9+
without changing the real Autoware source tree or repository dependencies.
10+
11+
The sample configuration represents a conceptual behavior-planning review target:
12+
lane-change path generation with a predicted-object collision-check margin. Use
13+
it as workflow documentation/test data for extracting technical features,
14+
bilingual search keywords, CPC/IPC hints, and BigQuery SQL.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Test-only patent-review workflow sample data.
2+
# This file is not an Autoware runtime module, launch input, or upstream proposal.
3+
# It represents a conceptual lane-change behavior-planning threshold for examples.
4+
5+
/**:
6+
ros__parameters:
7+
# Sample collision-check margin for lane-change path generation.
8+
# Raising this value makes the validation scenario conceptually more conservative
9+
# around predicted objects during lane-change safety evaluation.
10+
lane_change_predicted_object_collision_margin_m: 1.8

.agents/skills/autoware-patent-search/references/search-taxonomy.md

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,21 @@
11
# Autoware patent-search taxonomy
22

3-
Use these terms to build cross-database patent queries. Mix broad domain terms with the changed algorithm's specific terms.
3+
Use these terms to build module-based Google Patents Public Data BigQuery queries. Mix broad domain terms with the existing module's specific functions, topics, parameters, and behavior logic.
44

5-
## Target databases
5+
## Primary patent data source
66

7-
Only use these patent databases unless the user explicitly changes scope later:
7+
Use **Google Patents Public Data via BigQuery** as the primary retrieval mechanism. Generate reproducible Standard SQL against `patents-public-data.patents.publications`. Optional Google Patents search URLs may be produced only as supporting human-review links.
88

9-
- **Google Patents**: useful for international full-text searching, English/Japanese terms, CPC hints, and assignee filters.
10-
- **J-PlatPat**: useful for Japan-focused searches, FI/F-term exploration, Japanese terminology, and Japanese assignee names. Prefer recording the keywords and filters used because stable deep links may not always be available.
9+
Do not use non-Google patent databases for this MVP unless the user explicitly changes scope later.
10+
11+
## Suggested MVP module targets
12+
13+
- planning, behavior planning, trajectory planning, route planning
14+
- obstacle avoidance, lane change, stop decision, drivable area generation
15+
- vehicle control, lateral control, longitudinal control, trajectory tracking
16+
- fallback, MRM, safety monitor, fail operational, emergency stop, degradation
17+
- perception-to-planning interfaces, object prediction, predicted paths, occupancy grids
18+
- traffic signals, intersections, stop lines, maps, lanelets, infrastructure, V2X
1119

1220
## English terms
1321

@@ -45,9 +53,9 @@ Use these only when the user asks to review a particular company's portfolio or
4553
- English examples: Toyota, Honda, Nissan, Denso, Aisin, Hitachi Astemo, Bosch, Continental, Mobileye, Waymo, Aptiv, ZF
4654
- Japanese examples: トヨタ, 本田技研, ホンダ, 日産, デンソー, アイシン, 日立Astemo, ボッシュ, コンチネンタル
4755

48-
## CPC/IPC and Japan classification hints
56+
## CPC/IPC classification hints
4957

50-
Use these only as search hints:
58+
Use these only as search hints, not legal conclusions:
5159

5260
- B60W: vehicle control systems for different vehicle sub-units, ADAS, automated driving control
5361
- G05D1/00: control of position, course, altitude, or attitude of vehicles
@@ -57,4 +65,3 @@ Use these only as search hints:
5765
- G06V20/56: image/video understanding for autonomous driving scenes
5866
- G01C21/00: navigation and route guidance
5967
- H04W4/40: vehicle communication services, V2X-related communication
60-
- J-PlatPat FI/F-term exploration is useful after a relevant Japanese document is found; record FI/F-term values if they appear in candidate results.

.agents/skills/autoware-patent-search/scripts/google_patents_queries.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env python3
2-
"""Compatibility wrapper that emits Google Patents search URLs for Autoware IP triage."""
2+
"""Compatibility wrapper that emits optional Google Patents review URLs."""
33

44
from __future__ import annotations
55

0 commit comments

Comments
 (0)