2016-09-18 74 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」)'更清楚嗎?再次,它避免了正則表達式匹配器的任何問題,就像字符串文字包含正則表達式的字符一樣,比如「。」。 –