首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DotNetRDF:如何强制CompressingTurtleWriter使用QNames而不是完整的IRI

DotNetRDF:如何强制CompressingTurtleWriter使用QNames而不是完整的IRI
EN

Stack Overflow用户
提问于 2020-11-25 17:42:25
回答 1查看 46关注 0票数 2

我使用DotNetRDF框架(v2.6)将数据库内容导出到turtle文件中。我使用以下命令将所有QNames添加到图形中:

代码语言:javascript
复制
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写入海龟文件:

代码语言:javascript
复制
CompressingTurtleWriter turtlewriter = new CompressingTurtleWriter();
turtlewriter.Save(exportGraph, CreateFileName());

我希望所有输出的格式是这样的:

代码语言:javascript
复制
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.

但结果是这样的:

代码语言:javascript
复制
<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()结合使用。

有没有人有类似的问题,我如何才能改变这个问题?谢谢Katie

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-25 19:41:15

原始的海龟规范不允许将数字作为紧凑的IRI的本地部分(:之后的部分)的第一个字符,但是W3C版本的规范允许这样做。因此,将语法模式设置为TurtleSyntax.W3C应该会产生预期的输出。

然而,有一个例外。如果您的图具有高比例的唯一主题节点与三元组(如果(#唯一主题)/(#三元组)> 0.75),那么编写器将进入“高速模式”,这将禁用所有压缩。可以通过将编写器上的HighSpeedModePermitted属性设置为false来禁用此行为。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65002046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档