什么是 io.github.kuhumcst/dannet?
DanNet 提供丹麦语 WordNet 词汇网络,含丰富词汇关系,并支持通过 SPARQL 访问。
README
DanNet is a WordNet for the Danish language. DanNet uses RDF as its native representation at both the database level, in the application space, and as its primary serialisation format.
- Browse the data at wordnet.dk
- Query the data by integrating with AI
- Download datasets from the releases page
Table of Contents
- Dataset Formats
- Companion Datasets
- Standards
- LLM Integration (AI)
- Implementation
- Setup
- Deployment
- Database Release Workflow
Dataset Formats
DanNet is available in multiple formats to maximise compatibility:
| Format | Description |
|---|---|
| RDF (Turtle) | Native representation. Load into any RDF graph database (such as Apache Jena) and query with SPARQL. |
| CSV | Published with column metadata as CSVW. |
| WN-LMF | XML format compatible with Python libraries like wn. |
Example: Using DanNet with Python
import wn
wn.add("dannet-wn-lmf.xml.gz")
for synset in wn.synsets('kage'):
print((synset.lexfile() or "?") + ": " + (synset.definition() or "?"))
Differences Between Formats
While every format includes all synsets/senses/words, the CSV and WN-LMF variants do not include every data point:
- CSV: Some data is lost when converting from an open graph to fixed tables.
- WN-LMF: Only official GWA relations are included per the standard (proprietary DanNet relations from the DanNet schema are excluded).
For the complete dataset, use the RDF format or browse at wordnet.dk.
Companion Datasets
Several companion datasets expand the RDF graph with additional data:
| Dataset | Description |
|---|---|
| COR | Links DanNet resources to IDs from the COR project. |
| DDS | Adds sentiment data to DanNet resources. |
| OEWN extension | Provides DanNet-style labels for the Open English WordNet to facilitate browsing connections between the two datasets. |
Inferred Data
Additional data is implicitly inferred from the base dataset, companion datasets, and ontological metadata. These inferences can be browsed at wordnet.dk. Releases containing fully inferred graphs are specifically marked as such.
Standards
DanNet is based on the Ontolex-lemon standard combined with relations defined by the Global Wordnet Association as used in the official GWA RDF standard.
| Ontolex-lemon class | Represents |
|---|---|
ontolex:LexicalConcept | Synsets |
ontolex:LexicalSense | Word senses |
ontolex:LexicalEntry | Words |
ontolex:Form | Forms |

URI Prefixes
| Prefix | URI | Purpose |
|---|---|---|
dn | https://wordnet.dk/dannet/data/ | Dataset instances |
dnc | https://wordnet.dk/dannet/concepts/ | Ontological type members |
dns | https://wordnet.dk/dannet/schema/ | Schema definitions |
All DanNet URIs resolve to HTTP resources. Accessing one of these URIs via a GET request returns the data for that resource.
Schemas
DanNet has proprietary relations defined in the DanNet schema in an Ontolex-compatible way. There is also a schema for EuroWordNet concepts. Both schemas follow the RDF conventions listed by Philippe Martin.
LLM Integration
DanNet can be connected to AI tools like Claude via MCP (Model Context Protocol).
- MCP server URL:
https://wordnet.dk/mcp - Registry ID:
io.github.kuhumcst/dannet
To connect in e.g. Claude Desktop: go to Settings > Connectors > Browse Connectors, click "add a custom one", enter a name (e.g., "DanNet") and the MCP server URL.

