- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在我的 RDF 本体的 XML 序列化中使用 owl:
前缀(使用 rdflib 版本 4.1.1);不幸的是,我仍然将序列化为 rdf:Description
标签。我已经在 RDFLib: Namespace prefixes in XML serialization 查看了关于将命名空间绑定(bind)到图形的答案。但这似乎只有在使用 ns
格式而不是 xml
格式进行序列化时才有效。
让我们更具体一点。我正在尝试在 XML 中获取以下本体(取自 Introducing RDFS and OWL),如下所示:
<!-- OWL Class Definition - Plant Type -->
<owl:Class rdf:about="http://www.linkeddatatools.com/plants#planttype">
<rdfs:label>The plant type</rdfs:label>
<rdfs:comment>The class of all plant types.</rdfs:comment>
</owl:Class>
这是使用 rdflib
构建这样一个东西的 python 代码:
from rdflib.namespace import OWL, RDF, RDFS
from rdflib import Graph, Literal, Namespace, URIRef
# Construct the linked data tools namespace
LDT = Namespace("http://www.linkeddatatools.com/plants#")
# Create the graph
graph = Graph()
# Create the node to add to the Graph
Plant = URIRef(LDT["planttype"])
# Add the OWL data to the graph
graph.add((Plant, RDF.type, OWL.Class))
graph.add((Plant, RDFS.subClassOf, OWL.Thing))
graph.add((Plant, RDFS.label, Literal("The plant type")))
graph.add((Plant, RDFS.comment, Literal("The class of all plant types")))
# Bind the OWL and LDT name spaces
graph.bind("owl", OWL)
graph.bind("ldt", LDT)
print graph.serialize(format='xml')
遗憾的是,即使使用那些绑定(bind)语句,也会打印以下 XML:
<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>
<rdf:Description rdf:about="http://www.linkeddatatools.com/plants#planttype">
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:label>The plant type</rdfs:label>
<rdfs:comment>The class of all plant types</rdfs:comment>
<rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
</rdf:Description>
</rdf:RDF>
诚然,这仍然是一个 Ontology,并且可用 - 但由于我们有各种编辑器,因此使用 owl
前缀的更紧凑和可读性更高的第一个版本会更可取。是否可以在 rdflib
中执行此操作而不覆盖序列化方法?
更新
作为对评论的回应,我将重新表述我的“奖励问题”,作为对我的问题的简单澄清。
不是奖励问题 这里的主题涉及 OWL 命名空间格式化本体的构造,它是更冗长的 RDF/XML 规范的简写。尽管这里的问题比简单声明 namespace 前缀仅用于类或属性的速记要大,但在代码中必须处理许多速记符号;例如 owl:Ontology
描述应该添加到这个符号中作为良好的形式。我希望 rdflib 支持完整的符号规范——而不是必须推出我自己的序列化。
最佳答案
您需要使用pretty-xml
格式,而不是使用xml
格式。它在文档中列出,Plugin serializers .这将为您提供所需的输出类型。也就是说,您将使用类似以下的行来使用 PrettyXMLSerializer :
print graph.serialize(format='pretty-xml')
为了解决“奖金问题”,您可以添加如下一行来创建本体标题,然后使用 pretty-xml
序列化将为您提供以下输出。
graph.add((URIRef('https://stackoverflow.com/q/24017320/1281433/ontology.owl'), RDF.type, OWL.Ontology ))
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>
<owl:Ontology rdf:about="https://stackoverflow.com/q/24017320/1281433/ontology.owl"/>
<owl:Class rdf:about="http://www.linkeddatatools.com/plants#planttype">
<rdfs:comment>The class of all plant types</rdfs:comment>
<rdfs:subClassOf rdf:resource="http://www.w3.org/2002/07/owl#Thing"/>
<rdfs:label>The plant type</rdfs:label>
</owl:Class>
</rdf:RDF>
添加 x rdf:type owl:Ontology
三元组并不是一种非常以 OWL 为中心的声明本体的方式。听起来您正在寻找更像 Jena 的 OntModel 接口(interface)(它只是 Jena 的以 RDF 为中心的模型的便利层)或 OWLAPI 的东西,但对于 RDFLib。我不知道这样的事情是否存在(我不是 RDFlib 用户),但你可以看看:
关于python - 使用猫头鹰 :Class prefix with rdflib and xml serialization,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24017320/
首先是 fiddle :http://jsfiddle.net/krish7878/m2gnrx2v/1/ 有两个带有自定义控件的 owl slider 实例,每个实例都由其自己的代码生成,问题是,当
我一直在谷歌上寻找在单个页面上使用多个轮播的方法,但没有找到任何适合我的解决方案。你们中的任何人都可以帮忙吗? 这是代码: HTML
我有以下调用 Owl Carousel 。我已尽我所能并在整个网络上进行了大量搜索,但找不到解决方法。我已经尝试更新最新的 css/js 这对我没有帮助。请同时检查屏幕截图。在他们的官方网站上也随机转
我已经被困两天了,现在试图理解为什么以下场景不起作用: 截图在这里:http://dl.dropbox.com/u/4677548/screenshots.html 我有一个 VegetarianFo
我在我的页面中使用猫头鹰 slider 。我总共有 4 个猫头鹰 slider ,它们在页面上动态显示。问题是,如果我单击接下来的特定 slider ,那么它也会滑动其他 3 个 slider blo
如果你查看DBPedia的电影信息里面的信息,你会经常看到电影的缩略图属性。 http://dbpedia.org/page/The_Matrix 它表示有一个缩略图 (dbpedia-owl:thu
我正在尝试使用 GraphDB-SE 三元组存储爱因斯坦谜语并使用规则集来推断答案。 GraphDB 内置了对 OWL2-RL 和 OWL2-QL 的支持。 根据 w3.org OWL 2 RL su
在 OWL 中是否可以对语言属性设置最大基数限制,这将限制每种语言的基数。 例如,每种语言我最多只需要一个dct:title。所以, :demo dct:title "Demo"@en, "Demo"
我对使用域、范围和限制来定义本体的正确方法有疑问。如果我想代表“学生必须只有一个身份证明”,我认为我可以做以下其中一项: 定义属性的域和范围(例如, :hasId rdfs:domain :Stude
在 OWL 中是否可以对语言属性设置最大基数限制,这将限制每种语言的基数。 例如,每种语言我最多只需要一个dct:title。所以, :demo dct:title "Demo"@en, "Demo"
我的猫头鹰类与我的狐狸类非常相同,它实际上是逐字复制的,除了新的出生概率和我添加到猫头鹰的独特的东西,但我的问题是我有一个随机生成器类来生成用于出生的随机数概率等。这是变量 //用于控制繁殖的共享随机
你好, 我正在使用 Java OWL API(版本 5)并想检查一个类是否是另一个类的子类。现在我正在通过获取预期子类的所有父类(super class)并检查此列表是否包含预期父类(super cl
$(document).ready(function(){ $('.owl-carousel').owlCarousel({ loop:true, margin:10, n
我是 protege 的新手,我必须用曼彻斯特 OWL 语法建模一个与 soduku 具有相似属性的网格。 我一直在搜索,但我似乎无法找到一种方法来制作一个公理,即“每列必须有 4 个单元格,并且必须
这是builtin_owl2-rl.pie第361行 // Part 1 of cls_oo Id: cls_oo_1 c x ------------------
有人告诉我为什么this有效而不是this .我是否遗漏了一些重要的东西? 我只是将img src改成了不同的url 最佳答案 您只需要稍微整理一下 HTML:
我有以下类:B、C 和 D 类是 A 的子类。 A ----+----------> B | +----------> C | +---------->
我是一名优秀的程序员,十分优秀!