Java 如何在owlapi中获取个人类

Java 如何在owlapi中获取个人类,java,owl-api,protege4,reasoner,Java,Owl Api,Protege4,Reasoner,如何使用reasoner获得owl中的个人类 OWLOntologyManager=OWLManager.createOWLOntologyManager(); OWLOntology=manager.loadOntologyFromOntologyDocument(新的StringDocumentSource(考拉)); IRI ontologyIRI=IRI.create(“http://www.semanticweb.org/xxxxx/ontologies/2017/10/ontolo

如何使用reasoner获得owl中的个人类

OWLOntologyManager=OWLManager.createOWLOntologyManager();
OWLOntology=manager.loadOntologyFromOntologyDocument(新的StringDocumentSource(考拉));
IRI ontologyIRI=IRI.create(“http://www.semanticweb.org/xxxxx/ontologies/2017/10/ontology");
OWLDataFactory=manager.getOWLDataFactory();
OWLIndividual john=factory.getOWLNamedIndividual(IRI.create(ontologyIRI+“#john”);
OWLDataPropertyExpression hasConnexion=factory.getOWLDataProperty(IRI.create(ontologyIRI+“#hasConnexion”);
OWLDataPropertyAssertionAxiom=factory.getOWLDataPropertyAssertionAxiom(hasConnexion,john,3);
AddAxiom AddAxiom=新的AddAxiom(本体,axiom);
经理。applyChange(addAxiom);
saveOntology(ontology,新的StreamDocumentTarget(System.out));
//推理机
OWLReasonerFactory reasonerFactory=新的StructuralReasonerFactory();
OWLReasoner=reasonerFactory.createReasoner(本体);
OWLClass myClass=fac.getOWLClass(IRI.create(“http://www.semanticweb.org/xxxxx/ontologies/2017/10/ontology#hasConnexion"));
NodeSet personals=reasoner.getInstances(myClass,
假);
用于(节点i:个人)
{
System.out.println(i.getClass());
}
我希望结果是每一个人的班级
但推理者没有给出结果。在protege中,它工作得很好,但是当我使用我的本体并尝试使用owl api来实现它时,我没有得到任何结果

是的,这将不起作用
i.getClass()
将为您提供Java类,而不是断言的个人类型。要获得断言的个人类型,您需要调用
ontology.axioms(i).collect(Collectors.toSet())
。这将只返回已添加到本体的断言

要获取推断类型,您需要调用
reasoner.types(i).collect(Collectors.toSet())


让我烦恼的是,你说你没有得到任何结果。我希望您会得到很多错误的结果(即Java类而不是OWL类)。好的,那么您正在代码片段中创建一个本体。没有得到任何结果的原因是没有为
john
添加类断言公理。您需要添加一个
工厂。getOWLClassAssertionAxiom(owlClassExpression,john)
其中
owlClassExpression
表示本体中的类,如
Person
是的,这将不起作用
i.getClass()
将为您提供Java类,而不是断言的个人类型。要获得断言的个人类型,您需要调用
ontology.axioms(i).collect(Collectors.toSet())
。这将只返回已添加到本体的断言

要获取推断类型,您需要调用
reasoner.types(i).collect(Collectors.toSet())

让我烦恼的是,你说你没有得到任何结果。我希望您会得到很多错误的结果(即Java类而不是OWL类)。好的,那么您正在代码片段中创建一个本体。没有得到任何结果的原因是没有为
john
添加类断言公理。您需要添加一个
工厂。getOWLClassAssertionAxiom(owlClassExpression,john)
其中
owlClassExpression
表示本体中的类,如
Person

基于以下两个示例:

获取OWLClass样式的子类:

OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Style");

OWLClass style = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLClass> subClasses = reasoner.getSubClasses(style, true);
Set<OWLClass> clses = subClasses.getFlattened();

Log.d(TAG, "Subclasses of Style: ");

for (OWLClass cls : clses) {
    String s = cls.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Rock");

OWLClass rock = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLNamedIndividual> individualsNodeSet = reasoner.getInstances(rock, true);
Set<OWLNamedIndividual> individuals = individualsNodeSet.getFlattened();

Log.d(TAG, "Instances of Rock: ");

for (OWLNamedIndividual ind : individuals) {
    String s = ind.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager.createOWLOntologyManager();
IRI IRI=IRI.create(“http://www.semanticweb.org/music-ontology#Style");
OWLClass style=owlManager.getOWLDataFactory().getOWLClass(iri);
OWLReasonerFactory reasonerFactory=新的StructuralReasonerFactory();
OWLReasoner=reasonerFactory.createReasoner(ontologia);
NodeSet subclass=reasoner.getsubclass(style,true);
Set clses=subclass.getflatten();
d(标签,“样式的子类:”);
用于(类别cls:clses){
字符串s=cls.toString();
Log.d(标记,s.substring(s.indexOf(“#”)+1,s.length()-1));
}
获得猫头鹰级摇滚乐的个人:

OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Style");

OWLClass style = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLClass> subClasses = reasoner.getSubClasses(style, true);
Set<OWLClass> clses = subClasses.getFlattened();

Log.d(TAG, "Subclasses of Style: ");

for (OWLClass cls : clses) {
    String s = cls.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Rock");

OWLClass rock = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLNamedIndividual> individualsNodeSet = reasoner.getInstances(rock, true);
Set<OWLNamedIndividual> individuals = individualsNodeSet.getFlattened();

Log.d(TAG, "Instances of Rock: ");

for (OWLNamedIndividual ind : individuals) {
    String s = ind.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager.createOWLOntologyManager();
IRI IRI=IRI.create(“http://www.semanticweb.org/music-ontology#Rock");
OWLClass rock=owlManager.getOWLDataFactory().getOWLClass(iri);
OWLReasonerFactory reasonerFactory=新的StructuralReasonerFactory();
OWLReasoner=reasonerFactory.createReasoner(ontologia);
NodeSet individualsNodeSet=reasoner.getInstances(rock,true);
Set individuals=individualsNodeSet.getflatten();
Log.d(标签,“岩石实例:”);
for(OWLNamedIndividual ind:personals){
字符串s=ind.toString();
Log.d(标记,s.substring(s.indexOf(“#”)+1,s.length()-1));
}
基于以下两个示例:

获取OWLClass样式的子类:

OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Style");

OWLClass style = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLClass> subClasses = reasoner.getSubClasses(style, true);
Set<OWLClass> clses = subClasses.getFlattened();

Log.d(TAG, "Subclasses of Style: ");

for (OWLClass cls : clses) {
    String s = cls.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Rock");

OWLClass rock = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLNamedIndividual> individualsNodeSet = reasoner.getInstances(rock, true);
Set<OWLNamedIndividual> individuals = individualsNodeSet.getFlattened();

Log.d(TAG, "Instances of Rock: ");

for (OWLNamedIndividual ind : individuals) {
    String s = ind.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager.createOWLOntologyManager();
IRI IRI=IRI.create(“http://www.semanticweb.org/music-ontology#Style");
OWLClass style=owlManager.getOWLDataFactory().getOWLClass(iri);
OWLReasonerFactory reasonerFactory=新的StructuralReasonerFactory();
OWLReasoner=reasonerFactory.createReasoner(ontologia);
NodeSet subclass=reasoner.getsubclass(style,true);
Set clses=subclass.getflatten();
d(标签,“样式的子类:”);
用于(类别cls:clses){
字符串s=cls.toString();
Log.d(标记,s.substring(s.indexOf(“#”)+1,s.length()-1));
}
获得猫头鹰级摇滚乐的个人:

OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Style");

OWLClass style = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLClass> subClasses = reasoner.getSubClasses(style, true);
Set<OWLClass> clses = subClasses.getFlattened();

Log.d(TAG, "Subclasses of Style: ");

for (OWLClass cls : clses) {
    String s = cls.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager OWLManager.createOWLOntologyManager();

IRI iri = IRI.create("http://www.semanticweb.org/music-ontology#Rock");

OWLClass rock = owlManager.getOWLDataFactory().getOWLClass(iri);

OWLReasonerFactory reasonerFactory = new StructuralReasonerFactory();
OWLReasoner reasoner = reasonerFactory.createReasoner(ontologia);

NodeSet<OWLNamedIndividual> individualsNodeSet = reasoner.getInstances(rock, true);
Set<OWLNamedIndividual> individuals = individualsNodeSet.getFlattened();

Log.d(TAG, "Instances of Rock: ");

for (OWLNamedIndividual ind : individuals) {
    String s = ind.toString();
    Log.d(TAG, s.substring(s.indexOf("#") + 1, s.length() -1));
}
OWLOntologyManager owlManager.createOWLOntologyManager();
IRI IRI=IRI.create(“http://www.semanticweb.org/music-ontology#