1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package ubic.basecode.ontology.jena;
20
21 import com.hp.hpl.jena.enhanced.EnhGraph;
22 import com.hp.hpl.jena.enhanced.GraphPersonality;
23 import com.hp.hpl.jena.ontology.Individual;
24 import com.hp.hpl.jena.ontology.OntClass;
25 import com.hp.hpl.jena.ontology.Restriction;
26 import com.hp.hpl.jena.ontology.impl.OntClassImpl;
27 import com.hp.hpl.jena.rdf.model.Resource;
28 import ubic.basecode.ontology.model.OntologyIndividual;
29 import ubic.basecode.ontology.model.OntologyTerm;
30
31 import java.util.Set;
32
33
34
35
36 class OntologyIndividualImpl extends AbstractOntologyResource implements OntologyIndividual {
37
38 private final Individual ind;
39 private final Set<Restriction> additionalRestrictions;
40
41 public OntologyIndividualImpl( Individual ind, Set<Restriction> additionalRestrictions ) {
42 super( ind );
43 this.ind = ind;
44 this.additionalRestrictions = additionalRestrictions;
45 }
46
47 public OntologyIndividualImpl( Individual ind, Set<Restriction> additionalRestrictions, double score ) {
48 super( ind, score );
49 this.ind = ind;
50 this.additionalRestrictions = additionalRestrictions;
51 }
52
53 @Override
54 public OntologyTerm getInstanceOf() {
55 Resource type = ind.getRDFType();
56
57 OntClass cl;
58 EnhGraph g = new EnhGraph( type.getModel().getGraph(), new GraphPersonality() );
59 if ( OntClassImpl.factory.canWrap( type.asNode(), g ) ) {
60 cl = new OntClassImpl( type.asNode(), g );
61 } else {
62 throw new IllegalStateException( "sorry, can't handle that of instance" );
63 }
64
65 return new OntologyTermImpl( cl, additionalRestrictions );
66 }
67 }