2016-09-18 73 views
-1

查询龟文件时作出筛选我应该提到我在语义网络世界初学者。我的乌龟文件有以下结构:如何使用SPARQL

@prefix ns0: <http://www.cws.org/ep/01#> . 
@prefix dc: <http://purl.org/dc/terms/> . 
@prefix gr: <http://purl.org/goodrelations/v1#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .  
#... 
     <file:///C:/Users/Anis/Downloads/usdl-editor-master/usdl-editor-master/index.html#OSZwMOW5JiZTlJXb7> 
      a ns0:GuaranteedState ; 
      ns0:executionParameterType [ 
      a ns0:executionParameterType ; 
      dc:description "Description Inpuuut" ; 
      ns0:hasVariable <file:///C:/index.html#ekHCp7iFi1aEWM7QQ> 

      ] ; 
      dc:title "Input" . 

     <file:///C:/index.html#ekHCp7iFi1aEWM7QQ> 
      a ns0:Variable ; 
      ns0:hasDefault [ 
      a gr:QuantitativeValue ; 
      gr:hasValue "document.csv" ; 
      gr:hasUnitOfMeasurement "csv" 
      ] ; 
      rdfs:label "test1" . 
    #... 

我正在尝试过滤dc:title = "Input"

这是我的查询,我拿什么来补充?

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX ns0: <http://www.cws.org/ep/01#> 
PREFIX dc: <http://purl.org/dc/terms/> 
PREFIX gr: <http://purl.org/goodrelations/v1#> 
SELECT * 
WHERE { 

      ?path dc:title ?x 

} 

My query result显示器始终是“@”。我不知道这是什么意思?

回答

-1

该问题已修复。 在我的情况下,我必须将@whatever(例如“@en”)添加到我的结构文件中。然后我将此行添加到我的查询中:FILTER(?x =“Input” @en)。 下面我的查询:

PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
PREFIX owl: <http://www.w3.org/2002/07/owl#> 
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> 
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
PREFIX ns0: <http://www.cws.org/ep/01#> 
PREFIX dc: <http://purl.org/dc/terms/> 
PREFIX gr: <http://purl.org/goodrelations/v1#> 
SELECT * 
WHERE { 
?path dc:title ?x . 
FILTER (?x = "Input"@en) 
} 
+0

由于您问题中的示例数据不包含语言标记,因此这实际上并不回答您提问的问题。 –

+0

尽管我的文件中没有“@sth ..”,但查询结果显示始终带有“@”。此外,就在过滤器(X =“输入” @)不工作,所以对我来说,我在文件结构中增加“@en”然后我应用的过滤器(X =“输入” @en)和它的工作原理。 –

0

这只是一个想法,但我认为一个FILTER条款可能是你需要的东西:

FILTER(?x = "Input") 

应该做的伎俩。

+0

问题是固定的。我加入@whatever(例如,“@en”。)在我的结构文件,然后我添加以下行到我querry:FILTER(X =“输入“@en)这就是我的意思,在我的情况下”@en“是必需的。 –

1

如果完全匹配会得到你想要的东西,然后直接指定在三网融合模式,例如:

SELECT ?path 
WHERE { 
    ?path dc:title "Title" . 
} 

..这得到具有用于dc:title属性的值“标题”任何?path。例如,<file:///C:/Users/Anis/Downloads/usdl-editor-master/usdl-editor-master/index.html#OSZwMOW5JiZTlJXb7>将在您的示例中匹配。

如果比赛不准确,然后用FILTERregex()应该工作。

SELECT ?path 
WHERE { 
    ?path dc:title ?x . 
    FILTER regex(?x, "Title", "i") 
} 

...它匹配任何dc:title属性与字符串中的“标题”,不区分大小写。

+1

而不是正则表达式,我宁愿使用'title'= lcase(?title)'来不区分大小写。否则,如果文字标题中的字符在正则表达式模式中有意义,那么您将进行比您计划更多的匹配。例如,任何。将匹配任何字符,和$ ^和将匹配行结束,等 –

+0

在第二个例子中的假设是,他们正在寻找精确匹配,不区分大小写的匹配。在这种情况下,它会匹配任何带有“title”的字符串。 – scotthenninger

+0

如果假设“是他们正在寻找的精确匹配,不区分大小写匹配”,则[“i”的标志(https://www.w3.org/TR/xpath-functions/#flags ),这会使匹配不区分大小写,应该不包含**。但即使如此,对于不区分大小写的遏制匹配,不是'contains(?x,“Title”)'更清楚吗?再次,它避免了正则表达式匹配器的任何问题,就像字符串文字包含正则表达式的字符一样,比如“。”。 –