Определение мощности для оператора RDF
-
18-09-2019 - |
Вопрос
У меня проблема с RDF.У меня есть пара троек, определенных как:
<User rdf:about="#T">
<hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName>
<hasFavourite rdf:resource="#x"/>
<hasFavourite rdf:resource="#y"/>
</User>
Я хочу добавить к тройкам (user, hasFavourite, x) и (user, hasFavourite, y), так как мне нужно связать с ними целое число.Я немного не знаю, как сложить целое число с тройкой.Я уверен, что это должно быть просто, но я только разбираюсь в RDF, поэтому буду благодарен за любую помощь.
Спасибо, Элли.
Решение
Итак, если я правильно читаю вопрос и ваш комментарий к сообщению dajobe, вы, вероятно, захотите что-то вроде этого (опять же в нотации Turtle, поскольку это гораздо более читабельно):
@base <http://example.org/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <> .
:T
:hasFavourite :fave1, :fave2 ;
:hasName "T" ;
a :User .
:fave1 a :Favourite ;
:band :x ;
:playCount 10 .
:fave2 a :Favourite ;
:band :y ;
:playCount 4 .
:x a :Band ;
:hasName "Band 1" .
:y a :Band ;
:hasName "Band 2" .
Таким образом, это позволяет вам вести подсчет игр для каждого пользователя в избранном индивидуально, и каждая группа может быть выбрана в качестве избранного разными пользователями путем создания новых избранных по мере необходимости.
Конечно, я могу быть совершенно неправ, и это может быть совсем не то, что вы на самом деле хотите!
Другие советы
Мне не совсем понятно, что вы хотите здесь смоделировать;что ресурс User имеет тройки с целочисленными значениями или ресурсы X и Y имеют целочисленные значения.Я предположу последнее, поскольку оно более сложное.
<?xml version="1.0" encoding="utf-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://example.org/ns#">
<User rdf:about="#T">
<hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName>
<hasFavourite rdf:resource="#x"/>
<hasFavourite rdf:resource="#y"/>
</User>
<hasFavourite rdf:about="#x">
<integerThatMeansSomething rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</integerThatMeansSomething>
</hasFavourite>
<hasFavourite rdf:about="#y">
<integerThatMeansSomething rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</integerThatMeansSomething>
</hasFavourite>
</rdf:RDF>
В Turtle это немного легче читать:(преобразовано через rapper -q -o turtle foo.rdf 'http://example.org/ns#'
от моего Раптор программное обеспечение)
@base <http://example.org/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix : <> .
:T
:hasFavourite :x, :y ;
:hasName "T"^^<http://www.w3.org/2001/XMLSchema#string> ;
a :User .
:x
:integerThatMeansSomething 10 ;
a :hasFavourite .
:y
:integerThatMeansSomething 20 ;
a :hasFavourite .
Отказ от ответственности:Я отредактировал rdf/xml, изобрел Turtle и написал вышеуказанное программное обеспечение!
Читаю выше вроде:«T — пользователь, имеет два избранных x и y и строковое имя.X является избранным и имеет целочисленное свойство со значением 10.» и т. д.для тебя.
Если бы это было первое, то rdf/xml был бы проще:
<User rdf:about="#T">
<hasName rdf:datatype="http://www.w3.org/2001/XMLSchema#string">T</hasName>
<hasFavourite rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">10</hasFavourite>
<hasFavourite rdf:datatype="http://www.w3.org/2001/XMLSchema#integer">20</hasFavourite>
</User>