1
이 올빼미 모델을 만들었습니다. 센서와 위치의 두 클래스가 있으며 위치는 열거 된 클래스입니다.SPARQL 쿼리 인쇄 JENA를 사용하여 클래스 열거 JA
:Sensor rdf:type owl:Class;
:Location rdf:type owl:Class ;
owl:equivalentClass [ rdf:type owl:Class ;
owl:oneOf (:Bathroom
:Bedroom
)
] .
:hasLocation rdf:type owl:ObjectProperty ;
rdfs:domain [ rdf:type owl:Class ;
:Sensor
] ;
rdfs:range :Location .
:Bathing rdf:type owl:NamedIndividual ,
ADLOntology:Bathing .
:Bathroom rdf:type owl:NamedIndividual ,
ADLOntology:Location .
:Window rdf:type owl:NamedIndividual ,
:Sensor ;
:hasLocation :Bedroom;
:hasId "55"^^xsd:int ; .
각 센서의 위치를 ID 번호로 지정하려고합니다. Protege에서 내 쿼리를 작성했는데 정상적으로 작동합니다. 그러나 JENA에서는 위치에 대해 null을 인쇄합니다. 자원을 사용하여 센서를 인쇄했지만 위치는 null을 인쇄합니다. 나는 그 위치를 인쇄하는 properer 방법을 이해할 수 없었다.
String file = "C:/users/src/data.ttl";
Model model = FileManager.get().loadModel(file);
String queryString = "PREFIX : <http://semanticweb.org/sensor#>" +
"SELECT ?sensor ?location" +
"WHERE {?sensor :hasId \"55"\^^xsd:int." +
"?sensor :hasLocation ?location}";
Query query = QueryFactory.create(queryString);
try (QueryExecution qexec = QueryExecutionFactory.create(query, model)) {
ResultSet result = qexec.execSelect();
for (; result.hasNext();) {
QuerySolution soln = result.nextSolution();
Resource sensor= soln.getResource("sensor");
Resource location = soln.getResource("location");
System.out.println("Sensor" + sensor);
System.out.println("Location" + location);
}
}
정말 고마워요, 거기에 어떤 좋은 자습서, 당신은 추천 할 수 있습니다 – Ali