gpt4 book ai didi

rdf - 无法通过本地定义的谓词提取 RDF 三元组

转载 作者:行者123 更新时间:2023-12-04 13:53:55 24 4
gpt4 key购买 nike

可能我只是无法掌握本体背后的一些基本概念,但这是我的问题。我正在尝试使用指定谓词的 SPARQL 查询从 RDF 存储(使用 4store,但也尝试过 XML ArmyKnife)中提取三元组并获得空结果。

为了确保我不会混淆 RDF 语法,我使用 LUBM 生成的数据(精简为适合示例的大小)。

<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF
xml:base = "http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl"
xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:ub="univ-bench.owl#"
>

<owl:DatatypeProperty rdf:ID="name">
<rdfs:label>name</rdfs:label>
</owl:DatatypeProperty>

<owl:Class rdf:ID="Organization">
<rdfs:label>organization</rdfs:label>
</owl:Class>

<owl:Class rdf:ID="University">
<rdfs:label>university</rdfs:label>
<rdfs:subClassOf rdf:resource="#Organization" />
</owl:Class>

<ub:University rdf:about="http://www.University0.edu">
<ub:name>University0</ub:name>
</ub:University>

</rdf:RDF>

然后我运行查询以查看导入后我的数据库实际包含的三元组:
SELECT * WHERE {?s ?p ?o} ORDERBY ?s

结果如下:
<http://www.University0.edu>    <univ-bench.owl#name>   "University0"
<http://www.University0.edu> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <univ-bench.owl#University>
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#Organization> <http://www.w3.org/2000/01/rdf-schema#label> "organization"
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#Organization> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class>
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#University> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#Organization>
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#University> <http://www.w3.org/2000/01/rdf-schema#label> "university"
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#University> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#Class>
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#name> <http://www.w3.org/2000/01/rdf-schema#label> "name"
<http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#name> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2002/07/owl#DatatypeProperty>

很明显我有 <univ-bench.owl#name>谓词作为第一个三元组的一部分。

尽管如此,以下查询不返回任何结果:
SELECT * WHERE {?s <univ-bench.owl#name> ?o}

我已经尝试了几十种组合,有命名空间和没有命名空间,但不能让它工作。谁能解释为什么 RDF 引擎找不到明显存在的谓词?

顺便说一句,使用 OBJECT="University0"提取相同的三元组可以正常工作。

最佳答案

这是无效的:
xmlns:ub="univ-bench.owl#"
命名空间 URI 在 RDF/XML 中必须是绝对的。 (它们在 Turtle 等其他语法中可能是相对的,但在 RDF/XML 中则不然。)如果您的示例确实是由 LUBM 直接生成的,那么 LUBM 就被破坏了。这应该有效:
xmlns:ub="http://www.lehigh.edu/~zhp2/2004/0401/univ-bench.owl#"
那么当然你需要像@RobV 所说的那样在 SPARQL 查询中匹配那个 URI。

关于rdf - 无法通过本地定义的谓词提取 RDF 三元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7145502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com