DotNetRDF:如何强制 CompressingTurtleWriter 使用 QNames 而不是完整的 IRI
DotNetRDF: how to force CompressingTurtleWriter to use QNames instead of full IRI
我正在使用 DotNetRDF Framework (v2.6) 将数据库内容导出到 turtle 文件中。我使用以下命令将所有 QName 添加到图中:
exportGraph.NamespaceMap.AddNamespace("medi", new Uri("http://sphn.ch/rdf/ontology/Swissmedic/"));
exportGraph.NamespaceMap.AddNamespace("sphn_gtin", new Uri("http://sphn.ch/rdf/ontology/GTIN/"));
exportGraph.NamespaceMap.AddNamespace("sphn_atc", new Uri("http://sphn.ch/rdf/ontology/ATC/"));
然后我使用以下方法将 exportGraph 写入 turtle 文件:
CompressingTurtleWriter turtlewriter = new CompressingTurtleWriter();
turtlewriter.Save(exportGraph, CreateFileName());
我希望所有输出的格式如下:
medi:11275028 medi:ATC sphn_atc:A01AD11;
medi:DateIntroduced "1982-03-15T00:00:00"^^xsd:dateTime;
medi:GTIN sphn_gtin:7680112750289;
medi:Label "Malveol, émuls, 100 ml"@fr,
"Malveol, Emuls, 100 ml"@de;
medi:PrescriptionCategory "D"^^xsd:string;
medi:Producer "Laboratoires Magistra SA"^^xsd:string;
medi:SwissmedicNumber "11275028"^^xsd:string;
medi:TherapyGroup "12.03.20."^^xsd:string;
a medi:Swissmedic.
但是结果是这样的:
<http://sphn.ch/rdf/ontology/Swissmedic/11275028> medi:ATC sphn_atc:A01AD11;
medi:DateIntroduced "1982-03-15T00:00:00"^^xsd:dateTime;
medi:GTIN <http://sphn.ch/rdf/ontology/GTIN/7680112750289>;
medi:Label "Malveol, émuls, 100 ml"@fr,
"Malveol, Emuls, 100 ml"@de;
medi:PrescriptionCategory "D"^^xsd:string;
medi:Producer "Laboratoires Magistra SA"^^xsd:string;
medi:SwissmedicNumber "11275028"^^xsd:string;
medi:TherapyGroup "12.03.20."^^xsd:string;
a medi:Swissmedic.
我希望使用 QName 和 GTIN 对象编写主题。在其他导出中,我发现使用前缀或完整 IRI 时它更加随机。
到目前为止,我正在研究在创建 CompressingTurtleWriter() 时可以设置哪些选项,但只有 CompressenLevel 和 TurtleSyntax 是原始的或 W3C 都不会改变输出中的任何内容。
另外,如果我设置 turtlewriter.PrettyMode = true 它不会改变输出中的任何内容。
最后有一个 TurtleFormatter,但我找不到如何将它与 CompressingTurtleWriter() 结合使用的方法。
有没有人遇到过类似的问题,我该如何更改?
谢谢凯蒂
最初的 Turtle 规范不允许数字作为紧凑 IRI 本地部分(:
之后的部分)的第一个字符,但规范的 W3C 版本允许这样做。因此,将语法模式设置为 TurtleSyntax.W3C
应该会产生您期望的输出。
不过有一个例外。如果您的图表中唯一主题节点与三元组的比率很高(如果(# unique subjects)/(#triples)> 0.75),那么编写器将进入“高速模式”,这将禁用所有压缩。可以通过将编写器上的 HighSpeedModePermitted
属性 设置为 false
.
来禁用此行为
我正在使用 DotNetRDF Framework (v2.6) 将数据库内容导出到 turtle 文件中。我使用以下命令将所有 QName 添加到图中:
exportGraph.NamespaceMap.AddNamespace("medi", new Uri("http://sphn.ch/rdf/ontology/Swissmedic/"));
exportGraph.NamespaceMap.AddNamespace("sphn_gtin", new Uri("http://sphn.ch/rdf/ontology/GTIN/"));
exportGraph.NamespaceMap.AddNamespace("sphn_atc", new Uri("http://sphn.ch/rdf/ontology/ATC/"));
然后我使用以下方法将 exportGraph 写入 turtle 文件:
CompressingTurtleWriter turtlewriter = new CompressingTurtleWriter();
turtlewriter.Save(exportGraph, CreateFileName());
我希望所有输出的格式如下:
medi:11275028 medi:ATC sphn_atc:A01AD11;
medi:DateIntroduced "1982-03-15T00:00:00"^^xsd:dateTime;
medi:GTIN sphn_gtin:7680112750289;
medi:Label "Malveol, émuls, 100 ml"@fr,
"Malveol, Emuls, 100 ml"@de;
medi:PrescriptionCategory "D"^^xsd:string;
medi:Producer "Laboratoires Magistra SA"^^xsd:string;
medi:SwissmedicNumber "11275028"^^xsd:string;
medi:TherapyGroup "12.03.20."^^xsd:string;
a medi:Swissmedic.
但是结果是这样的:
<http://sphn.ch/rdf/ontology/Swissmedic/11275028> medi:ATC sphn_atc:A01AD11;
medi:DateIntroduced "1982-03-15T00:00:00"^^xsd:dateTime;
medi:GTIN <http://sphn.ch/rdf/ontology/GTIN/7680112750289>;
medi:Label "Malveol, émuls, 100 ml"@fr,
"Malveol, Emuls, 100 ml"@de;
medi:PrescriptionCategory "D"^^xsd:string;
medi:Producer "Laboratoires Magistra SA"^^xsd:string;
medi:SwissmedicNumber "11275028"^^xsd:string;
medi:TherapyGroup "12.03.20."^^xsd:string;
a medi:Swissmedic.
我希望使用 QName 和 GTIN 对象编写主题。在其他导出中,我发现使用前缀或完整 IRI 时它更加随机。
到目前为止,我正在研究在创建 CompressingTurtleWriter() 时可以设置哪些选项,但只有 CompressenLevel 和 TurtleSyntax 是原始的或 W3C 都不会改变输出中的任何内容。 另外,如果我设置 turtlewriter.PrettyMode = true 它不会改变输出中的任何内容。 最后有一个 TurtleFormatter,但我找不到如何将它与 CompressingTurtleWriter() 结合使用的方法。
有没有人遇到过类似的问题,我该如何更改? 谢谢凯蒂
最初的 Turtle 规范不允许数字作为紧凑 IRI 本地部分(:
之后的部分)的第一个字符,但规范的 W3C 版本允许这样做。因此,将语法模式设置为 TurtleSyntax.W3C
应该会产生您期望的输出。
不过有一个例外。如果您的图表中唯一主题节点与三元组的比率很高(如果(# unique subjects)/(#triples)> 0.75),那么编写器将进入“高速模式”,这将禁用所有压缩。可以通过将编写器上的 HighSpeedModePermitted
属性 设置为 false
.