It works, thanks for your help Dave!

On 5 April 2013 04:33, Dave Reynolds <[email protected]> wrote:
> Hi Christian,
>
>
> On 04/04/13 18:23, Christian Jauvin wrote:
>>
>> Hi,
>>
>> I'm currently following the Jena API inferencing tutorial:
>>
>> https://jena.apache.org/documentation/inference/
>>
>> and as an exercise to test my understanding, I'd like to rewrite the
>> first example, which demonstrates a trivial RDFS reasoning from a
>> programmatically built model:
>>
>> import com.hp.hpl.jena.rdf.model.*;
>> import com.hp.hpl.jena.vocabulary.*;
>>
>> public class Test1 {
>>      static public void main(String...argv) {
>>          String NS = "foo:";
>>          Model m = ModelFactory.createDefaultModel();
>>          Property p = m.createProperty(NS, "p");
>>          Property q = m.createProperty(NS, "q");
>>          m.add(p, RDFS.subPropertyOf, q);
>>          m.createResource(NS + "x").addProperty(p, "bar");
>>          InfModel im = ModelFactory.createRDFSModel(m);
>>          Resource x = im.getResource(NS + "x");
>>          // verify that property q of x is "bar" (which follows
>>          // from x having property p, and p being a subproperty of q)
>>          System.out.println("Statement: " + x.getProperty(q));
>>      }
>> }
>>
>> to something which does the same, but with the model read from this
>> Turtle file instead (which is my own translation of the above, and
>> thus might be buggy):
>>
>> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>.
>> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>.
>> @prefix foo: <http://example.org/foo#>.
>>
>> foo:p a rdf:Property.
>> foo:q a rdf:Property.
>> foo:p rdfs:subPropertyOf foo:q.
>> foo:x foo:p "bar".
>>
>> with this code:
>>
>> public class Test2 {
>>      static public void main(String...argv) {
>>          String NS = "foo:";
>
>
> You want to make that:
>           String NS = "http://example.org/foo#";;
>
>
>>          Model m = ModelFactory.createDefaultModel();
>>          m.read("foo.ttl");
>>          InfModel im = ModelFactory.createRDFSModel(m);
>>          Property q = im.getProperty(NS + "q");
>>          Resource x = im.getResource(NS + "x");
>>          System.out.println("Statement: " + x.getProperty(q));
>>      }
>> }
>>
>> which doesn't seem to be the right approach (I suspect in particular
>> that my extraction of the qproperty is somehow not right). What am I
>> doing wrong?
>
>
> The calls like getProperty need a full URI, not a prefixed name. The easy
> fix is what I suggested above.
>
> Alternatively you can use the prefixes read in from your file to reconstruct
> the URIs. E.g.
>
>     Property q = im.getProperty( m.expandPrefix("foo:q") )
>
> Dave
>
>

Reply via email to