在耶拿,有没有办法通过对象查询主题?
In Jena, is there a way query subject via object?
我有一个这样的海龟文件:
<http://rdf.freebase.com/ns/m.05h40wd> <http://rdf.freebase.com/key/wikipedia.en_id> "21537998" .
<http://rdf.freebase.com/ns/m.05h40xf> <http://rdf.freebase.com/key/wikipedia.en_id> "21557390" .
<http://rdf.freebase.com/ns/m.05h4251> <http://rdf.freebase.com/key/wikipedia.en_id> "21550418" .
<http://rdf.freebase.com/ns/m.05h4__1> <http://rdf.freebase.com/key/wikipedia.en_id> "21495513" .
我现在只有对象(id),但我想得到主题。有办法吗?这是我的代码。
public static void main(String[] args) throws FileNotFoundException {
Model model=ModelFactory.createDefaultModel();
model.read(new FileInputStream("RDFTest.ttl"),null,"TTL");
Resource topic = model.getResource("http://rdf.freebase.com/ns/" + "m.05h4251");
Property labelProperty = model.getProperty("http://rdf.freebase.com/key/wikipedia.en_id");
System.out.println(topic.getProperty(labelProperty));
}
结果是:
[http://rdf.freebase.com/ns/m.05h4251, http://rdf.freebase.com/key/wikipedia.en_id, "21550418"]
如果我反其道而行之,我将得到 null。
您可以使用 Model#listResourcesWithProperty(Property p, RDFNode o)。如果您不关心 属性 是什么,只需传递 null 作为 属性 作为通配符。这为您提供了一个关于主题的 ResIterator,因为可能有多个(就像对于给定主题的 属性 可能有多个对象一样;您使用的方法是 getProperty,只是 returns任意一个)。
我有一个这样的海龟文件:
<http://rdf.freebase.com/ns/m.05h40wd> <http://rdf.freebase.com/key/wikipedia.en_id> "21537998" .
<http://rdf.freebase.com/ns/m.05h40xf> <http://rdf.freebase.com/key/wikipedia.en_id> "21557390" .
<http://rdf.freebase.com/ns/m.05h4251> <http://rdf.freebase.com/key/wikipedia.en_id> "21550418" .
<http://rdf.freebase.com/ns/m.05h4__1> <http://rdf.freebase.com/key/wikipedia.en_id> "21495513" .
我现在只有对象(id),但我想得到主题。有办法吗?这是我的代码。
public static void main(String[] args) throws FileNotFoundException {
Model model=ModelFactory.createDefaultModel();
model.read(new FileInputStream("RDFTest.ttl"),null,"TTL");
Resource topic = model.getResource("http://rdf.freebase.com/ns/" + "m.05h4251");
Property labelProperty = model.getProperty("http://rdf.freebase.com/key/wikipedia.en_id");
System.out.println(topic.getProperty(labelProperty));
}
结果是:
[http://rdf.freebase.com/ns/m.05h4251, http://rdf.freebase.com/key/wikipedia.en_id, "21550418"]
如果我反其道而行之,我将得到 null。
您可以使用 Model#listResourcesWithProperty(Property p, RDFNode o)。如果您不关心 属性 是什么,只需传递 null 作为 属性 作为通配符。这为您提供了一个关于主题的 ResIterator,因为可能有多个(就像对于给定主题的 属性 可能有多个对象一样;您使用的方法是 getProperty,只是 returns任意一个)。