Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.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 SPARQL查询以检索类的个体_Java_Sparql_Jena_Protege - Fatal编程技术网

Java SPARQL查询以检索类的个体

Java SPARQL查询以检索类的个体,java,sparql,jena,protege,Java,Sparql,Jena,Protege,我试图用Java中的rdf:typeJena检索类的个体(注意:该类没有子类) 关于数据(x个人): A类:x1,x2,x3,x4 B类:x5,x6,x7,x8 C类:x9,x10,x11, x12 对象属性:z1(A类和B类)、z2(A类和C类)、z3(类 B加C) rdf的结果:类别A的类型: 在通过jena的Eclipse中的Protege:x1,x2,x3,x4:x1,x2,x3,x4, x5、x6、x7、x8、x9 Select?x 其中{?x rdf:type:ClassA} 在本

我试图用Java中的
rdf:type
Jena检索类的个体(注意:该类没有子类)

关于数据(x个人):

A类:x1,x2,x3,x4 B类:x5,x6,x7,x8 C类:x9,x10,x11, x12

对象属性:z1(A类和B类)、z2(A类和C类)、z3(类 B加C)

rdf的结果:类别A的类型:

在通过jena的Eclipse中的Protege:x1,x2,x3,x4:x1,x2,x3,x4, x5、x6、x7、x8、x9

Select?x
其中{?x rdf:type:ClassA}
在本体编辑器中,它可以完美地工作。然而,在Java中,当我执行查询时,我也会得到不属于该类的个体,但它们通过一个属性与其中一个类个体相连。有人知道怎么解决这个问题吗?本体论是正确的

  • 我在java中使用eclipse作为编辑器
  • 我正在使用Protege构建本体
Eclipse/Jena:

PropertyConfigurator.configure(“D:\\apache-jena-2.10.1\\jena-log4j.properties”);
OntModel model=ModelFactory.createOntologyModel(OntModelSpec.OWL\u MEM\u MICRO\u RULE\u INF);
FileManager.get().readModel(模型,“文件:.owl”);
字符串查询字符串=
“前缀rdf:”+
“前缀owl:”+
“前缀xsd:”+
“前缀rdfs:”+
“前缀bio:”+
“选择?x”+
“其中{?x rdf:type bio:Class}”;
Query=QueryFactory.create(queryString);
QueryExecution qe=QueryExecutionFactory.create(查询,模型);
com.hp.hpl.jena.query.ResultSet ResultSet=qe.execSelect();
ResultSetFormatter.out(System.out、resultset、query);
门生:

前缀rdf:
前缀owl:
前缀xsd:
前缀rdfs:
前缀bio:
选择?x
其中{?x rdf:type bio:ClassA}

如果本体是正确的,那么您可以向我们展示您的代码吗

你确定“:Class”是正确的吗


如果默认名称空间是owl或其他词汇表,那么它可能返回使用该词汇表的所有个人,或者可能返回Jena中使用的推理规则的差异。这是一个假设。

检查数据类型属性的域和范围
在Z3中,如果将Z3的域设置为类A,则参与该属性的每一个人都被视为类A的成员,尽管在Ontology

中指定该个体为B类个体,请显示您正在查询的RDF数据、正在运行的SPARQL查询以及正在获得的实际结果。如果可能,用于运行查询的代码也会有所帮助。如果没有这些数据,诊断您的问题几乎是不可能的。您使用Protégé标记,所以当您说“在本体编辑器中它工作得很好”时,我假设您指的是Protégé而不是Eclipse,尽管“我使用Eclipse作为编辑器”。您是否在Protégé中运行相同的查询?也许你可以附上一个截图?我没有收到错误,也没有收到Protege或eclipse中的错误。但是我确实得到了不属于eclipse中我查询的类的个人,而在protege中我得到了正确的查询结果。感谢您的澄清。正如我在第一条评论中所问的,请显示您的数据和您正在使用的实际SPARQL查询(问题中的那个不可能是它,因为前缀
rdf:
),您从每个查询中得到的结果,可能还有您正在运行的Java代码。如果看不到数据,我们作为用户就无法知道Protégé是出了问题,还是Jena出了问题,或者是什么。我们需要数据。你的更新就在我发布最后一条评论时出现。谢谢你的密码。(虽然它还不完全完整,
model
来自哪里?)。不过我们仍然需要本体。owl:类看起来更像。它是owl。也许是这样,但我能做些什么来修复呢it@user2598911如果要查找类,请查询
?x rdf:type owl:Class
。如果要查找
bio:ClassA
的实例,请查询
?x rdf:type bio:ClassA
。我要查找该类的实例。问题是在eclipse中,它将显示不属于该类的所有实例。但在Proteges sparql中,它显示了正确的实例