2010-06-09 4 views
1

나는 entarment의 sparql과 사용을 시도하고있다. 다른 Entailment 체제의 Jena 효과

는 예를 들어 나는 예나에 넣어하려고

http://www.w3.org/TR/2010/WD-sparql11-entailment-20100126/#t112을 사용했다.

 
 OntClass book1= model.createClass(NS+"book1"); 
    OntClass book2=model.createClass(NS+"book2"); 
    OntClass book3=model.createClass(NS+"book3"); 
    OntClass publication=model.createClass(NS+"publication"); 
    OntClass article=model.createClass(NS+"article"); 
    OntClass mit=model.createClass(NS+"MIT"); 

    ObjectProperty a = model.createObjectProperty(NS+"a"); 
    ObjectProperty publishes = model.createObjectProperty(NS+"publishes"); 

    book1.addProperty(a, publication); 
    book2.addProperty(a, article); 
    publication.addSubClass(article); 

    publishes.addRange(publication); 
    mit.addProperty(publishes, book3); 

여기서 모델은 OntModel 유형입니다.

그리고 난 모델은 다음과 같이 생성 된 문제

 "PREFIX table: "I have correct namespace here"+ 
    "SELECT *"+ 
    "WHERE"+ 
    "{"+ 
    " ?x ?y table:publication ."+ 
    "}";

과 유사한 쿼리를 사용했다. 희망 OntModelSpec은 괜찮습니다. 쿼리


x               y    
| http://www.example.com/ontologies/sample.owl#publishes | rdfs:range          | 
| http://www.example.com/ontologies/sample.owl#article  | rdfs:subClassOf         | 
| http://www.example.com/ontologies/sample.owl#book1  | http://www.example.com/ontologies/sample.owl#a | 
| http://www.example.com/ontologies/sample.owl#publication | rdfs:subClassOf         | 
| http://www.example.com/ontologies/sample.owl#book3  | rdf:type           | 

결과는 사람,과 및 함의하지 않고, 나에게 그래서 캔트 시도 코드를 예를 줄 수있는 결과를 바로 얻을 수

OntModel m = ModelFactory.createOntologyModel(OntModelSpec.OWL_MEM_RDFS_INF, null);

내가 얻을.

답변

2

당신의 온톨로지는 약간 비웃어 보입니다.

book1, book2, book3mit은 클래스가 아니며 개인용입니다. 책에 model.createIndividual(NS + "bookX", publication)을 사용하고 "조직"또는 이와 유사한 클래스를 만든 다음 mit을 해당 클래스의 개별 사용자로 만들어야합니다. createIndividual은 이미 개인에게 유형을 할당하는 역할을하므로 "a"속성을 사용하지 않아도됩니다. 먼저 문제를 해결 한 다음 다시 시도하고 질문을 업데이트해야합니다.

요약 정보 : 쿼리 결과의 마지막 줄을 확인하십시오. 당신은 아무 말도하지 않았다 book3하지만, 책은 어쨌든 거기에있다. 그것은 다른 명령문에 의해 수반 되었기 때문입니다. 그래서 RDFS 유추 엔진이 사용자가 모델을 쿼리 할 때 문을 볼 수있게합니다. 이 문은 publishes의 범위 때문에 표시됩니다. 게시되는 모든 항목의 유형은 publication입니다.

+0

xx는 잘 작동했다. 나는 당신의 생각에 따라 모델을 바꿨다. 추론을하지 않고 book1 (더하기 게시 및 기사), 추론, 3 권의 책. 고마워. y 수업으로 책은 나쁜 실수 였지만 같은 결과를 얻지 못했지만 book3을 확인하지 못했습니다. – blueomega

+0

기꺼이 도와 드리겠습니다! – cygri