Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用rdf:ID的SPARQL查询不返回任何结果_Java_Rdf_Sparql_Jena_Semantic Web - Fatal编程技术网

Java 使用rdf:ID的SPARQL查询不返回任何结果

Java 使用rdf:ID的SPARQL查询不返回任何结果,java,rdf,sparql,jena,semantic-web,Java,Rdf,Sparql,Jena,Semantic Web,我有一个owl文件,我正在尝试对它运行查询,但没有得到任何结果。请有人帮我弄清楚并解释基本查询 publicstaticvoidmain(字符串[]args){ String filename=“H:/Samson\u study/nodeTest/hRESTS-TC3/ontology/apotecaryontology.owl”; 模型模型=ModelFactory.createDefaultModel(); ontmodelmodel1=ModelFactory.createOntolog

我有一个owl文件,我正在尝试对它运行查询,但没有得到任何结果。请有人帮我弄清楚并解释基本查询

publicstaticvoidmain(字符串[]args){
String filename=“H:/Samson\u study/nodeTest/hRESTS-TC3/ontology/apotecaryontology.owl”;
模型模型=ModelFactory.createDefaultModel();
ontmodelmodel1=ModelFactory.createOntologyModel(OntModelSpec.OWL\u DL\u MEM,model);
尝试
{File File=新文件(文件名);
FileInputStream读取器=新的FileInputStream(文件);
model.read(reader,null);
String query1=“前缀rdfs:PREFIX rdf:PREFIX my:SELECT?result,其中{?result rdf:ID my:healthsurancenumber.}”;
Query=QueryFactory.create(query1);
QueryExecution exe=QueryExecutionFactory.create(查询,model1);
ResultSet RES=exe.execSelect();
resultFormatter.out(System.out、RES、query);
}捕获(例外e)
{
e、 printStackTrace();
}
}
本体如下所示:



我没有收到错误,但我不知道如何查询owl文件。请帮助检查本体和查询是否具有完全匹配的IRIs。您正在搜索
rdf:ID
等于
http://127.0.0.1/ontology/ApothecaryOntology.owl#HealthInsuranceNumber
,但基本IRI中没有
#
字符,
rdf:ID
值也没有。这可能意味着文件中的值看起来像
http://127.0.0.1/ontology/ApothecaryOntology.owlHealthInsuranceNumber
而不是您所期望的。

检查本体和查询是否具有完全匹配的IRI。您正在搜索
rdf:ID
等于
http://127.0.0.1/ontology/ApothecaryOntology.owl#HealthInsuranceNumber
,但基本IRI中没有
#
字符,
rdf:ID
值也没有。这可能意味着文件中的值看起来像
http://127.0.0.1/ontology/ApothecaryOntology.owlHealthInsuranceNumber
而不是您所期望的。

为了可读性,添加了换行符的查询是:

前缀rdfs:
前缀rdf:
前缀“我的”:
选择?结果在哪里{
?结果rdf:ID:my:HealthInsuranceNumber。
}
虽然在rdf/XML文件中看到rdf:ID,但它实际上不是rdf三元组中的属性;相反,它用于指示RDF图中资源的IRI是什么。例如,代码段:


对RDF进行三重编码:

。#成本rdf:type owl:Class
在哪里。。。是本体的基础IRI。RDF/XML规范的第节对此进行了描述。该规范有点长且复杂,就像RDF/XML一样。不过,RDF/XML只是RDF的一种序列化格式。RDF本身非常简单。只要可能,我建议您不要直接查看RDF图的RDF/XML序列化。取而代之的是,试着像海龟一样储蓄。它的可读性更高,而且您将更好地了解图形中的三元组实际上是什么。例如,您在Turtle中的本体看起来是这样的(我没有复制整个内容):

@前缀:。
@前缀rdf:。
@前缀owl:。
@前缀rdfs:。
:人猫头鹰:班级。
:病人a猫头鹰:班级;
rdfs:子类:个人。
:医院医生猫头鹰:班级;
rdfs:子类别:医师。
:电话号码a猫头鹰:类;
rdfs:子类:编号;
owl:disjointWith:HealthInsuranceNumber。
:医生\u hasID a owl:FunctionalProperty,owl:InverseFunctionalProperty,owl:ObjectProperty;
领域:医师;
范围:PhysicianID。
:Disease\u hasSymptom a owl:FunctionalProperty,owl:ObjectProperty;
rdfs:结构域:疾病;
范围:症状。

这与对应的SPARQL语法几乎相同。

为了可读性,添加了换行符的查询是:

前缀rdfs:
前缀rdf:
前缀“我的”:
选择?结果在哪里{
?结果rdf:ID:my:HealthInsuranceNumber。
}
虽然在rdf/XML文件中看到rdf:ID,但它实际上不是rdf三元组中的属性;相反,它用于指示RDF图中资源的IRI是什么。例如,代码段:


对RDF进行三重编码:

。#成本rdf:type owl:Class
在哪里。。。是本体的基础IRI。RDF/XML规范的第节对此进行了描述。该规范有点长且复杂,就像RDF/XML一样。不过,RDF/XML只是RDF的一种序列化格式。RDF本身非常简单。只要可能,我建议您不要直接查看RDF图的RDF/XML序列化。取而代之的是,试着像海龟一样储蓄。它的可读性更高,而且您将更好地了解图形中的三元组实际上是什么。例如,您在Turtle中的本体看起来是这样的(我没有复制整个内容):

@前缀:。
@前缀rdf:。
@前缀owl:。
@前缀rdfs:。
:人猫头鹰:班级。
:病人a猫头鹰:班级;
rdfs:子类:个人。
:医院医生猫头鹰:班级;
rdfs:子类别:医师。
:电话号码a猫头鹰:类;
rdfs:子类:编号;
猫头鹰:断开连接:健康保险