Once connected, you can query DanNet's semantic relations directly through Claude.
Implementation
The database backend is Apache Jena, a mature RDF triplestore with OWL inference support. When represented in Jena, DanNet's relations form a queryable knowledge graph. DanNet is developed in Clojure, using libraries like Aristotle to interact with Jena.
See rationale.md for more on the design decisions.
Full Production Setup
The production deployment at wordnet.dk consists of three services managed via Docker Compose:
- DanNet — the Clojure/ClojureScript web application
- MCP server — a Python-based MCP server providing LLM access to DanNet
- Caddy — reverse proxy handling HTTPS and routing
Clojure Support
DanNet can be queried in various ways from Clojure (see queries.md). Apache Jena transactions are built-in and enable persistence via the TDB 2 layer.
Web Application
The frontend is written in ClojureScript using Rum, served by Pedestal. The app works both as a single-page application (with JavaScript) and as a regular HTML website (without). Content negotiation serves different representations (HTML, RDF, Transit+JSON) based on the request.
See doc/web.md for details.
Bootstrap Process
New releases are bootstrapped from the preceding release. The process (in dk.cst.dannet.db.bootstrap):
- Load and clean the previous version's RDF data
- Convert to triples using the current schema
- Import into Apache Jena graphs and apply release changes
- Infer additional triples via OWL/RDFS schemas
- Export the final RDF dataset (see Database Release Workflow)
Bootstrap data should be located in
./bootstraprelative to the execution directory.
Setup
DanNet requires Java and Clojure's official CLI tools. Dependencies are specified in deps.edn.
Development
- Start the web service using
(restart)in dk.cst.dannet.web.service — available atlocalhost:3456 - Run the frontend with shadow-cljs:
shell
npx shadow-cljs watch app
Testing a Release Build
Using Docker (requires Docker daemon running):
# From the docker/ directory
docker compose up --build
Or manually:
shadow-cljs --aliases :frontend release app
clojure -T:build org.corfield.build/uber :lib dk.cst/dannet :main dk.cst.dannet.web.service :uber-file "\"dannet.jar\""
java -jar -Xmx4g dannet.jar
Memory Requirements
The system uses ~1.5 GB when idle and ~3 GB when rebuilding the database. A server should have at least 4 GB of available RAM.
Validating WN-LMF
python3 -m venv examples/venv
source examples/venv/bin/activate
python3 -m pip install wn
python -m wn validate --output-file examples/wn-lmf-validation.json export/wn-lmf/dannet-wn-lmf.xml
Deployment
The production server at wordnet.dk runs as a systemd service delegating to Docker.
Service Setup
cp system/dannet.service /etc/systemd/system/dannet.service
systemctl enable dannet
systemctl start dannet
Updating the Web Service
To update the web service software without changing the database:
# From the docker/ directory
docker compose up -d dannet --build
Database Release Workflow
When releasing a new version of the database:
-
Build the database locally via REPL in
dk.cst.dannet.web.service:clojure(restart) ;; Then in dk.cst.dannet.db: (export-rdf! @dk.cst.dannet.web.resources/db) (export-csv! @dk.cst.dannet.web.resources/db) (export-wn-lmf! "export/wn-lmf/") -
Stop the service on production:
shelldocker compose stop dannet -
Transfer database and export files via SFTP, then:
shellunzip -o tdb2.zip -d /dannet/db/ mv cor.zip dannet.zip dds.zip oewn-extension.zip /dannet/export/rdf/ mv dannet-csv.zip /dannet/export/csv/ mv dannet-wn-lmf.xml.gz /dannet/export/wn-lmf/ -
Restart:
shelldocker compose up -d dannet --build
常见问题
io.github.kuhumcst/dannet 是什么?
DanNet 提供丹麦语 WordNet 词汇网络,含丰富词汇关系,并支持通过 SPARQL 访问。
相关 Skills
前端设计
by anthropics
面向组件、页面、海报和 Web 应用开发,按鲜明视觉方向生成可直接落地的前端代码与高质感 UI,适合做 landing page、Dashboard 或美化现有界面,避开千篇一律的 AI 审美。
✎ 想把页面做得既能上线又有设计感,就用前端设计:组件到整站都能产出,难得的是能避开千篇一律的 AI 味。
网页应用测试
by anthropics
用 Playwright 为本地 Web 应用编写自动化测试,支持启动开发服务器、校验前端交互、排查 UI 异常、抓取截图与浏览器日志,适合调试动态页面和回归验证。
✎ 借助 Playwright 一站式验证本地 Web 应用前端功能,调 UI 时还能同步查看日志和截图,定位问题更快。
网页构建器
by anthropics
面向复杂 claude.ai HTML artifact 开发,快速初始化 React + Tailwind CSS + shadcn/ui 项目并打包为单文件 HTML,适合需要状态管理、路由或多组件交互的页面。
✎ 在 claude.ai 里做复杂网页 Artifact 很省心,多组件、状态和路由都能顺手搭起来,React、Tailwind 与 shadcn/ui 组合效率高、成品也更精致。
相关 MCP Server
GitHub
编辑精选by GitHub
GitHub 是 MCP 官方参考服务器,让 Claude 直接读写你的代码仓库和 Issues。
✎ 这个参考服务器解决了开发者想让 AI 安全访问 GitHub 数据的问题,适合需要自动化代码审查或 Issue 管理的团队。但注意它只是参考实现,生产环境得自己加固安全。
Context7 文档查询
编辑精选by Context7
Context7 是实时拉取最新文档和代码示例的智能助手,让你告别过时资料。
✎ 它能解决开发者查找文档时信息滞后的问题,特别适合快速上手新库或跟进更新。不过,依赖外部源可能导致偶尔的数据延迟,建议结合官方文档使用。
by tldraw
tldraw 是让 AI 助手直接在无限画布上绘图和协作的 MCP 服务器。
✎ 这解决了 AI 只能输出文本、无法视觉化协作的痛点——想象让 Claude 帮你画流程图或白板讨论。最适合需要快速原型设计或头脑风暴的开发者。不过,目前它只是个基础连接器,你得自己搭建画布应用才能发挥全部潜力。