使用sparql查询turtle文件时如何制作过滤器
How to make Filter when querying turtle file using 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 总是显示“@”..我不知道这是什么意思?
这只是一个想法,但我认为 FILTER
子句可能是您所需要的:
FILTER(?x = "Input")
应该可以解决问题。
如果完全匹配会得到您想要的,则直接在三重模式中指定,例如:
SELECT ?path
WHERE {
?path dc:title "Title" .
}
..这会得到 ?path
的值 "Title" 对应 dc:title
属性。例如,<file:///C:/Users/Anis/Downloads/usdl-editor-master/usdl-editor-master/index.html#OSZwMOW5JiZTlJXb7>
将匹配您的示例。
如果匹配不准确,则使用 FILTER
和 regex()
应该可以。
SELECT ?path
WHERE {
?path dc:title ?x .
FILTER regex(?x, "Title", "i")
}
...匹配字符串中任何 dc:title
属性 和 "Title",忽略大小写。
问题已解决..
在我的例子中,我必须将@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)
}
我应该提到我是语义网络世界的初学者。我的乌龟文件具有以下结构:
@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 总是显示“@”..我不知道这是什么意思?
这只是一个想法,但我认为 FILTER
子句可能是您所需要的:
FILTER(?x = "Input")
应该可以解决问题。
如果完全匹配会得到您想要的,则直接在三重模式中指定,例如:
SELECT ?path
WHERE {
?path dc:title "Title" .
}
..这会得到 ?path
的值 "Title" 对应 dc:title
属性。例如,<file:///C:/Users/Anis/Downloads/usdl-editor-master/usdl-editor-master/index.html#OSZwMOW5JiZTlJXb7>
将匹配您的示例。
如果匹配不准确,则使用 FILTER
和 regex()
应该可以。
SELECT ?path
WHERE {
?path dc:title ?x .
FILTER regex(?x, "Title", "i")
}
...匹配字符串中任何 dc:title
属性 和 "Title",忽略大小写。
问题已解决.. 在我的例子中,我必须将@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)
}