2011-03-09 6 views
0

Jena 프레임 워크와 함께 Eclipse를 사용하여 웹 애플리케이션을 개발 중입니다. 내 응용 프로그램은 다음을 수행합니다.추론 규칙을 변경하는 방법

1) 이름, 전자 메일, 관심사 (C 언어, Java 등), 직업, 사용자 이름 및 암호 정보로 새 사용자를 등록합니다.

2)이 정보는 user.rdf라는 rdf 파일에 저장됩니다.

3) 새 사용자 이름과 암호로 새 사용자 계정이 만들어집니다. 새 사용자의 로그인은 사용자의 관심에 따라 데이터베이스의 모든 관련 서적을 엽니 다. 그/그녀가 C 언어에 관심이 다음 화면에 C++의 책이 그에게 권장되고 목록을 채울 수 있습니다 경우

:

4) 지금은 다음과 같은 새로운 사용자를 추천해야합니다.

사실과 규칙이 필요한 추론 엔진이 필요하다는 것을 알고 있습니다. 사실은 사용자의 관심을 저장하는 rdf 파일에 있습니다. 규칙 파일은 권장 사항이 수행 될 때 규칙을 기반으로 표시됩니다.

다음 내용이있는 user.rdf 파일이 있습니다.

<rdf:RDF 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:kb="http://protege.stanford.edu/kb#" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > 
<rdf:Description rdf:about="http://protege.stanford.edu/kb#Suresh"> 
    <rdfs:label>Suresh</rdfs:label> 
<kb:Uname>suresh</kb:Uname> 
<kb:Password>suresh</kb:Password> 
<kb:Occupation>Agent</kb:Occupation> 
<kb:Interest>Java</kb:Interest> 
<kb:Fname>Suresh</kb:Fname> 
<kb:Email>[email protected]</kb:Email> 
<rdf:type rdf:resource="http://protege.stanford.edu/kb#USER"/> 
    </rdf:Description> 
<rdf:Description rdf:about="http://protege.stanford.edu/kb#Raj"> 
<kb:Email>[email protected]</kb:Email> 
<kb:Name>Raj</kb:Name> 
<kb:Password>lkj</kb:Password> 
<kb:Uname>raj</kb:Uname> 
<kb:Interest>C Language</kb:Interest> 
<kb:Occupation>Student</kb:Occupation> 
</rdf:Description> 
    <rdf:Description rdf:about="http://protege.stanford.edu/kb#Anvika"> 
    <rdfs:label>Anvika</rdfs:label> 
    <kb:Uname>anu</kb:Uname> 
<kb:Password>anu</kb:Password> 
<kb:Occupation>Student</kb:Occupation> 
<kb:Interest>C Language</kb:Interest> 
<kb:Fname>Anvika</kb:Fname> 
<kb:Email>[email protected]</kb:Email> 
<rdf:type rdf:resource="http://protege.stanford.edu/kb#USER"/> 
</rdf:Description> 
</rdf:RDF> 

사용자 수레 쉬와 Anvika 실제로 Protege는에서 만든 다음 파일은 응용 프로그램을 통해 다른 사용자 정보로 업데이트됩니다.

test.rules 파일은 다음과 같습니다

@prefix kb: http://protege.stanford.edu/kb# 
[likec++: (?s rdf:type kb:LikeC++) 
    <- 
     (?s rdf:type kb:USER) 
    (?s kb:Interest ?i) 
    regex(?i,'C Language') 
] 

인해

<rdf:type rdf:resource="http://protege.stanford.edu/kb#LikeC++"/> 

추론을 갖는 라인에 지금

