WebProtege에서 사용되는 OWLEntity의 URI에서 엔티티를 추출하는 버전을 구현 중입니다. 나는 그것에 성공했다. 나는 아래 코드를 보여줄 수있다. 하지만 이제 레이블 주석에서 추출해야합니다. WebProtege를 사용하여 어떻게 추출합니까? WebProtege는 클래스를 작성할 때 URI를 작성하지 않습니다 (예 : http://www.co-ode.org/ontologies/pizza/2005/05/16/pizza.owl#Pizza). 그것은 단지 URI 주석을 가지고있다. 레이블에서 URI를 추출하고 싶습니다. 그것은 (이 있기 때문에에 대한 예를 들어, http://www.co-ode.org/ontologies/pizza/2005/05/16/234y2890820802840> "피자"@en> (다소 다음과 같이보고 올바른 일이 필요하면 내가 응답 할 것이다)맨체스터를 사용하여 URI 레이블 주석을위한 ShortformProvider를 추출하는 방법을 알려줄 수 있습니까?
rootOntology = getProject().getRootOntology();
System.out.println(rootOntology.getAxioms());
final OWLDataFactory dataFactory
= rootOntology.getOWLOntologyManager().getOWLDataFactory();
iriShortFormProvider = new SimpleIRIShortFormProvider();
ShortFormProvider shortFormProvider = new ShortFormProvider() {
public String getShortForm(OWLEntity owlEntity) {
return iriShortFormProvider.getShortForm(owlEntity.getIRI());
}
@Override
public void dispose() {
}
};
OWLEntityChecker entityChecker
= new ShortFormEntityChecker(
new BidirectionalShortFormProviderAdapter(
Collections.singleton(rootOntology), shortFormProvider));
ManchesterOWLSyntaxEditorParser parser
= new ManchesterOWLSyntaxEditorParser(
dataFactory, query);
parser.setOWLEntityChecker(entityChecker);
Set<OntologyAxiomPair> set;
try {
set = parser.parseFrames();
System.out.println("SET SIZE" + set.size());
System.out.println("SET STRING" + set.toString());
for (OntologyAxiomPair s1 : set) {
OWLAxiom temp = s1.getAxiom();
Set<OWLAnnotationProperty> annotation = s1.getOntology().getAnnotationPropertiesInSignature();
Iterator itr = annotation.iterator();
while(itr.hasNext()){
System.out.println(s1.getOntology().getAnnotationPropertiesInSignature());
System.out.println("ITERATOR" + itr.next());
}
if (temp.getAxiomType() != AxiomType.DECLARATION
|| temp.getAxiomType() != AxiomType.SUBCLASS_OF || temp.getAxiomType() != AxiomType.DATA_PROPERTY_ASSERTION
)
res = Search(temp);
}
예 WebProtege에서 오는 :....
<!-- http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi -->
<owl:Class rdf:about="http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi">
<rdfs:label xml:lang="en">AnimalType</rdfs:label>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
</owl:Class>
<!-- http://webprotege.stanford.edu/classes/BjSxQcpX7bOcVccVf5beN0 -->
<owl:Class rdf:about="http://webprotege.stanford.edu/classes/BjSxQcpX7bOcVccVf5beN0">
<rdfs:label xml:lang="en">Omnivore</rdfs:label>
<rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi"/>
</owl:Class>
<!-- http://webprotege.stanford.edu/classes/CKjBW7KqdcJPRpBtk2T6WE -->
<owl:Class rdf:about="http://webprotege.stanford.edu/classes/CKjBW7KqdcJPRpBtk2T6WE">
<rdfs:label xml:lang="en">Herbivore</rdfs:label>
<rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/BfJkwFDiEj5mduXojVHyKi"/>
</owl:Class>
<!-- http://webprotege.stanford.edu/classes/COt181AeQ0WewmOoZ0NYYF -->
<owl:Class rdf:about="http://webprotege.stanford.edu/classes/COt181AeQ0WewmOoZ0NYYF">
<rdfs:label xml:lang="en">Fish</rdfs:label>
<rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/DfGxuPUoLBiOvyBKpUJWvr"/>
</owl:Class>
<!-- http://webprotege.stanford.edu/classes/CPp9DIflV676wmq3onRsJa -->
<owl:Class rdf:about="http://webprotege.stanford.edu/classes/CPp9DIflV676wmq3onRsJa">
<rdfs:label xml:lang="en">Land</rdfs:label>
<rdfs:subClassOf rdf:resource="http://webprotege.stanford.edu/classes/7V0PYXjh6vM9AjTzh9DPwC"/>
</owl:Class>
<!-- http://webprotege.stanford.edu/classes/DfGxuPUoLBiOvyBKpUJWvr -->
<owl:Class rdf:about="http://webprotege.stanford.edu/classes/DfGxuPUoLBiOvyBKpUJWvr">
<rdfs:label xml:lang="en">Animal</rdfs:label>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
</owl:Class>
WebProtege가 사용자가 작성한 클래스 W 개인의 URI를 지정할 수 없도록 올바르게 이해합니까? 업데이트 : 방금 WebProtege와 함께 해보니 그런 식으로 보입니다. 이것은 나에게 매우 놀라운 일이다. URI를 지정할 수없는 OWL 도구는별로 유용하지 않습니다. 우리가 여기서 뭔가를 놓치기를 바랍니다. –
@ Joshua, 네, 맞습니다. 우리는 전체 URI를 얻을 수 없습니다. –