Похоже на два очень разных вопроса. Один по синтаксису и один по моделированию.
Для проблемы синтаксиса я бы предложил посмотреть на Turtle - Terse RDF Triple Language. Черепаха определяет тройки, которые требуют трех сущностей в спецификации тройки. .
указывает конец тройки. В качестве ярлыка ;
означает, что текущий субъект переносится на следующую тройную спецификацию - следовательно, необходимо указать только предикат и объект. A ,
означает субъект и объект переносится в следующую тройку. Поэтому
<#spiderman> foaf:name "Spiderman", "Человек-паук"@ru .
Определяет две тройки:
<#spiderman> foaf:name "Spiderman" .
<#spiderman> foaf:name "Человек-паук"@ru .
Один моделирование вопрос, чтобы указать различную национализацию Лейпцига в разных эпохах времени, указать свойство, например, isMemberOfCountry
, который имеет свойство fromDate
и toDate
. Каждый экземпляр членства страны будет тогда заполняться:
@prefix ex: <http://example.org/geoex/>
ex:Leipzig
ex:isMemberOfCountry [
ex:country ex:DDR ;
ex:fromDate 1945 ;
ex:toDate 1990 ;
] ;
ex:isMemberOfCountry [
ex:country ex:Germany ;
ex:fromDate 1990 ;
] .
Bnodes используется обеспечивает уникальные имена по всему набору данных для объекта, имя которого не имеет значения (если это произойдет, то указать объект применение вместо bnode). Затем запросить текущую страну, используйте:
SELECT ?country
WHERE {
ex:Leipzig ex:isMemberOfCountry ?member .
?member ex:country ?country .
FILTER NOT EXISTS {
?member ex:toDate ?d
}
}
И найти членство в течение определенного года, используйте следующее:
SELECT ?country
WHERE {
BIND("1991"^^xsd:integer AS ?date) #placeholder - ?date should be passed into the query
ex:Leipzig ex:isMemberOfCountry ?member .
?member ex:country ?country .
?member ex:fromDate ?fdate .
OPTIONAL {?member ex:toDate ?td}
BIND(IF(bound(?td), ?td, year(now())) AS ?edate)
FILTER (?date >= ?fdate && ?date <= ?edate)
}
Обратите внимание, что связывание ?date
с 1990 приведет к двум результатам, является правильным, учитывая, что в этой примерной модели используются годы вместо дат.
Как вы можете _what_ с городом и страной с течением времени? Не совсем понятно, что вам нужно, или ваш «другой вопрос» связан с вашим примером Человека-паука и Зеленого Гоблина. –