<rdf:RDF 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:kb="http://protege.stanford.edu/kb#" 
xmlns:j.0="http://protege.stanford.edu/kb#LikeC++" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" > 
<rdf:Description rdf:about="http://protege.stanford.edu/kb#Suresh"> 
<rdf:type rdf:resource="http://protege.stanford.edu/kb#USER"/> 
<kb:Email>[email protected]</kb:Email> 
<kb:Fname>Suresh</kb:Fname> 
<kb:Interest>Java</kb:Interest> 
<kb:Occupation>Agent</kb:Occupation> 
<kb:Password>suresh</kb:Password> 
<kb:Uname>suresh</kb:Uname> 
<rdfs:label>Suresh</rdfs:label> 
</rdf:Description> 
<rdf:Description rdf:about="http://protege.stanford.edu/kb#Raj"> 
<kb:Occupation>Student</kb:Occupation> 
<kb:Interest>C Language</kb:Interest> 
<kb:Uname>raj</kb:Uname> 
    <kb:Password>lkj</kb:Password> 
    <kb:Name>Raj</kb:Name> 
    <kb:Email>[email protected]</kb:Email> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://protege.stanford.edu/kb#Anvika"> 
    <rdf:type rdf:resource="http://protege.stanford.edu/kb#USER"/> 
    <kb:Email>[email protected]</kb:Email> 
    <kb:Fname>Anvika</kb:Fname> 
    <kb:Interest>C Language</kb:Interest> 
    <kb:Occupation>Student</kb:Occupation> 
    <kb:Password>anu</kb:Password> 
    <kb:Uname>anu</kb:Uname> 
    <rdfs:label>Anvika</rdfs:label> 
    <rdf:type rdf:resource="http://protege.stanford.edu/kb#LikeC++"/> 
</rdf:Description> 
</rdf:RDF> 

입니다 제공되는 추론하는 것은 Anvika 사용자를 제공합니다 LikeC++의 추천. 그러나 C 언어에도 관심이있는 사용자 Raj에게는 동일한 내용이 빠져 있습니다. 나는 라인 만이 사용자 Anvika가 유추했다고 생각했습니다. 그러나이 선은 Protege를 통해 자동으로 추가되었습니다. 내 프로그램은 그렇게하지 않습니다. 그렇다면 응용 프로그램을 통해 해당 행을 어떻게 추가합니까? 이것이 가능하지 않은 경우 정확한 결과를 추론하기 위해 규칙을 어떻게 변경합니까?

도와주세요. 나는 이것을 오랫동안 치다.

안부, Archana.

답변

1

RDF/XML보다 덜 자세한 표기법을 사용하면 답이 명확 해집니다.

java jena.rdfcat -out Turtle user.rdf 

(이것은 당신이 당신의 CLASSPATH 환경 변수가 올바르게 설정되어 있다고 가정) : 당신의 user.rdf 파일을 복사 한 후, 나는 다음과 같은했다. 이 생산 출력은 다음과 같습니다 당신이 KB를 볼 수 있습니다

@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix kb:  <http://protege.stanford.edu/kb#> . 
@prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 

kb:Suresh 
    a  kb:USER ; 
    rdfs:label "Suresh" ; 
    kb:Email "[email protected]" ; 
    kb:Fname "Suresh" ; 
    kb:Interest "Java" ; 
    kb:Occupation "Agent" ; 
    kb:Password "suresh" ; 
    kb:Uname "suresh" . 

kb:Raj 
    kb:Email "[email protected]" ; 
    kb:Interest "C Language" ; 
    kb:Name "Raj" ; 
    kb:Occupation "Student" ; 
    kb:Password "lkj" ; 
    kb:Uname "raj" . 

kb:Anvika 
    a  kb:USER ; 
    rdfs:label "Anvika" ; 
    kb:Email "[email protected]" ; 
    kb:Fname "Anvika" ; 
    kb:Interest "C Language" ; 
    kb:Occupation "Student" ; 
    kb:Password "anu" ; 
    kb:Uname "anu" . 

있는 : 주권이 rdf:type kb:USER이없는, 따라서 규칙의 첫 번째 절을 실패.

+0

예 규칙을 편집했지만 현재 작동 중입니다.엄청 고마워. – Archana

+0

다른 사용자를 도울 수 있도록 답변을 '수락'으로 표시하십시오. –

+0

답변을 어떻게 받아들이는 것으로 표시합니까? – Archana