2016-04-02 6 views
2

Я хочу сделать текстовые представления графика RDF с черепахой. В качестве примера - отношение между Человеком-пауком и Зеленом Гоблином. Смотрите ссылку здесь https://www.w3.org/TR/turtle/Текстовое представление RDF с черепахой

@base <http://example.org/> . 
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . 
@prefix foaf: <http://xmlns.com/foaf/0.1/> . 
@prefix rel: <http://www.perceive.net/schemas/relationship/> 

<#green-goblin> 
    rel:enemyOf <#spiderman> ; 
    a foaf:Person ; # in the context of the Marvel universe 
    foaf:name "Green Goblin" . 
<#spiderman> 
    rel:enemyOf <#green-goblin> ; 
    a foaf:Person ; 
    foaf:name "Spiderman", "Человек-паук"@ru . 

Что делает запятой (,) означает, между «Человек-паук» и русское слово?

Еще один важный вопрос: как я могу это сделать с городом и страной с течением времени? Например: Лейпциг принадлежал к DDR до 1990 года. Сегодня Лейпциг - город в Германии.

+1

Как вы можете _what_ с городом и страной с течением времени? Не совсем понятно, что вам нужно, или ваш «другой вопрос» связан с вашим примером Человека-паука и Зеленого Гоблина. –

ответ

3

Похоже на два очень разных вопроса. Один по синтаксису и один по моделированию.

Для проблемы синтаксиса я бы предложил посмотреть на 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 приведет к двум результатам, является правильным, учитывая, что в этой примерной модели используются годы вместо дат.

+0

Хорошо, это очень помогает, благодарю вас за подробную информацию. Теги или слова, такие как isMemberOfCountry или страна, являются свободными тегами. которые должны использоваться логически или? – Mchoeti

+2

Эти слова не «слова», а URI - объекты. Поэтому, учитывая приведенное выше префиксное выражение, ex: isMemberOfCountry расширяется до . Некоторые исследования документов RDF/Turtle, которые мы оба разместили здесь, должны сделать это более ясным. – scotthenninger

+1

Обратите внимание, что Turtle является Рекомендацией W3C: https://www.w3.org/TR/turtle/ (ваша ссылка на более старый черновик) – unor