2013-04-04 2 views
0

я в настоящее время после Jena API логического вывода учебника:Основные RDFS логического вывода с API Jena

https://jena.apache.org/documentation/inference/

и в качестве упражнения, чтобы проверить мое понимание, я хотел бы переписать первый пример, который демонстрирует тривиальный RDFS рассуждения из программно построенной модели:

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)); 
    } 
} 

к чему-то делает то же самое, но с моделью чтения из этого Turtle файла вместо (который является моим собственным переводом выше, и, таким образом, может быть багги):

@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". 

с этим кодом:

public class Test2 { 
    static public void main(String...argv) { 
     String NS = "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)); 
    } 
} 

, который не кажется, правильный подход (я подозреваю, в частности, что мое извлечение q собственности как-то не так). Что я делаю не так?

ответ

1
String NS = "foo:"; 
m.createResource(NS + "x") 

создает URI, но версия Turtle имеет Foo: х = http://example.org/foo#x

увидеть различия печатая Типовом im.write(System.out, "TTL");

Изменение NS = "foo:" к NS = "http://example.org/foo#"

+0

Именно это, спасибо большое ! – cjauvin

 Смежные вопросы

  • Нет связанных вопросов^_^