更正词汇表的名称空间

时间:2016-04-05 14:25:42

标签: jena

鉴于这个(非常人为的)代码片段:

ProcessStartInfo proc = new ProcessStartInfo();
proc.CreateNoWindow = false;
proc.UseShellExecute = false;
proc.FileName = @"C:\Program Files\<reviewToolName>\review.exe";
proc.WindowStyle = ProcessWindowStyle.Hidden;
proc.RedirectStandardOutput = true;
proc.Arguments = "--url <reviewTool-url> admin review-xml " + reviewno.ToString() + " > C:\\review.xml;
Process.Start(proc);

我们得到了

System.out.println(VCARD.uri);
System.out.println(SKOS.uri);

Resource johnSmith  = model.createResource("http://somewhere/js")
        .addProperty(VCARD.FN, "John Smith")
        .addProperty(SKOS.notation, "John Smith");

model.write(System.out);

鉴于Jena内部表示http://www.w3.org/2001/vcard-rdf/3.0# http://www.w3.org/2004/02/skos/core# <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:vcard="http://www.w3.org/2001/vcard-rdf/3.0#" xmlns:j.0="http://www.w3.org/2004/02/skos/core#"> <rdf:Description rdf:about="http://somewhere/js"> <j.0:notation>John Smith</j.0:notation> <vcard:FN>John Smith</vcard:FN> </rdf:RDF> ,为什么它仍然返回SKOS表示法(但不是j.0属性)?我已经阅读了类似的问题(例如this onethis one以及this one),但它们似乎指的是人们提到他们自己的本体论。鉴于vcard常量对uri是正确的,为什么它在RDF表示中会发生变化?

1 个答案:

答案 0 :(得分:0)

代码使用了SKOS的URI但未在模型上设置前缀。请参阅setNsPrefix

您可能希望使用漂亮的打印输出形式,默认只是基本的RDF / XML。在model.write调用中设置语法名称(有关详细信息,请参阅javadoc)。