问题标签 [rdflib]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 使用 owl:Class 前缀与 rdflib 和 xml 序列化
我想owl:
在我的 RDF 本体的 XML 序列化中使用前缀(使用 rdflib 版本 4.1.1);不幸的是,我仍然将序列化作为rdf:Description
标签。我已经在RDFLib: Namespace prefixes in XML serialization 中查看了关于将命名空间绑定到图形的答案,但这似乎只在使用ns
格式而不是xml
格式进行序列化时才有效。
让我们更具体一点。我正在尝试在 XML 中获取以下本体(取自Introducing RDFS and OWL),如下所示:
这是构建这样一个东西的python代码,使用rdflib
:
遗憾的是,即使使用这些绑定语句,仍会打印以下 XML:
owl
当然,这仍然是一个本体,并且可用 - 但由于我们有各种编辑器,使用前缀的更紧凑和可读的第一个版本将是更可取的。是否可以在rdflib
不覆盖序列化方法的情况下做到这一点?
更新
作为对评论的回应,我将把我的“奖金问题”改写为对我的整个问题的简单澄清。
不是一个额外的问题这里的主题涉及 OWL 命名空间格式化本体的构造,它是更冗长的 RDF/XML 规范的简写。这里的问题比简单地为类或属性的简写声明命名空间前缀要大,有许多简写符号必须在代码中处理;例如,owl:Ontology
描述应该作为良好的形式添加到这个符号中。我希望 rdflib 支持符号的完整规范——而不是必须滚动我自己的序列化。
sparql - 使用 IPython Notebook(使用 rdflib?)记录 SPARQL 查询和结果
我想使用 IPython Notebook 来记录 SPARQL 查询以及这些查询的结果。
由于任何命令行工具都可以从 IPython Notebook 中通过“bang”调用,我当然可以运行:
或者使用 roqet,我什至可以在命令本身中嵌入一个简短的查询:
arq 或 roqet 都不接受多行 SPARQL 查询作为参数。任何长于单行的查询都必须存储在文件中(例如,如上的“test1.rq”)。
更好的是直接在 IPython Notebook 单元中定义 SPARQL 查询,在那里它们可以很容易地被克隆和调整。以下作品:
但是,我没有看到传递指定要查询的数据源的 SPARQL 查询的方法,例如:
或者,至少,改进函数,使其至少采用一个文件名作为参数,如
我在 Google 上搜索了将 IPython Notebook 与 SPARQL 结合使用的示例,但没有找到。对于为数据探索而设计的环境,这似乎是一个明显的用途。我发现真正有效的唯一方法是运行 arq,但随后需要这样做
将查询粘贴到 IPython Notebook 中,它实现了记录探索数据过程的功能,但查询必须与 notebook 并行编辑,作为单独的文件。我的目标是让初学者更容易使用 SPARQL 探索 RDF 数据,并将他们的探索记录在笔记本中。一定会有更好的办法!
更新:
@Joshua Taylor,@AndyS 指出这些命令接受多行查询作为参数。这在 bash 提示符下可以正常工作,但不幸的是在 IPython Notebook 中不行,这会引发 SyntaxError:
如果我在第 1 行中转义行尾,如
但是,我无法通过转义所有行尾来执行整个命令。
所以也许问题不在于 arq 和 roqet 如何处理内联查询,而在于这些 arq 和 roqet 命令行如何传递给 IPython Notebook?
switch-statement - SPARQL BIND 打破了价值?
我最近在许多 SPARQL 查询中使用了 VALUES,只是意识到在其中一个查询中我没有得到我期望的结果。
这是一个简单的案例:
我正在使用 VALUES 将 nsA5080 文字“翻译”为 URI。简单查询:
按预期工作:
但如果我将其更改为:
我正进入(状态:
这对我没有任何意义。额外的元组从何而来?在真正的查询中,我有 ca。VALUES 中有 30 多个元组,它们都落在结果中。还有什么更有趣的查询,看起来几乎像那个查询 - 在其他任何地方都可以正常工作。
想法?
python - rdflib 中的 ASK SPARQL 查询
我正在尝试学习 SPARQL,并且正在使用 python 的 rdflib 进行训练。我做了几次尝试,但任何 ASK 查询似乎总是给我一个 True 结果。例如,我尝试了以下方法:
结果为真,即使 'try.ttl' 中没有 false.com 类型的主题。谁能解释我为什么?预先感谢您的帮助!
更新:阅读 rdflib 手册,我发现 results 的类型是 list 并且(在我的情况下)应该包含一个带有来自 ask 查询的返回值的布尔值。我尝试了以下方法: for x in results: print x 我得到了“无”。我猜我没有以正确的方式使用查询方法。
python - Python rdflib 嵌套元素
我有一个想要修改的现有 rdf 图表。我想在n变量中添加信息。
输出:
一切几乎都是正确的,但我希望它在两个方面有所不同:
- 我希望只有一个包含两个条目的 rdf:Description 部分。
- 我希望ns1别名是symp
谢谢您的帮助!
rdf - 如何进行 RDF 本体匹配
在两个本体之间执行匹配的最佳方法是什么,以便我可以获得两个本体之间的相似度分数,这可以使集成工作变得容易(来自不同 RDF 的数据的集成)
python - 在 ubuntu 12.04 上安装 RDFlib
我正在尝试在 ubuntu 12.04 上安装 RDFlib,但无法这样做。我已经下载了一个 zip 文件并正在运行 python setup.py install 但出现错误需要鼻子。尝试:
但是当我尝试安装鼻子时,它没有安装你能告诉我该怎么做,因为我对鼻子一无所知
我也尝试过easy_install rdflib,但它也不适合我。
python - rdflib 和 NCName 错误
由于未在 RDF/XML 文件中遵守 NCName 约定而出现错误。很明显,它没有受到尊重,并且在许多地方都可以找到。有什么办法可以解决这个问题,因为我对输出文件没有任何控制权?
基本代码如下所示:
错误是这样的:
回溯(最近一次通话最后):
违规位是 ELK-09-14_10:39:59_NAME 中的冒号。文档中还有很多其他示例,例如以数字开头的其他问题。
该代码将开发成可以导入neo4j的东西,所以如果我要解决这一切都错了,我欢迎任何其他方法。
python - 从 rdflib.term.Literal 中提取数据类型和标签名称
我正在通过 python rdflib 执行 sparql 查询,例如
我的目标是以这种方式获得概念的标签。结果我得到了这样的东西:
从中我想提取标签和数据类型。(即本例的主韧皮筛细胞和字符串)我正在使用
在哪里
但它不起作用。我是 rdflib 的新手。有谁知道我该怎么做?
我知道我需要将结果转换为字符串作为标签,但是如果数据类型不是字符串并且我想获取数据类型怎么办
python - 使用 wordnet nltk 确定上位词或下位词
我想检查两个词(由用户给出)之间的上位词/下位词关系,这意味着它们中的任何一个都可以是其他词的上位词,也可能是两者之间没有上位词关系。我可以使用 path_similarity同样。我正在尝试这样做。如果您可以为此建议任何更好的方法。我还想知道从 sparql 查询中检查相同的方法是否更好