schema_info:
title: NANDO (Nanbyo Data)
description: |
NANDO is a comprehensive ontology for Japanese intractable (rare) diseases maintained by the Japanese government. It contains 2,777 disease classes organized in a hierarchical taxonomy, primarily focusing on designated intractable diseases eligible for government support. Each disease includes multilingual labels (English, Japanese kanji, hiragana), descriptions, notification numbers, and cross-references to international disease ontologies (MONDO) and external resources (KEGG, medical documentation). The ontology is designed to support Japanese healthcare policy, research coordination, and patient information systems.
endpoint: https://rdfportal.org/primary/sparql
base_uri: http://nanbyodata.jp/ontology/
graphs:
- http://nanbyodata.jp/ontology/nando
version:
mie_version: '1.0'
mie_created: '2025-01-01'
data_version: Current release
update_frequency: Quarterly
license:
data_license: CC BY 4.0
license_url: https://creativecommons.org/licenses/by/4.0/
access:
rate_limiting: 100 queries/min
max_query_timeout: 60 seconds
shape_expressions: |
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX obo: <http://purl.obolibrary.org/obo/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX nando: <http://nanbyodata.jp/ontology/NANDO_>
<DiseaseShape> {
a [ owl:Class ] ;
rdfs:label xsd:string + ;
dct:identifier xsd:string ;
skos:prefLabel xsd:string ;
nando:hasNotificationNumber xsd:string ? ;
dct:source IRI ? ;
rdfs:seeAlso IRI * ;
skos:closeMatch IRI * ;
skos:altLabel xsd:string * ;
dct:description xsd:string ? ;
rdfs:subClassOf IRI * ;
owl:deprecated xsd:integer ?
}
sample_rdf_entries:
- title: Designated Intractable Disease with Full Metadata
description: Spinal and bulbar muscular atrophy (SBMA), also known as Kennedy disease, with complete trilingual labels, description, notification number, and cross-references to MONDO and KEGG.
rdf: |
@prefix nando: <http://nanbyodata.jp/ontology/NANDO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
nando:1200001 a owl:Class ;
dct:identifier "NANDO:1200001" ;
nando:hasNotificationNumber "1" ;
rdfs:label "Spinal and bulbar muscular atrophy"@en ;
rdfs:label "球脊髄性筋萎縮症"@ja ;
rdfs:label "きゅうせきずいせいきんいしゅくしょう"@ja-hira ;
skos:prefLabel "球脊髄性筋萎縮症"@ja ;
skos:altLabel "Kennedy disease"@en ;
skos:altLabel "SBMA"@en ;
dct:description "通常成人男性に発症する、遺伝性下位運動ニューロン疾患である。"@ja ;
rdfs:subClassOf nando:1100001 ;
skos:closeMatch <http://purl.obolibrary.org/obo/MONDO_0010735> ;
rdfs:seeAlso <https://www.kegg.jp/dbget-bin/www_bget?ds_ja:H00455> .
- title: Disease Category (Parent Class)
description: Neuromuscular disease category serving as parent class for specific neuromuscular conditions in the NANDO hierarchy.
rdf: |
@prefix nando: <http://nanbyodata.jp/ontology/NANDO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
nando:1100001 a owl:Class ;
dct:identifier "NANDO:1100001" ;
rdfs:label "Neuromuscular disease"@en ;
rdfs:label "神経・筋疾患"@ja ;
rdfs:label "しんけい・きんしっかん"@ja-hira ;
skos:prefLabel "神経・筋疾患"@ja ;
rdfs:subClassOf nando:1000001 ;
skos:closeMatch <http://purl.obolibrary.org/obo/MONDO_0019056> .
- title: Disease with Multiple MONDO Mappings
description: Metabolic disease category linked to multiple MONDO ontology terms, demonstrating one-to-many cross-references.
rdf: |
@prefix nando: <http://nanbyodata.jp/ontology/NANDO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
nando:1100002 a owl:Class ;
dct:identifier "NANDO:1100002" ;
rdfs:label "Metabolic disease"@en ;
rdfs:label "代謝系疾患"@ja ;
skos:prefLabel "代謝系疾患"@ja ;
rdfs:subClassOf nando:1000001 ;
skos:closeMatch <http://purl.obolibrary.org/obo/MONDO_0004955> ;
skos:closeMatch <http://purl.obolibrary.org/obo/MONDO_0005066> .
- title: Well-Known Disease with External Documentation
description: Parkinson's disease entry with comprehensive external references to government documents, patient resources, and KEGG database.
rdf: |
@prefix nando: <http://nanbyodata.jp/ontology/NANDO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
nando:1200010 a owl:Class ;
dct:identifier "NANDO:1200010" ;
nando:hasNotificationNumber "6" ;
rdfs:label "Parkinson's disease"@en ;
rdfs:label "パーキンソン病"@ja ;
skos:prefLabel "パーキンソン病"@ja ;
skos:altLabel "PD"@en ;
skos:altLabel "Parkinson disease"@en ;
rdfs:subClassOf nando:1100001 ;
skos:closeMatch <http://purl.obolibrary.org/obo/MONDO_0005180> ;
rdfs:seeAlso <https://www.kegg.jp/dbget-bin/www_bget?ds_ja:H00057> ;
rdfs:seeAlso <https://www.mhlw.go.jp/file/06-Seisakujouhou-10900000-Kenkoukyoku/0000157751.docx> ;
dct:source <https://www.nanbyou.or.jp/wp-content/uploads/upload_files/File/006-201804-kojin.pdf> .
- title: Root Ontology Class
description: Top-level intractable disease class serving as root of the NANDO taxonomy hierarchy.
rdf: |
@prefix nando: <http://nanbyodata.jp/ontology/NANDO_> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix dct: <http://purl.org/dc/terms/> .
nando:0000001 a owl:Class ;
dct:identifier "NANDO:0000001" ;
rdfs:label "Intractable disease"@en ;
rdfs:label "難病"@ja ;
rdfs:label "なんびょう"@ja-hira ;
rdfs:subClassOf owl:Thing .
sparql_query_examples:
- title: Find diseases by English keyword
description: Search for diseases using keyword matching in English labels, utilizing Virtuoso's full-text search capabilities.
question: Find all diseases related to Parkinson's disease
complexity: basic
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT ?disease ?label ?identifier
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
rdfs:label ?label ;
dct:identifier ?identifier .
?label bif:contains "'Parkinson*'" option (score ?sc) .
}
ORDER BY DESC(?sc)
LIMIT 20
- title: List all disease categories
description: Retrieve top-level disease categories with their Japanese and English labels.
question: What are the main disease categories in NANDO?
complexity: basic
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nando: <http://nanbyodata.jp/ontology/NANDO_>
SELECT ?category ?en_label ?ja_label
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?category a owl:Class ;
rdfs:subClassOf nando:1000001 ;
rdfs:label ?en_label ;
rdfs:label ?ja_label .
FILTER(LANG(?en_label) = "en")
FILTER(LANG(?ja_label) = "ja" && !REGEX(STR(?ja_label), "^[ぁ-ん]+$"))
}
ORDER BY ?en_label
- title: Get diseases with MONDO cross-references
description: Find diseases mapped to MONDO Disease Ontology terms, useful for international disease harmonization.
question: Which NANDO diseases are mapped to MONDO ontology?
complexity: intermediate
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?disease ?label ?mondo_id
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
rdfs:label ?label ;
skos:closeMatch ?mondo_id .
FILTER(STRSTARTS(STR(?mondo_id), "http://purl.obolibrary.org/obo/MONDO_"))
FILTER(LANG(?label) = "en")
}
LIMIT 50
- title: Find designated intractable diseases with notification numbers
description: Retrieve diseases officially designated by Japanese government with their notification numbers and Japanese names.
question: List designated intractable diseases eligible for government support
complexity: intermediate
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX nando: <http://nanbyodata.jp/ontology/NANDO_>
SELECT ?disease ?identifier ?prefLabel ?en_label ?notif_num
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
dct:identifier ?identifier ;
skos:prefLabel ?prefLabel ;
nando:hasNotificationNumber ?notif_num .
OPTIONAL {
?disease rdfs:label ?en_label .
FILTER(LANG(?en_label) = "en")
}
}
ORDER BY xsd:integer(?notif_num)
LIMIT 50
- title: Explore disease hierarchy with parent-child relationships
description: Navigate the hierarchical structure of diseases showing category-subcategory relationships.
question: Show me the hierarchical structure of diseases under a specific category
complexity: intermediate
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nando: <http://nanbyodata.jp/ontology/NANDO_>
SELECT ?parent ?parent_label ?child ?child_label
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?child rdfs:subClassOf ?parent ;
rdfs:label ?child_label ;
a owl:Class .
?parent rdfs:label ?parent_label ;
a owl:Class .
FILTER(LANG(?child_label) = "en" && LANG(?parent_label) = "en")
FILTER(?parent = nando:1100001)
}
ORDER BY ?child_label
- title: Complex search with multiple filters and cross-references
description: Advanced query combining keyword search, external database links, and multilingual label retrieval.
question: Find neuromuscular diseases with KEGG links and all their labels
complexity: advanced
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX dct: <http://purl.org/dc/terms/>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX nando: <http://nanbyodata.jp/ontology/NANDO_>
SELECT ?disease ?identifier ?en_label ?ja_label ?ja_hira ?kegg ?mondo
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
rdfs:subClassOf+ nando:1100001 ;
dct:identifier ?identifier ;
rdfs:label ?en_label ;
rdfs:label ?ja_label ;
rdfs:seeAlso ?kegg .
OPTIONAL {
?disease rdfs:label ?ja_hira .
FILTER(REGEX(STR(?ja_hira), "^[ぁ-ん]+$"))
}
OPTIONAL {
?disease skos:closeMatch ?mondo .
FILTER(STRSTARTS(STR(?mondo), "http://purl.obolibrary.org/obo/MONDO_"))
}
FILTER(LANG(?en_label) = "en")
FILTER(LANG(?ja_label) = "ja" && !REGEX(STR(?ja_label), "^[ぁ-ん]+$"))
FILTER(CONTAINS(STR(?kegg), "kegg.jp"))
}
ORDER BY ?identifier
LIMIT 30
- title: Statistical aggregation with disease counts by category
description: Aggregate query showing distribution of diseases across major categories with counts and representative examples.
question: How many diseases are in each category with examples?
complexity: advanced
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX nando: <http://nanbyodata.jp/ontology/NANDO_>
SELECT ?category ?category_label (COUNT(DISTINCT ?disease) as ?disease_count)
(GROUP_CONCAT(DISTINCT ?example_label; separator="; ") as ?examples)
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?category a owl:Class ;
rdfs:subClassOf nando:1000001 ;
rdfs:label ?category_label .
?disease rdfs:subClassOf ?category ;
rdfs:label ?example_label ;
a owl:Class .
FILTER(LANG(?category_label) = "en")
FILTER(LANG(?example_label) = "en")
}
GROUP BY ?category ?category_label
ORDER BY DESC(?disease_count)
cross_references:
- pattern: skos:closeMatch
description: |
Links to MONDO Disease Ontology for international disease harmonization. Approximately 2,341 diseases have MONDO mappings.
databases:
disease_ontologies:
- 'MONDO Disease Ontology: ~2,341 mappings'
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?disease ?mondo
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
skos:closeMatch ?mondo .
FILTER(STRSTARTS(STR(?mondo), "http://purl.obolibrary.org/obo/MONDO_"))
}
LIMIT 100
- pattern: rdfs:seeAlso
description: |
External references to various resources including KEGG Disease database, Japanese government documents (Ministry of Health), patient information portals, and clinical syndrome databases. Total of 6,120 external references.
databases:
molecular_databases:
- 'KEGG Disease: Disease pathway and gene associations'
government_resources:
- 'MHLW (Ministry of Health): Official designation documents (.docx)'
patient_resources:
- 'Nanbyou.or.jp: Patient information and support'
clinical_databases:
- 'Syndrome Finder: Clinical syndrome descriptions'
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?disease ?external_ref
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
rdfs:seeAlso ?external_ref .
FILTER(CONTAINS(STR(?external_ref), "kegg.jp") ||
CONTAINS(STR(?external_ref), "mhlw.go.jp") ||
CONTAINS(STR(?external_ref), "nanbyou.or.jp"))
}
LIMIT 100
- pattern: dct:source
description: |
Source documentation for disease definitions, primarily linking to official Japanese government PDF documents describing diagnostic criteria and clinical management. Approximately 2,397 diseases have source references.
databases:
documentation:
- 'Nanbyou.or.jp Documents: ~2,397 source PDFs'
sparql: |
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX dct: <http://purl.org/dc/terms/>
SELECT ?disease ?source_doc
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
dct:source ?source_doc .
}
LIMIT 100
architectural_notes:
schema_design:
- "Hierarchical taxonomy with owl:Thing → Intractable disease → Designated intractable disease → Disease categories → Specific diseases"
- 'Multilingual support with language tags: @en (English), @ja (Japanese kanji), @ja-hira (Japanese hiragana)'
- Disease categories use NANDO:11xxxxx IDs, specific diseases use NANDO:12xxxxx IDs
- Root class NANDO:0000001 serves as top-level intractable disease concept
performance:
- Use bif:contains for keyword searches - significantly faster than REGEX or FILTER CONTAINS
- 'Language filtering on rdfs:label is efficient: FILTER(LANG(?label) = ''en'')'
- Cross-reference queries benefit from STRSTARTS filtering on URI patterns
- Hierarchical queries using rdfs:subClassOf+ may timeout; use direct parent-child for better performance
data_integration:
- MONDO mappings via skos:closeMatch enable integration with international disease databases
- KEGG Disease links provide molecular and pathway context
- Japanese government documents (.docx) contain official diagnostic criteria
- Some diseases have multiple MONDO mappings (one-to-many relationships)
data_quality:
- All 2,777 diseases have dct:identifier, rdfs:label, and skos:prefLabel
- 88% have notification numbers (nando:hasNotificationNumber)
- 84% have MONDO mappings (skos:closeMatch)
- 44% have descriptions (dct:description) in Japanese
- 9 deprecated classes marked with owl:deprecated
data_statistics:
total_diseases: 2777
designated_diseases_with_notification: 2454
diseases_with_mondo_mapping: 2341
diseases_with_kegg_links: ~500
coverage:
identifier_coverage: 100% (all diseases)
label_coverage_multilingual: 100% (all diseases)
notification_number_coverage: ~88% (designated diseases)
mondo_mapping_coverage: ~84%
description_coverage: ~44%
cardinality:
avg_labels_per_disease: 3.0
avg_external_refs_per_disease: 2.2
avg_mondo_mappings_per_disease: 0.8
performance_characteristics:
- 'Basic keyword searches: <1 second'
- 'Hierarchical traversal queries: 1-3 seconds'
- 'Multi-join cross-reference queries: 2-5 seconds'
- 'Full-text search with bif:contains: typically <500ms'
data_quality_notes:
- "Hiragana labels use pattern ^[ぁ-ん]+$ for filtering"
- Some diseases have multiple MONDO mappings (valid for disease variants)
- External URLs may change; KEGG links are most stable
- Japanese descriptions may contain technical medical terminology
anti_patterns:
- title: Using REGEX instead of bif:contains for keyword search
problem: REGEX is slow and doesn't support relevance ranking
wrong_sparql: |
SELECT ?disease ?label
WHERE {
?disease rdfs:label ?label .
FILTER(REGEX(?label, "Parkinson", "i"))
}
correct_sparql: |
SELECT ?disease ?label
WHERE {
?disease rdfs:label ?label .
?label bif:contains "'Parkinson*'" option (score ?sc) .
}
ORDER BY DESC(?sc)
explanation: bif:contains uses full-text indexing and provides relevance scoring, making searches 10-100x faster
- title: Not filtering language tags for multilingual labels
problem: Returns all language variants, creating duplicate rows and confusion
wrong_sparql: |
SELECT ?disease ?label
WHERE {
?disease a owl:Class ;
rdfs:label ?label .
}
correct_sparql: |
SELECT ?disease ?en_label ?ja_label
WHERE {
?disease a owl:Class ;
rdfs:label ?en_label ;
rdfs:label ?ja_label .
FILTER(LANG(?en_label) = "en")
FILTER(LANG(?ja_label) = "ja" && !REGEX(STR(?ja_label), "^[ぁ-ん]+$"))
}
explanation: Explicit language filtering prevents duplicates and separates English, kanji, and hiragana labels
- title: Using unlimited rdfs:subClassOf+ for deep hierarchy traversal
problem: May timeout on large hierarchies without LIMIT
wrong_sparql: |
SELECT ?disease ?label
WHERE {
?disease rdfs:subClassOf+ nando:1100001 ;
rdfs:label ?label .
}
correct_sparql: |
SELECT ?disease ?label
WHERE {
?disease rdfs:subClassOf nando:1100001 ;
rdfs:label ?label .
FILTER(LANG(?label) = "en")
}
LIMIT 100
explanation: Direct parent-child queries are faster; if deep traversal needed, always use LIMIT
common_errors:
- error: Empty result set when searching for diseases
causes:
- Forgot to include graph in FROM clause
- Wrong language tag filter
- Searching for hiragana without proper pattern
solutions:
- 'Always include: FROM <http://nanbyodata.jp/ontology/nando>'
- Use LANG(?label) = 'en' for English or 'ja' for Japanese
- "For hiragana: FILTER(REGEX(STR(?label), '^[ぁ-ん]+$'))"
example_fix: |
# Wrong
SELECT ?disease ?label
WHERE {
?disease rdfs:label ?label .
}
# Correct
SELECT ?disease ?label
FROM <http://nanbyodata.jp/ontology/nando>
WHERE {
?disease a owl:Class ;
rdfs:label ?label .
FILTER(LANG(?label) = "en")
}
- error: Query timeout on MONDO cross-reference queries
causes:
- Not using STRSTARTS filter before joining
- Missing LIMIT clause
- Inefficient join order
solutions:
- Apply FILTER(STRSTARTS(STR(?mondo), 'http://purl.obolibrary.org/obo/MONDO_')) early
- Always add LIMIT for exploratory queries
- Put most selective conditions first
example_fix: |
# Slow - filters after join
SELECT ?disease ?label ?mondo
WHERE {
?disease skos:closeMatch ?mondo ;
rdfs:label ?label .
FILTER(STRSTARTS(STR(?mondo), "http://purl.obolibrary.org/obo/MONDO_"))
}
# Fast - filters before join
SELECT ?disease ?label ?mondo
WHERE {
?disease a owl:Class ;
rdfs:label ?label .
?disease skos:closeMatch ?mondo .
FILTER(STRSTARTS(STR(?mondo), "http://purl.obolibrary.org/obo/MONDO_"))
FILTER(LANG(?label) = "en")
}
LIMIT 100
- error: Cannot distinguish between kanji and hiragana labels
causes:
- Both use @ja language tag
- Not using regex pattern to separate them
solutions:
- "Hiragana-only: FILTER(REGEX(STR(?label), '^[ぁ-ん]+$'))"
- "Kanji (non-hiragana): FILTER(LANG(?label) = 'ja' && !REGEX(STR(?label), '^[ぁ-ん]+$'))"
- Use separate OPTIONAL blocks for each label type
example_fix: |
# Better approach - separate label types
SELECT ?disease ?en_label ?ja_kanji ?ja_hira
WHERE {
?disease a owl:Class .
OPTIONAL {
?disease rdfs:label ?en_label .
FILTER(LANG(?en_label) = "en")
}
OPTIONAL {
?disease rdfs:label ?ja_kanji .
FILTER(LANG(?ja_kanji) = "ja" && !REGEX(STR(?ja_kanji), "^[ぁ-ん]+$"))
}
OPTIONAL {
?disease rdfs:label ?ja_hira .
FILTER(REGEX(STR(?ja_hira), "^[ぁ-ん]+$"))
}
}
LIMIT 20