使用对象属性Sparql Jena获取文本

使用对象属性Sparql Jena获取文本,sparql,rdf,jena,owl,ontology,Sparql,Rdf,Jena,Owl,Ontology,我有两个sparql查询: public static String query2 = "PREFIX diag: <file:/D:/onto/owl_ontologies/diagnostic1.owl#> " + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>" + "PREFIX owl:<http://www.w3.org/2002/07

我有两个sparql查询:

 public static String query2
        = "PREFIX diag: <file:/D:/onto/owl_ontologies/diagnostic1.owl#> "
        + "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>"
        + "PREFIX owl:<http://www.w3.org/2002/07/owl#>"
        + "SELECT ?disease ?symptom"
        + "WHERE { ?disease diag:hasSymptom ?symptom}";

String moreSymptomsQuery
            = "PREFIX diag: <http://www.hamzadje28/onto/owl_ontologies/diagnostic.owl#> "
            + "SELECT ?symptom"
            + "WHERE {\"hyperglycemia\" diag:hasSymptom ?symptom}";
第一个查询给出结果,第二个查询没有结果!!
我想了解每种疾病的症状。。。这很重要。。。谢谢你的帮助。

字面意思是绝不是RDF三元组的主题,实际上这意味着三元组模式

“高血糖症”诊断:hasSymptom?症状

在第二个查询中,任何数据都不匹配

您必须使用RDF资源的URI,即
http://www.hamzadje28/onto/owl_ontologies/diagnostic.owl#hyperglycemia
,作为三重模式的主题:

PREFIX diag: <http://www.hamzadje28/onto/owl_ontologies/diagnostic.owl#>
SELECT ?symptom
WHERE {
  diag:hyperglycemia diag:hasSymptom ?symptom
}
前缀诊断:
选择症状
在哪里{
诊断:高血糖诊断:hasSymptom?症状
}
作为评论(我想我上次已经告诉过你):使用N-Triples语法而不是RDF/XML来查看数据。这直接反映了SPARQL查询中的模式


此外,在您的数据中,除了疾病之外,所有内容都是字符串文字。不知道为什么,但是如果你真的在建模一个本体,那么我也会使用RDF资源来描述症状——至少当你想对症状做一些额外的陈述时是这样的。

一个文字是从不RDF三元组的主题,这实际上意味着三元组模式

“高血糖症”诊断:hasSymptom?症状

在第二个查询中,任何数据都不匹配

您必须使用RDF资源的URI,即
http://www.hamzadje28/onto/owl_ontologies/diagnostic.owl#hyperglycemia
,作为三重模式的主题:

PREFIX diag: <http://www.hamzadje28/onto/owl_ontologies/diagnostic.owl#>
SELECT ?symptom
WHERE {
  diag:hyperglycemia diag:hasSymptom ?symptom
}
前缀诊断:
选择症状
在哪里{
诊断:高血糖诊断:hasSymptom?症状
}
作为评论(我想我上次已经告诉过你):使用N-Triples语法而不是RDF/XML来查看数据。这直接反映了SPARQL查询中的模式


此外,在您的数据中,除了疾病之外,所有内容都是字符串文字。不知道为什么,但是如果你真的在为本体建模,那么我也会使用RDF资源来处理症状——至少当你想对症状做一些额外的陈述时是这样的。

“选择?症状”+“WHERE
选择?症状哪里
——一个名为
症状哪里
的变量——删除WHERE(或者在它前面加一个空格)。通常,在查询中添加换行符将有助于调试。嗨@AndyS,是的,这是真的,我更改了它,谢谢你
“选择症状”+“WHERE
选择症状哪里
-一个名为
症状哪里
的变量-删除WHERE(或者在它前面加一个空格)。通常,在查询中添加换行符将有助于调试。嗨@AndyS,是的,这是真的,我更改了它。谢谢。如果这是一个正确的答案,请不要忘记接受它。如果这是一个正确的答案,请不要忘了接受它。
PREFIX diag: <http://www.hamzadje28/onto/owl_ontologies/diagnostic.owl#>
SELECT ?symptom
WHERE {
  diag:hyperglycemia diag:hasSymptom ?symptom
}