---
name: research-literature
description: Academic and biomedical research skills — professor profiling, thesis development, Austrian legal sources, PubMed literature retrieval, and scholarly source strategy.
version: 2.0.0
author: Hermes Agent
license: MIT
metadata:
  hermes:
    tags: [research, academic, pubmed, literature, university, thesis, austrian-law]
    related_skills: []
---

# Research & Literature — Academic and Biomedical Research

Comprehensive research workflows for academic tasks (professor profiling, publication analysis, thesis development) and biomedical literature retrieval. Covers Austrian legal research sources and PubMed/NCBI E-utilities for medical queries.

---

## Section 1: Academic Professor & Thesis Research

Research workflow for profiling professors, extracting publications, analyzing research focus, and developing thesis topics aligned with their expertise.

### Triggers

- Researching a professor (profile, publications, research interests)
- Finding sources/literature for a Bachelorarbeit, Masterarbeit, or seminar paper
- Analyzing publication history to predict supervision topics
- Extracting publications from university websites (especially WU Wien)

### Step 1: Extract Professor Profile

WU Wien uses SPA-based pages that return empty bodies to direct `curl`. Workaround:

```
curl -sL "https://r.jina.ai/https://www.wu.ac.at/..." -H "Accept: text/plain"
```

Start from the institute page to discover the correct profile URL, then extract from subpages:
- **Profile**: `/institut/.../prof-kalss` → name, title, email, phone, research areas
- **Publications**: `/institut/.../forschungsaktivitaeten` → books + articles list
- **Abschlussarbeiten**: `/institut/.../abschlussarbeiten/bewerbung` → application procedure, deadlines

### Step 2: Parse Publications

WU Forschungsaktivitäten page lists publications as:

```
2025**Kalss, Susanne, Probst, Stephan.** 2025. Familienunternehmen. [Mehr erfahren](link)
```

**Python parsing approach:**

```python
import re
pub_blocks = re.findall(r'(\d{4})\*\*(.+?)(?=\n\d{4}\*\*|\n##|\Z)', text, re.DOTALL)
for year, block in pub_blocks:
    block = re.sub(r'\[Mehr erfahren\]\([^)]+\)', '', block)
    lines = [l.strip() for l in block.split('\n') if l.strip() and 'Kalss' in l]
```

Deduplicate with a `set()` on full line text.

### Step 3: Topic Analysis

Classify publications by keyword matching:

```python
topics = {
    'Gesellschaftsrecht': ['gesellschaftsrecht', 'aktg', 'gmbh', 'flexco'],
    'Aufsichtsrat': ['aufsichtsrat', 'corporate governance', 'beirat'],
    'Kapitalmarktrecht': ['kapitalmarkt', 'börse', 'anleger', 'wertpapier'],
    'Stiftungsrecht': ['stiftung', 'privatstiftung'],
    'Nachhaltigkeit/ESG': ['nachhaltigkeit', 'klima', 'csddd', 'lieferkette'],
}
```

Count per topic and per year; look for *recent* clusters (2023+) as indicators of active interest.

### Step 4: Topic Selection Strategy

For thesis topics maximizing acceptance chance:
1. **Highest volume** → safest (professor has written most about this)
2. **Recent activity** → highest interest (currently building this area)
3. **Cross-cutting topics** → bridges two established fields

### Austrian Legal Research: Source Strategy

#### RIS (Rechtsinformationssystem des Bundes) — DO NOT USE

RIS at `ris.bka.gv.at` is **completely broken for programmatic access**:
- GeltendeFassung.wxe returns 404 for valid Gesetzesnummern
- Dokument.wxe with NOR-nummer returns random wrong documents
- ELI URLs redirect to wrong laws
- OGH decision search returns ASP.NET ViewState pages
- HTML-only URLs return 44 KB pages with zero text content after tag stripping
- Jina.ai captures only navigation sidebar — content is client-side rendered

#### USE THIS: JUSLINE.at + Delegate Task

1. **JUSLINE.at** → Gesetzestext im Volltext (always works, directly linkable)
   - `https://www.jusline.at/gesetz/abgb/paragraf/829` → § 829 ABGB
   - `https://www.jusline.at/gesetz/weg/paragraf/13` → § 13 WEG 2002
   - Strip `<script>` and `<style>` blocks, then strip all tags, collapse whitespace

2. **delegate_task** with `web` toolset → for OGH case law + doctrinal commentary
   - Spawn subagent to write a Markdown-Gutachten to `/tmp/`
   - This produced a 17 KB, 235-line Gutachten in one pass where 20+ individual API calls had failed

#### Known Canonical OGH Cases

