Я согласен с другими респондентами в том, что вам не следует беспокоиться о синтаксисе XML, но я бы также не советовал сразу думать о тройках. Сначала подумайте о том, что вы пытаетесь смоделировать, тогда тройки станут более очевидными.
Итак, у вас есть вещь, ваша машина, которая является своего рода машиной. Быть любым видом автомобиля в целом и быть вашим автомобилем в частности - это два разных понятия. Таким образом, вам понадобятся два отдельных имени - RDF называет их ресурсами - для представления класса всех автомобилей и экземпляра вашего автомобиля. Кроме того, есть вещи, которые являются GPS в целом, и GPS в вашем автомобиле в частности. Предполагая подходящее пространство имен, тогда:
:car127 rdf:type :Car .
:gps99 rdf:type :GPS.
Это тройное выражение, означающее, что данный автомобиль (субъект car127
) является членом (предикат rdf:type
) класса всех автомобилей (объект Car
) и аналогичным образом относится к GPS.
Ваша машина принадлежит Нине, которая является человеком. Итак, это еще два отношения: одно говорит о том, что Нина - человек, а другое - о том, что Нина владеет этим конкретным автомобилем (повторно используя тот же ресурс, идентифицирующий автомобиль):
:nina rdf:type foaf:Person.
:nina foaf:name "Nina".
:car127 :ownedBy :nina.
(ОК, я добавил дополнительную тройку, чтобы связать URI ресурса :nina
с именем Нина).
Определенный GPS является компонентом конкретного автомобиля:
:car127 :containsComponent :gps99.
Теперь мы неофициально говорим, что GPS «имеет» заданную широту и длинную позицию. Ясно, что они меняются с течением времени (если нет, получить новую машину :). Вы можете смоделировать это, используя предикаты x и y, непосредственно связанные с ресурсом GPS, и многократно обновляя значения в модели. Но если вы думаете о том, что ваш GPS дает серию показаний в определенное время, он кажется немного более понятным и более наглядным. Тогда имеем:
:gps99 :reading [
rdf:type :Reading;
:lat 51.14276;
:long -2.71619;
:at "2011-09-02T123400"^^xsd:dateTime
].
Квадратные скобки [...]
- это краткий способ представить новый ресурс, свойства которого - отношения - мы можем описать, но о личности которого мы не знаем или не заботимся. Технически это называется анонимным узлом или bNode, но сейчас не о чем беспокоиться. Достаточно отметить, что существует связь («: чтение») от устройства GPS с ресурсом типа :Reading
(обратите внимание на заглавную R - это соглашение, позволяющее отличать ресурсы, которые идентифицируют классы от других видов ресурсов). Этот ресурс чтения имеет четыре свойства: тип, наблюдаемый lat и long и время чтения. Мы могли бы, если бы захотели, добавить больше показаний для других моментов времени, что могло бы привести к моделированию дорожки ... но это другое обсуждение!