View Javadoc
1   /*
2    * The baseCode project
3    * 
4    * Copyright (c) 2007-2019 University of British Columbia
5    * 
6    * Licensed under the Apache License, Version 2.0 (the "License");
7    * you may not use this file except in compliance with the License.
8    * You may obtain a copy of the License at
9    *
10   *       http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing, software
13   * distributed under the License is distributed on an "AS IS" BASIS,
14   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   * See the License for the specific language governing permissions and
16   * limitations under the License.
17   *
18   */
19  package ubic.basecode.ontology.model;
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.impl.OntClassImpl;
26  import com.hp.hpl.jena.rdf.model.Resource;
27  
28  /**
29   * @author pavlidis
30   */
31  public class OntologyIndividualImpl extends AbstractOntologyResource implements OntologyIndividual {
32  
33      private static final long serialVersionUID = -6164561945940667693L;
34  
35      private Individual ind;
36      private String uri;
37  
38      public OntologyIndividualImpl( Individual ind ) {
39          this.ind = ind;
40          this.uri = ind.getURI();
41      }
42  
43      @Override
44      public OntologyTerm getInstanceOf() {
45          Resource type = ind.getRDFType();
46  
47          OntClass cl = null;
48          EnhGraph g = new EnhGraph( type.getModel().getGraph(), new GraphPersonality() );
49          if ( OntClassImpl.factory.canWrap( type.asNode(), g ) ) {
50              cl = new OntClassImpl( type.asNode(), g );
51          } else {
52              throw new IllegalStateException( "sorry, can't handle that of instance" );
53          }
54  
55          return new OntologyTermImpl( cl );
56      }
57  
58      @Override
59      public String getLabel() {
60          return this.toString();
61      }
62  
63      @Override
64      public String getUri() {
65          return uri;
66      }
67  
68      @Override
69      public String toString() {
70          String label = ind.getLabel( "en" ); // we specify English - some ontologies have other languages as well 
71          if ( label == null ) label = ind.getLabel( null );
72          if ( label == null ) label = ind.getLocalName();
73          if ( label == null ) label = ind.getURI();
74          return label;
75      }
76  }