gpt4 book ai didi

SPARQL查询大学

转载 作者:行者123 更新时间:2023-12-02 06:45:35 25 4
gpt4 key购买 nike

我正在尝试使用 SPARQL 获取大学名称:

rdf 数据如下(还有更多,但这无关紧要)。

<Organization rdf:about="http://data.semanticweb.org/organization/the-university-of-queensland">
<rdfs:label>The University of Queensland</rdfs:label>
<homepage rdf:resource="http://www.uq.edu.au/"/>
<member rdf:resource="http://data.semanticweb.org/person/jane-hunter"/>
<member rdf:resource="http://data.semanticweb.org/person/kwok-cheung"/>
<member rdf:resource="http://data.semanticweb.org/person/robert-m-colomb"/>
<name>The University of Queensland</name>
</Organization>

我编写了一个查询数据的java程序。我查询数据的字符串如下:

            queryString += "PREFIX swrc:        <http://swrc.ontoware.org/ontology#> \n";
queryString += "PREFIX dc: <http://purl.org/dc/elements/1.1/> \n";
queryString += "PREFIX foaf: <http://xmlns.com/foaf/0.1/> \n";
queryString += "PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#> \n";
queryString += "PREFIX ical: <http://www.w3.org/2002/12/cal/ical#> \n";
queryString += "PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> \n";
queryString += "PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> \n";
queryString += "PREFIX swc: <http://data.semanticweb.org/ns/swc/ontology#> \n";
queryString += "PREFIX swrc_ext: <http://www.cs.vu.nl/~mcaklein/onto/swrc_ext/2005/05#> \n";
queryString += "SELECT ?name WHERE {\n";
queryString += "?university rdfs:label ?aff . \n ?university foaf:name ?name FILTER(str(?aff)='uni') }";

不幸的是,这是不正确的,因为没有返回结果:

<?xml version='1.0' encoding='UTF-8'?> 
<sparql xmlns='w3.org/2005/sparql-results#'>
<head>
<variable name='name'/>
</head>
<results>
</results>
</sparql>

有人能指出我正确的方向吗?

附注如果可能的话,我只想获取 10 个大学名称。

最佳答案

据我所知,您假设所有大学的名称中都包含字符串“uni”

请注意,您正在检查值与字符串“uni”是否相等。您的数据集中确实不存在这样的实例。

FILTER(str(?aff)='uni') 替换为 FILTER regex(?aff, "uni", "i") 将允许您匹配包含字符串“uni”的值。它是一个带有三个参数的正则表达式过滤器。

  1. 变量
  2. 符合所描述语法的正则表达式 here
  3. 一组可选标志,在本例中,我使用了一个标志,“i”。这意味着匹配必须不区分大小写。

为了限制结果数量,您只需在查询后附加 LIMIT 关键字即可。

生成的查询应该是:

PREFIX swrc:        <http://swrc.ontoware.org/ontology#>
PREFIX dc: <http://purl.org/dc/elements/1.1/>
PREFIX foaf: <http://xmlns.com/foaf/0.1/>
PREFIX geo: <http://www.w3.org/2003/01/geo/wgs84_pos#>
PREFIX ical: <http://www.w3.org/2002/12/cal/ical#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX swc: <http://data.semanticweb.org/ns/swc/ontology#>
PREFIX swrc_ext: <http://www.cs.vu.nl/~mcaklein/onto/swrc_ext/2005/05#>
SELECT ?name WHERE {
?university rdfs:label ?aff .
?university foaf:name ?name
FILTER regex(?aff, "uni", "i")
} LIMIT 10;

关于SPARQL查询大学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13109251/

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