鉴于这个(非常人为的)代码片段:
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 one和this one以及this one),但它们似乎指的是人们提到他们自己的本体论。鉴于vcard
常量对uri
是正确的,为什么它在RDF表示中会发生变化?
答案 0 :(得分:0)
代码使用了SKOS的URI但未在模型上设置前缀。请参阅setNsPrefix
。
您可能希望使用漂亮的打印输出形式,默认只是基本的RDF / XML。在model.write
调用中设置语法名称(有关详细信息,请参阅javadoc)。