MCP-Server

dannet

io.github.kuhumcst/dannet
Bildung Wissen & Dokumentation Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Queries the Danish WordNet for word senses, definitions, synonyms, lexical relationships, JSON-LD entities, and SPARQL results.

autocomplete_danish_word
Danish words starting with `prefix` (at least 3 characters), at most `max_results`, as {"autocompletions": [...]} where lemmas are plain strings and inflected forms of a matching lemma are [lemma, form] pairs.
Eingabeschema
{'type': 'object', 'title': 'autocomplete_danish_wordArguments', 'required': ['prefix'], 'properties': {'prefix': {'type': 'string', 'title': 'Prefix'}, 'max_results': {'type': 'integer', 'title': 'Max Results', 'default': 10}}}
fetch_ddo_definition
The full definitions of `synset_id` from DDO (ordnet.dk), where DanNet's own skos:definition may be truncated. Follows the dns:source of each sense. Returns the DanNet definition, the DDO definitions found and any errors; DDO and DanNet have drifted apart, so some source URLs no longer resolve.
Eingabeschema
{'type': 'object', 'title': 'fetch_ddo_definitionArguments', 'required': ['synset_id'], 'properties': {'synset_id': {'type': 'string', 'title': 'Synset Id'}}}
get_entity_info
Full JSON-LD of a DanNet resource: a synset ("synset-3047"), word ("word-11021628") or sense ("sense-21033604"), given bare or prefixed ("dn:synset-3047"), or an external resource by prefix ("ili:i76470", "ontolex:LexicalConcept"). Properties use prefixed names (wn:hypernym, ontolex:isEvokedBy, ...); language-tagged values are {"@value": ..., "@language": ...}.
Eingabeschema
{'type': 'object', 'title': 'get_entity_infoArguments', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'title': 'Identifier'}}}
get_word_overview
Every sense of the Danish `word` in one call: a list with synset_id, label, definition, lexfile, ontological_types, synonyms (words sharing the synset) and hypernym ({synset_id, label} or null) per synset. Only synsets where the word itself has a sense count, not multi-word expressions containing it.
Eingabeschema
{'type': 'object', 'title': 'get_word_overviewArguments', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word'}}}
Ausgabeschema
{'type': 'object', 'title': 'get_word_overviewOutput', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Result'}}}
get_word_synsets
The synsets (senses) of the Danish `word`, as JSON-LD entries with @id (e.g. "dn:synset-3047" for get_entity_info), skos:definition, dns:ontologicalType and wn:lexfile. A word with a single synset gives that synset's full JSON-LD as the only entry.
Eingabeschema
{'type': 'object', 'title': 'get_word_synsetsArguments', 'required': ['word'], 'properties': {'word': {'type': 'string', 'title': 'Word'}}}
Ausgabeschema
{'type': 'object', 'title': 'get_word_synsetsOutput', 'required': ['result'], 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Result'}}}
sparql_query
Run a SPARQL SELECT `query` against DanNet and return standard SPARQL JSON results ({"head": ..., "results": {"bindings": [...]}}). The common prefixes (dn, dns, dnc, dnf, wn, ontolex, lexinfo, skos, rdfs, rdf, owl, marl, dc, ili, en, enl, cor) are declared automatically. `timeout` is in ms (max 15000), `max_results` at most 100, `distinct` adds DISTINCT, and `inference` selects the model: None tries the base model and retries with inference on an empty result; True forces inference, which inverse relations like wn:hyponym and wn:holo_* need; False forces the base model. Performance rules: anchor every query on a known URI or a word lookup (dn:synset-3047 wn:hypernym ?x, never ?x wn:hypernym ?y alone); never FILTER(CONTAINS(...)) over all labels, look the word up first; make every triple pattern share a variable with another; add LIMIT; prefer VALUES over FILTER for several known URIs; the store also holds the English WordNet (en:), so anchor on dn: or "..."@da to stay in Danish. Templates: Synsets of a word: SELECT DISTINCT ?synset ?label WHERE { ?entry ontolex:canonicalForm/ontolex:writtenRep "hund"@da . ?entry ontolex:sense/ontolex:isLexicalizedSenseOf ?synset . ?synset rdfs:label ?label } Taxonomic ancestors: SELECT DISTINCT ?ancestor ?label WHERE { dn:synset-3047 wn:hypernym+ ?ancestor . ?ancestor rdfs:label ?label } Hyponyms (needs inference=True, or query the inverse wn:hypernym): SELECT DISTINCT ?hyponym ?label WHERE { ?hyponym wn:hypernym dn:synset-3047 . ?hyponym rdfs:label ?label } Ontological types (an RDF bag): SELECT ?type WHERE { dn:synset-3047 dns:ontologicalType/?pos ?type . FILTER(STRSTARTS(STR(?pos), STR(rdf:_))) } Taxonomic similarity (dnf:path, dnf:lch, dnf:wup score two synsets of the same language and part of speech, 1.0 for identical): SELECT ?synset ?score WHERE { ?synset a ontolex:LexicalConcept . FILTER(STRSTARTS(STR(?synset), STR(dn:))) BIND(dnf:wup(dn:synset-3047, ?synset) AS ?score) } ORDER BY DESC(?score) LIMIT 20
Eingabeschema
{'type': 'object', 'title': 'sparql_queryArguments', 'required': ['query'], 'properties': {'query': {'type': 'string', 'title': 'Query'}, 'timeout': {'type': 'integer', 'title': 'Timeout', 'default': 8000}, 'distinct': {'type': 'boolean', 'title': 'Distinct', 'default': True}, 'inference': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Inference', 'default': None}, 'max_results': {'type': 'integer', 'title': 'Max Results', 'default': 100}}}
Hinzugefügt
sparql_query
17. September 2026 12:43
Hinzugefügt
fetch_ddo_definition
17. September 2026 12:43
Hinzugefügt
autocomplete_danish_word
17. September 2026 12:43
Hinzugefügt
get_word_overview
17. September 2026 12:43
Hinzugefügt
get_entity_info
17. September 2026 12:43
Hinzugefügt
get_word_synsets
17. September 2026 12:43