- **Miteigentum/WEG:** 5 Ob 165/02a, 5 Ob 163/03s, 5 Ob 68/08t, 5 Ob 18/10b, 5 Ob 89/15g
- **§ 829 ABGB:** RIS-Justiz RS0013245, RS0013267 — 52 OGH decisions indexed
- **§ 13 WEG:** 71 OGH decisions indexed
- **§ 830 ABGB:** 501 OGH decisions indexed

#### Output Format for Thesis Proposals

Provide:
1. Title
2. Core sources (5+ by the professor, 3+ court decisions where relevant)
3. Alignment rationale (which research cluster it maps to)
4. Feasibility (amount of accessible literature)

---

## Section 2: PubMed Biomedical Research

Search PubMed for medical, pharmacological, and biomedical literature. The NCBI E-utilities API is free, requires no API key, and returns structured XML — a reliable fallback when general web search returns empty for medical queries.

### Triggers

- Medical/pharmacological research questions (drug effects, side effects, clinical trials)
- General web search returns empty for a medical query
- Need peer-reviewed evidence for medical claims

### Step 1: Search (esearch)

```bash
curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmax=15&term=YOUR_QUERY" 2>&1
```

**Query tips:**
- Use simple, broad terms: `escitalopram dose response depression`
- PubMed's translator expands terms automatically (MeSH + Supplementary Concept + All Fields)
- Avoid overly specific multi-word phrases — they get AND-ed and often return zero
- If `Count` is 0, broaden by removing the most restrictive term
- Pitfall: "long term" gets translated to `"term birth"[MeSH Terms]` — use `long-term` (hyphenated) or omit

### Step 2: Fetch Abstracts (efetch)

```bash
curl -sL "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=PMID1,PMID2&rettype=abstract&retmode=xml" 2>&1
```

### Step 3: Parse with Python

```python
import xml.etree.ElementTree as ET
for article in root.findall('.//PubmedArticle'):
    pmid = article.find('.//PMID').text
    title = article.find('.//ArticleTitle').text
    abstract_parts = article.findall('.//AbstractText')
    full_abstract = ' '.join([a.text or '' for a in abstract_parts])
    journal = article.find('.//Journal/Title').text
    year = article.find('.//PubDate/Year').text
```

Pitfall: Some abstracts have multiple `<AbstractText>` elements (BACKGROUND, METHODS, etc.). Join them all.

### Step 4: Synthesize Findings

1. Identify most authoritative source (systematic reviews > RCTs > case reports)
2. Extract quantitative data (percentages, N-values, p-values, effect sizes)
3. Note consensus vs. contradiction across papers
4. Present organized by theme, with PMID citations

### Output Format for Medical Responses

- Lead with strongest evidence (systematic reviews/meta-analyses first)
- Cite PMIDs inline: `BMJ Medicine (2022) — PMID 36936596`
- Use bullet lists, not walls of text
- Include disclaimer: "Das ist Literatur-Recherche, keine individuelle medizinische Empfehlung"

### Fallback Chain for Medical Queries

1. DuckDuckGo HTML (`html.duckduckgo.com`) — first attempt
2. Startpage (`startpage.com/sp/search`) — second attempt
3. PubMed E-utilities — reliable fallback (this skill)
4. If PubMed returns zero: broaden query, try MeSH terms, or acknowledge gap

### Rate Limits

No explicit rate limit for unauthenticated NCBI access. Space requests by ~0.3s. For >100 requests, register for a free API key.

---

### Herbal Medicine / Phytotherapy

When researching herbal/traditional medicine products (especially niche Austrian/German brands), the brand name is invisible to web search. Use the **vision → active ingredient → botanical Latin → PubMed** chain. See `references/herbal-medicine-research.md` for the full worked example (Corimia / Leonurus cardiaca) and pitfalls.

## Support Files

- `references/kalss-publications.md` — Full publication corpus for Prof. Kalss (673 entries, topic breakdown, key works 2022–2025)
- `references/austrian-erbrecht-pflichtteil-schenkungsanrechnung.md` — Quick reference: Pflichtteil, Schenkungsanrechnung, Eigentümerpartnerschaft, Testamentgestaltung
- `references/austrian-wohnungseigentum-miteigentum.md` — Quick reference: WEG § 13 vs. schlichtes Miteigentum (§§ 825 ff ABGB)
- `references/escitalopram-dose-increase.md` — Session results: Escitalopram 5mg→10mg, 7 PubMed studies with abstracts
- `references/herbal-medicine-research.md` — Worked example: Corimia/Leonurus cardiaca, vision→PubMed chain, phytotherapy pitfalls
