Search Mailing List Archives


Limit search to: Subject & Body Subject Author
Sort by: Reverse Sort
Limit to: All This Week Last Week This Month Last Month
Select Date Range     through    

[protege-discussion] a simple questions about owl programming

Timothy Redmond tredmond at stanford.edu
Tue Nov 23 09:28:15 PST 2010


Here the problem is that you are using an invalid uri that gets passed 
into createJenaOWLModelFromURI.  I was able to replicate your exception 
with the following code:

>         String uri = "c://foo/locationpath";
>         OWLModel owlModel = ProtegeOWL.createJenaOWLModelFromURI(uri);

The error is reported as

>
> Caused by: java.net.MalformedURLException: unknown protocol: c

This error says the "c" in "c:" is not recognized as a protocol (as say 
"http" would be).

-Timothy




On 11/21/2010 06:58 PM, tingyu li wrote:
> guys, I have tried a lot of methods to figure out the problems, but it 
> still doesn't work, I'm pretty sure that this owl file have some 
> differences, because I have read them through a lot of codes. and I 
> also don't know what change I made on it. has anyone meet the same 
> problem?
>
> 2010/11/20 tingyu li <li.hh190 at gmail.com <mailto:li.hh190 at gmail.com>>
>
>     hi Timothy,
>
>     I change an other owl files to load as the same way as son, but It
>     failed, It must be caused  by the owl file error, which I can't
>     figure out.
>     so I use the Progtege api to load the same file, the code:
>
>         String uri = "locationpath";
>                 OWLModel owlModel =
>         ProtegeOWL.createJenaOWLModelFromURI(uri);
>
>                 Collection classes =
>         owlModel.getUserDefinedOWLNamedClasses();
>
>                 for (Iterator it = classes.iterator(); it.hasNext();) {
>                     OWLNamedClass cls = (OWLNamedClass) it.next();
>                     Collection instances = cls.getInstances(false);
>                     System.out.println("Class " + cls.getBrowserText()
>         + " (" + instances.size() + ")");
>                     for (Iterator jt = instances.iterator();
>         jt.hasNext();) {
>                         OWLIndividual individual = (OWLIndividual)
>         jt.next();
>
>                         System.out.println(" - " +
>         individual.getBrowserText());
>                     }
>                 }
>
>      it still failed, and the error message, which is much similar
>     with the error Propervalue class made:
>
>         Protege 3.4.4 Build 579, JVM 1.6.0_18-b07, memory=259M,
>         Windows 7, encoding=UTF-8, language=zh, country=CN
>         WARNING: Plugins directory not found:
>         D:\workspace\lastprotege\plugins --
>         PluginUtilities.findPluginsDirectory()
>         WARNING: [Local Folder Repository] The specified file must be
>         a directory.
>         (D:\workspace\lastprotege\plugins\edu.stanford.smi.protegex.owl)
>         -- LocalFolderRepository.update()
>         SEVERE: Error at loading file
>         C://Users//LiTingyu//ontologies//resultcollection.owl -- null
>             at
>         edu.stanford.smi.protegex.owl.jena.parser.ProtegeOWLParser.run(ProtegeOWLParser.java:174)
>             at
>         edu.stanford.smi.protegex.owl.jena.JenaKnowledgeBaseFactory.loadKnowledgeBase(JenaKnowledgeBaseFactory.java:204)
>             at
>         edu.stanford.smi.protege.model.Project.loadDomainKB(Project.java:1369)
>             at
>         edu.stanford.smi.protege.model.Project.createDomainKnowledgeBase(Project.java:479)
>             at
>         edu.stanford.smi.protegex.owl.jena.creator.OwlProjectFromUriCreator.create(OwlProjectFromUriCreator.java:62)
>             at
>         edu.stanford.smi.protegex.owl.ProtegeOWL.createJenaOWLModelFromURI(ProtegeOWL.java:84)
>             at
>         com.demo.application.classAndInstanceScanning.main(classAndInstanceScanning.java:22)
>         Caused by: java.net.MalformedURLException: unknown protocol: c
>             at java.net.URL.<init>(Unknown Source)
>             at java.net.URL.<init>(Unknown Source)
>             at java.net.URL.<init>(Unknown Source)
>             at java.net.URI.toURL(Unknown Source)
>             at
>         edu.stanford.smi.protegex.owl.jena.parser.ProtegeOWLParser.run(ProtegeOWLParser.java:172)
>             ... 6 more
>
>         WARNING: Error found
>         edu.stanford.smi.protege.util.MessageError at 175d6ab --
>         ProtegeOWL.handleErrors()
>         WARNING: Error found
>         edu.stanford.smi.protege.util.MessageError at 160a26f --
>         ProtegeOWL.handleErrors()
>         Exception in thread "main" java.lang.NullPointerException
>             at
>         com.demo.application.classAndInstanceScanning.main(classAndInstanceScanning.java:38)
>
>
>
>     2010/11/19 Timothy Redmond <tredmond at stanford.edu
>     <mailto:tredmond at stanford.edu>>
>
>         On 11/18/2010 08:53 AM, tingyu li wrote:
>>         Hi Timothy,
>>         it's really very in detail, and works. thank you very much.
>>         And another problem is how to scan the all properties that
>>         the individual has? I want get these properties and values as
>>         a pair...
>
>         In the Protege 3 OWL api you use getPossibleRDFProperties.  In
>         the Manchester OWL api, OWLIndividual has a method called
>         getObjectPropertyValues.
>
>         -Timothy
>
>
>
>>
>>         2010/11/19 Timothy Redmond <tredmond at stanford.edu
>>         <mailto:tredmond at stanford.edu>>
>>
>>
>>             The code you had essentially works except that the line
>>
>>
>>>                          OWLObjectProperty individual = (OWLObjectProperty) jt.next();
>>
>>             is unlikely to succeed.  You would expect the next value
>>             to be an OWLIndividual (or a literal) not an object
>>             property.
>>
>>
>>>             /WARNING: Invalid frame type:
>>>             DefaultOWLIndividual(http://www.semanticweb.org/ontologies/2010/0/family.owl#Jim
>>>             of
>>>             [DefaultOWLNamedClass(http://www.w3.org/2002/07/owl#Thing),
>>>             DefaultOWLNamedClass(http://www.semanticweb.org/ontologies/2010/0/family.owl#male_family_member),
>>>             DefaultRDFSNamedClass(http://www.w3.org/2002/07/owl#NamedIndividual)
>>>             <http://www.w3.org/2002/07/owl#NamedIndividual%29>]) --
>>>             AbstractRedirectingDispatch.getDirectOwnSlotValues()
>>>             Exception in thread "main"
>>>             java.lang.IllegalArgumentException: null slot/
>>
>>             The first warning is weird but the exception means what
>>             it says.  Your owlModel does not have a hasSon object
>>             property in it so objectProp is null.
>>
>>
>>>             and I have take a look at owlapi, it's really more
>>>             direct to handle. but after I checked these code sample
>>>             on the website, I found that these codes only do some
>>>             actions about class. but my target is individual.
>>
>>             The "Classes and instances" example from [1] has
>>             individuals.  To write your code in the owl api you
>>             simply put:
>>
>>                  OWLNamedIndividual jim = factory.getOWLNamedIndividual(":jim", prefixManager);
>>                  OWLObjectProperty hasSon = factory.getOWLObjectProperty(":hasSon", prefixManager);
>>
>>                  for (OWLIndividual son : jim.getObjectPropertyValues(hasSon, ontology)) {
>>                      System.out.println(" - " + son);
>>                  }
>>
>>
>>             -Timothy
>>
>>
>>             [1]http://owlapi.sourceforge.net/documentation.html
>>
>>
>>             On 11/18/2010 06:55 AM, tingyu li wrote:
>>>             thanks for you guys response. and I have take a look at
>>>             owlapi, it's really more direct to handle. but after I
>>>             checked these code sample on the website, I found that
>>>             these codes only do some actions about class. but my
>>>             target is individual. how to get specific individual's
>>>             object property assertions is my purpose.
>>>             And at the same time, I find a simple way that maybe can
>>>             get this, the code is :
>>>
>>>                         OWLIndividual ind =
>>>                 owlModel.getOWLIndividual("Jim");
>>>                         OWLObjectProperty objectProp =
>>>                 owlModel.getOWLObjectProperty("hasSon");
>>>                         Collection values =
>>>                 ind.getPropertyValues(objectProp);
>>>                         for (Iterator jt = values.iterator();
>>>                 jt.hasNext();) {
>>>                             OWLObjectProperty individual =
>>>                 (OWLObjectProperty) jt.next();
>>>                             System.out.println(" - " +
>>>                 individual.getBrowserText());
>>>                         }
>>>
>>>             but error message returned said:
>>>             /WARNING: Invalid frame type:
>>>             DefaultOWLIndividual(http://www.semanticweb.org/ontologies/2010/0/family.owl#Jim
>>>             of
>>>             [DefaultOWLNamedClass(http://www.w3.org/2002/07/owl#Thing),
>>>             DefaultOWLNamedClass(http://www.semanticweb.org/ontologies/2010/0/family.owl#male_family_member),
>>>             DefaultRDFSNamedClass(http://www.w3.org/2002/07/owl#NamedIndividual)
>>>             <http://www.w3.org/2002/07/owl#NamedIndividual%29>]) --
>>>             AbstractRedirectingDispatch.getDirectOwnSlotValues()
>>>             Exception in thread "main"
>>>             java.lang.IllegalArgumentException: null slot/
>>>             it seems that this code just can handle the old version
>>>             proj, so is there any replacement of 4.0 for the same
>>>             target?
>>>
>>>             In the other hand,  as thomas mentioned,
>>>
>>>                 All of the assertion information would be retrieved
>>>                 in the form of different kinds of axioms that you
>>>                 would get for a particular individual (like Jim) by
>>>                 calling the method with signature:
>>>
>>>                 OWLOntology.getAxioms(
>>>
>>>                     OWLIndividual)
>>>
>>>                     and then filtering the results in to different
>>>                     classes of axiom such as
>>>
>>>                     OWLPropertyAssertionAxiom which supports
>>>                     getProperty() and getObject() to tell you which
>>>                     property and value it has.
>>>
>>>                     The usages would seem to be returned by
>>>
>>>                     OWLOntology.getReferencingAxioms(OWLEntity)
>>>
>>>             I will appreciate if you can give me code samples about
>>>             how to drive them.
>>>
>>>             thx a lot!
>>>
>>>             2010/11/18 Thomas Russ <tar at isi.edu <mailto:tar at isi.edu>>
>>>
>>>
>>>                 On Nov 17, 2010, at 7:20 AM, tingyu li wrote:
>>>
>>>                     hi Thomas, thanks for your response. but I still
>>>                     very confused by these methods...and I have read
>>>                     all the samples posted on the website, but I
>>>                     don't find any solutions for my problems, a very
>>>                     similar question is about query all resources
>>>                     that have a certain property value. the code on
>>>                     website is like this:
>>>                     RDFProperty subClassOfProperty =
>>>                     owlModel.getRDFProperty(RDFSNames.Slot.SUB_CLASS_OF);
>>>
>>>                     OWLNamedClass owlThingClass =
>>>                     owlModel.getOWLThingClass();
>>>                     Collection results =
>>>                     owlModel.getRDFResourcesWithPropertyValue(subClassOfProperty,
>>>                     owlThingClass);
>>>                     System.out.println("Subclasses of owl:Thing:");
>>>
>>>                     for (Iterator it = results.iterator();
>>>                     it.hasNext();) {
>>>                        RDFResource resource = (RDFResource) it.next();
>>>                        System.out.println(" - " +
>>>                     resource.getBrowserText());
>>>                     }
>>>                     but, actually, there are no slot on the new
>>>                     version owl files. and I think RDFProperty is
>>>                     not very fit for my file. by the way, I use
>>>                     protege 4.0 to develop a owl file and save it as
>>>                     format: RDF/XML. the file  is like this:
>>>
>>>
>>>                 You have to look at the class hierarchy in the Java
>>>                 code.
>>>                 OWLObjectProperty and OWLIndividual are all
>>>                 subclasses of RDFPropery and RDFResource, so those
>>>                 methods will be applicable.
>>>
>>>                 But if you are going to be using Protege 4, then you
>>>                 should be using the OWLAPI to work with the ontology
>>>                 rather than the Protege-OWL API.  That is the
>>>                 underlying code that the Protege 4 code uses.  
>>>                 OWLAPIv3 is used in Protege 4.1
>>>
>>>                 So the place to start for OWLAPI programming are the
>>>                 following documents:
>>>
>>>                 http://owlapi.sourceforge.net/documentation.html
>>>
>>>                 All of the assertion information would be retrieved
>>>                 in the form of different kinds of axioms that you
>>>                 would get for a particular individual (like Jim) by
>>>                 calling the method with signature:
>>>
>>>                   OWLOntology.getAxioms(OWLIndividual)
>>>
>>>                 and then filtering the results in to different
>>>                 classes of axiom such as
>>>
>>>                   OWLPropertyAssertionAxiom which supports
>>>                 getProperty() and getObject() to tell you which
>>>                 property and value it has.
>>>
>>>                 The usages would seem to be returned by
>>>
>>>                   OWLOntology.getReferencingAxioms(OWLEntity)
>>>
>>>
>>>
>>>
>>>                     <owl:ObjectProperty
>>>                     rdf:about="http://www.semanticweb.org/ontologies/2010/0/family.owl#isUncleOf">
>>>                     <rdfs:range
>>>                     rdf:resource="http://www.semanticweb.org/ontologies/2010/0/family.owl#family_member"/>
>>>                     <rdfs:domain
>>>                     rdf:resource="http://www.semanticweb.org/ontologies/2010/0/family.owl#male_family_member"/>
>>>                     </owl:ObjectProperty>
>>>                     I want get the similar result as the probem I
>>>                     described above. in other words, if I click Jim
>>>                     as the picture, I can get the result as the rigt
>>>                     part of the picture displayed, Usage and
>>>                     Property assertions:Jim
>>>
>>>                     thanks.
>>>
>>>
>>>                 _______________________________________________
>>>                 protege-discussion mailing list
>>>                 protege-discussion at lists.stanford.edu
>>>                 <mailto:protege-discussion at lists.stanford.edu>
>>>                 https://mailman.stanford.edu/mailman/listinfo/protege-discussion
>>>
>>>                 Instructions for unsubscribing:
>>>                 http://protege.stanford.edu/doc/faq.html#01a.03
>>>
>>>
>>>
>>>
>>>             -- 
>>>             Li
>>>
>>>
>>>             _______________________________________________
>>>             protege-discussion mailing list
>>>             protege-discussion at lists.stanford.edu  <mailto:protege-discussion at lists.stanford.edu>
>>>             https://mailman.stanford.edu/mailman/listinfo/protege-discussion
>>>
>>>             Instructions for unsubscribing:http://protege.stanford.edu/doc/faq.html#01a.03
>>
>>
>>             _______________________________________________
>>             protege-discussion mailing list
>>             protege-discussion at lists.stanford.edu
>>             <mailto:protege-discussion at lists.stanford.edu>
>>             https://mailman.stanford.edu/mailman/listinfo/protege-discussion
>>
>>             Instructions for unsubscribing:
>>             http://protege.stanford.edu/doc/faq.html#01a.03
>>
>>
>>
>>
>>         -- 
>>         Li Tingyu
>>         ==========================================================
>>         Mobile (China): +(86) 136 6173 2368
>>         Computer Science Department Shanghai JiaoTong University
>>         Address: No. 800 Dongchuan Road, Shanghai China, 200240
>>         ==========================================================
>>
>>
>>         _______________________________________________
>>         protege-discussion mailing list
>>         protege-discussion at lists.stanford.edu  <mailto:protege-discussion at lists.stanford.edu>
>>         https://mailman.stanford.edu/mailman/listinfo/protege-discussion
>>
>>         Instructions for unsubscribing:http://protege.stanford.edu/doc/faq.html#01a.03
>
>
>         _______________________________________________
>         protege-discussion mailing list
>         protege-discussion at lists.stanford.edu
>         <mailto:protege-discussion at lists.stanford.edu>
>         https://mailman.stanford.edu/mailman/listinfo/protege-discussion
>
>         Instructions for unsubscribing:
>         http://protege.stanford.edu/doc/faq.html#01a.03
>
>
>
>
>     -- 
>     Li
>
>
>
>
> -- 
> Li Tingyu
> ==========================================================
> Mobile (China): +(86) 136 6173 2368
> Computer Science Department Shanghai JiaoTong University
> Address: No. 800 Dongchuan Road, Shanghai China, 200240
> ==========================================================
>
>
> _______________________________________________
> protege-discussion mailing list
> protege-discussion at lists.stanford.edu
> https://mailman.stanford.edu/mailman/listinfo/protege-discussion
>
> Instructions for unsubscribing: http://protege.stanford.edu/doc/faq.html#01a.03

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.stanford.edu/pipermail/protege-discussion/attachments/20101123/35ec6d97/attachment.html>


More information about the protege-discussion mailing list