DanNet - Danish WordNet with rich lexical relationships and SPARQL access.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| prefix* | string | |
| max_results | integer |
{
"type": "object",
"title": "autocomplete_danish_wordArguments",
"required": [
"prefix"
],
"properties": {
"prefix": {
"type": "string",
"title": "Prefix"
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 10
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| synset_id* | string |
{
"type": "object",
"title": "fetch_ddo_definitionArguments",
"required": [
"synset_id"
],
"properties": {
"synset_id": {
"type": "string",
"title": "Synset Id"
}
}
}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": ...}.
| Argument | Type | Description |
|---|---|---|
| identifier* | string |
{
"type": "object",
"title": "get_entity_infoArguments",
"required": [
"identifier"
],
"properties": {
"identifier": {
"type": "string",
"title": "Identifier"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| word* | string |
{
"type": "object",
"title": "get_word_overviewArguments",
"required": [
"word"
],
"properties": {
"word": {
"type": "string",
"title": "Word"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| word* | string |
{
"type": "object",
"title": "get_word_synsetsArguments",
"required": [
"word"
],
"properties": {
"word": {
"type": "string",
"title": "Word"
}
}
}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
| Argument | Type | Description |
|---|---|---|
| query* | string | |
| timeout |
| integer |
| distinct | boolean |
| inference | any |
| max_results | integer |
{
"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": null
},
"max_results": {
"type": "integer",
"title": "Max Results",
"default": 100
}
}
}