如何用Jena添加对象属性?特殊格式

时间:2013-11-23 22:41:22

标签: java rdf jena owl object-property

您好我正在尝试在这两个人之间添加一个对象属性。我在代码中也有对象属性,个人在本体中。只需要使用属性连接它们。个人在代码中看起来像这样,我的问题是我从来没有使用过这个“描述”标签的本体。

<!-- http://vivo.iu.edu/individual/n6356 -->

<owl:Thing rdf:about="http://vivo.iu.edu/individual/n6356">
    <rdf:type rdf:resource="&bibo;Article"/>
    <rdf:type rdf:resource="&bibo;Document"/>
    <rdf:type rdf:resource="&vivo;ConferencePaper"/>
    <rdf:type rdf:resource="&vivo;InformationResource"/>
    <rdf:type rdf:resource="&owl;NamedIndividual"/>
    <rdfs:label xml:lang="en-us">Indiana University Digital Music Library Project</rdfs:label>
    <vitro:modTime rdf:datatype="&xsd;dateTime">2010-07-28T15:36:03</vitro:modTime>
    <vitro:moniker rdf:datatype="&xsd;string">conference paper</vitro:moniker>
    <bibo:doi rdf:datatype="&xsd;string">http://doi.acm.org/10.1145/379437.379774</bibo:doi>
    <title>Indiana University Digital Music Library Project</title>
    <dateTimeValue rdf:resource="http://vivo.iu.edu/individual/n4086167"/>
    <bibo:presentedAt rdf:resource="http://vivo.iu.edu/individual/n5092"/>
    <informationResourceInAuthorship rdf:resource="http://vivo.iu.edu/individual/n6257"/>
    <informationResourceInAuthorship rdf:resource="http://vivo.iu.edu/individual/n6300"/>
    <vitro:mostSpecificType rdf:resource="&vivo;ConferencePaper"/>
</owl:Thing>

<!-- http://vivo.iu.edu/individual/n6399 -->

<owl:Thing rdf:about="http://vivo.iu.edu/individual/n6399">
    <rdf:type rdf:resource="&bibo;Article"/>
    <rdf:type rdf:resource="&bibo;Document"/>
    <rdf:type rdf:resource="&vivo;ConferencePaper"/>
    <rdf:type rdf:resource="&vivo;InformationResource"/>
    <rdf:type rdf:resource="&owl;NamedIndividual"/>
    <rdfs:label xml:lang="en-us">Assessing Future Ecosystem Services: a Case Study of the Northern Highlands Lake District  Wisconsin</rdfs:label>
    <vitro:modTime rdf:datatype="&xsd;dateTime">2010-07-28T15:36:03</vitro:modTime>
    <vitro:moniker rdf:datatype="&xsd;string">conference paper</vitro:moniker>
    <bibo:doi rdf:datatype="&xsd;string">http://doi.acm.org/10.1145/379437.99999</bibo:doi>
    <title>Assessing Future Ecosystem Services: a Case Study of the Northern Highlands Lake District  Wisconsin</title>
    <dateTimeValue rdf:resource="http://vivo.iu.edu/individual/n111111"/>
    <bibo:presentedAt rdf:resource="http://vivo.iu.edu/individual/n2222"/>
    <informationResourceInAuthorship rdf:resource="http://vivo.iu.edu/individual/n3333"/>
    <informationResourceInAuthorship rdf:resource="http://vivo.iu.edu/individual/n4444"/>
    <vitro:mostSpecificType rdf:resource="&vivo;ConferencePaper"/>
</owl:Thing>

我已尝试使用此代码,但getter为我提供了null值。获取两个人的名字,获取对象属性并将其添加到模型中。

Individual doc = model.getIndividual("n6356");
Individual ref = model.getIndividual("n6399");
ObjectProperty cites = model.getObjectProperty("http://purl.org/ontology/bibo/cites");
model.add(doc,cites,ref);

2 个答案:

答案 0 :(得分:2)

RDF中的资源是空节点或URI节点。您的个人恰好是IRI节点,因此您需要使用以下方式检索它们:

Individual doc = model.getIndividual("http://vivo.iu.edu/individual/n6356");
Individual ref = model.getIndividual("http://vivo.iu.edu/individual/n6399");

如果你要做很多这样的事情,可能有意义:

final String NS = "http://vivo.iu.edu/individual/";
Individual doc = model.getIndividual(NS+"n6356");
Individual ref = model.getIndividual(NS+"n6399");

答案 1 :(得分:1)

如果您不将模型保存在内存中,请不要忘记将其写出来。

final String NS = "http://vivo.iu.edu/individual/";
Individual doc = model.getIndividual(NS+"n6356");
Individual ref = model.getIndividual(NS+"n6399");
ObjectProperty cites = model.getObjectProperty("http://purl.org/ontology/bibo/cites");
model.add(doc,cites,ref).write(new FileOutputStream(new File("rdf/myRDFFile.owl"));