saf*_*afé 6 owl ontology sparql jena mesh-ontology
在我的这个工作层面,我需要从MeSH本体中提取一个类同义词.我正在寻找SPARQL查询的正确语法:它们如何存储在MeSH中的同义词?我该如何提取它们?
我不确定你的同义词是什么意思.但是在看了MeSH本体之后(从这里下载).我运行以下查询来列出所有不同的谓词:
SELECT DISTINCT ?p where { ?s ?p ?o }
Run Code Online (Sandbox Code Playgroud)
......我明白了......
<http://www.w3.org/2004/02/skos/core#historyNote>
<http://www.nlm.nih.gov/mesh/2006#considerAlso>
<http://www.nlm.nih.gov/mesh/2006#recordAuthorizer>
<http://www.nlm.nih.gov/mesh/2006#dateEstablished>
<http://www.nlm.nih.gov/mesh/2006#dateCreated>
<http://www.nlm.nih.gov/mesh/2006#onlineNote>
<http://www.nlm.nih.gov/mesh/2006#activeMeSHYear>
<http://www.nlm.nih.gov/mesh/2006#historyNote>
<http://www.w3.org/2004/02/skos/core#related> <<<---
<http://www.w3.org/2004/02/skos/core#broader> <<<---
<http://www.nlm.nih.gov/mesh/2006#recordMaintainer>
<http://www.w3.org/2004/02/skos/core#scopeNote>
<http://www.w3.org/2004/02/skos/core#altLabel>
<http://www.w3.org/2004/02/skos/core#prefLabel>
<http://www.nlm.nih.gov/mesh/2006#preferredCombination> <<<---
<http://www.nlm.nih.gov/mesh/2006#publicMeSHNote>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
<http://www.w3.org/2004/02/skos/core#annotation>
<http://www.w3.org/2004/02/skos/core#hiddenLabel>
<http://www.nlm.nih.gov/mesh/2006#recordOriginator>
<http://www.nlm.nih.gov/mesh/2006#runningHead>
<http://www.nlm.nih.gov/mesh/2006#dateRevised>
Run Code Online (Sandbox Code Playgroud)
......谓词<<<---让我想到资源之间的某种关系.
例如,如果我们尝试skos:related使用以下查询:
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
SELECT ?slabel ?olabel
WHERE {
?s skos:related ?o .
?s skos:prefLabel ?slabel .
?o skos:prefLabel ?olabel .
}
Run Code Online (Sandbox Code Playgroud)
我们得到像......
"Anesthetics" "Adjuvants, Anesthesia"
"Prostatic Neoplasms" "Prostate-Specific Antigen"
"Elbow" "Tennis Elbow"
"Uterine Hemorrhage" "Menorrhagia"
"Ecology" "Environmental Health"
"Endocarditis, Bacterial" "Aneurysm, Infected"
( .... and many more )
Run Code Online (Sandbox Code Playgroud)
如果您尝试skos:broader使用以下查询(前缀省略).请注意,skos:broader它用于定义概念的层次结构,因此它具有不同的语义skos:related
SELECT ?slabel ?olabel
WHERE {
?s skos:broader ?o .
?s skos:prefLabel ?slabel .
?o skos:prefLabel ?olabel .
}
Run Code Online (Sandbox Code Playgroud)
你得到 ...
"Healthy People Programs" "Health Promotion"
"Suggestion" "Hypnosis"
"Sodium Iodide" "Iodides"
"Unnecessary Procedures" "Health Services Misuse"
"Bornanes" "Norbornanes"
"Prajmaline" "Ajmaline"
"Vestibular Nerve" "Vestibulocochlear Nerve"
"Adenolymphoma" "Neoplasms, Complex and Mixed"
"Child, Gifted" "Child, Exceptional"
"Tooth Germ" "Tooth Components"
"Breast Self-Examination" "Self-Examination"
( ... and many more)
Run Code Online (Sandbox Code Playgroud)
最重要的是,如果您不知道架构运行一些探索性查询并尝试查看其中的内容.
编辑:查询OWL文件
@safé我认为你是对的,你正在使用的OWL文件中的类之间没有这种关系.
以下查询为您提供了所有OWL类:
SELECT DISTINCT ?p WHERE { ?s a <http://www.w3.org/2002/07/owl#Class> . }
Run Code Online (Sandbox Code Playgroud)
...而另一个给出了在任何类中使用的所有谓词:
SELECT DISTINCT ?p WHERE {
?s a <http://www.w3.org/2002/07/owl#Class> .
?s ?p ?o }
Run Code Online (Sandbox Code Playgroud)
...这最后一个查询只返回:
<http://www.w3.org/2000/01/rdf-schema#subClassOf>
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type>
Run Code Online (Sandbox Code Playgroud)
实际上在那个OWL文件中你只有以下内容:
<http://org.snu.bike/MeSH#antimony_sodium_gluconate> rdf:type owl:Class .
Run Code Online (Sandbox Code Playgroud)
和......
<http://org.snu.bike/MeSH#antimony_sodium_gluconate> rdfs:subClassOf <http://org.snu.bike/MeSH#gluconate>.
Run Code Online (Sandbox Code Playgroud)
这意味着在该OWL文件中声明的唯一事物是类的层次结构,并且没有声明同义词.
如果你想以某种方式提取所有子类做...
SELECT * WHERE {
?subClass <http://www.w3.org/2000/01/rdf-schema#subClassOf> ?upperClass
}
Run Code Online (Sandbox Code Playgroud)