2011-03-09 7 views
3

OWL/RDF로 작성한 온톨로지가 있습니다 (Protege 사용). 이 온톨로지는 이미 각 개념에 대해 일부 개인으로 채워져 있습니다. 나는 rdflib와 FuXi 패키지를 사용하여 파이썬에 이식했다. 그리고 필자는 필자의 온톨로지를 성공적으로 파싱하여 그래프를 작성할 수있다. 지금해야 할 일은 각 개념에 대한 모든 개인을 인쇄하는 것입니다. 아무도 내가 어떻게 할 수 있는지 안다?rdflib을 사용하여 온톨로지의 각 개념에 개인을 인쇄합니다.

답변

4

각 개념에 대한 모든 개인을 말하면 나는 all the resources of rdf:type an specific class을 의미한다고 생각합니다. rdflib하면 쉽게 그래프를 통과함으로써 그렇게 할 수 있습니다

from rdflib import Graph 
from rdflib import URIRef 
g = Graph() 
g.parse("ontology.owl") 
aClass = URIRef("http://www.someuri.org/for/your/class") 
rdftype = URIRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#type") 

for triple in g.triples((None,rdfType,aClass)): 
    print triple 

(None,rdfType,aClass) 그래프 g을 반복하는 구속을 나타냅니다. 세 가지 요소 중 세 가지 요소 중 하나를 설정하면 대상의 조합 (예 : 술어 또는 개체)이 제한됩니다. 이 경우 술어 rdftype과 오브젝트 aClass 만 제한합니다.

당신은 당신이 할 수있는 모든 개인 회원과 모든 클래스 원한다면 : 우리가 어떤 OWL 클래스를 캡처하는 개체 언 바운드를 남겨

for triple in g.triples((None,rdfType,None)): 
    print triple 

하는 경우입니다.

+0

'rdflib.term.URIRef'에 'term'과 관련하여 오류가 발생하여 오류가 발생합니다. – Hossein

+0

@Hossein은 코드의 새 버전을 확인합니다. 이전에 게시 한 코드는 최신 버전의 rdlib에서만 작동합니다.이 새로운 버전이 도움이 될 것입니다. 그렇지 않으면 실행중인 Python 및 rdflib의 버전을 알려주십시오. –