Использование типизированного URI в кунжутном парусе openrdf

Мой вопрос простой, но, возможно, бессмысленный. (в таком случае извините людей, которые потратят время, чтобы объяснить мне, почему) Я хотел бы создать такой ресурс (здесь я не показываю всю декларацию ресурса):

<owl:DatatypeProperty rdf:about="relation:isPartOf">
    <rdfs:domain rdf:resource="http://www.w3.org/2004/02/skos/core#note"/>
    <rdfs:range rdf:resource="http://www.w3.org/2001/XMLSchema#anyURI"/>
</owl:DatatypeProperty>

<rdf:Description rdf:about="resource:context:sc#c1">
<skos:note rdf:datatype="relation:isPartOf" rdf:resource="resource:context:sc#c2">
    </skos:note>
</rdf:Description>

Важно обратить внимание на тройку об отношении skos:note
Тема : c1 a uri. Predicate : a skos:note , Object : a typed URI Мой URI не является прямым URI, а является uri типа "relation;isPartOf". Для этого я создаю собственный класс typedUri / я использовал самодельный тройной магазин, поэтому я могу использовать свой собственный класс. Я немного изменил RDFXMWritter, чтобы вывести этот пример. так что "работает". Мой вопрос больше: можно ли ввести URI следующим образом? почему сезам openrdf не предоставляет класс TypedURI? Я уверен, что есть веская причина? любая помощь, идеи или ответы были бы хорошими.

я совершенно уверен, что моя идея создать класс TypedURi где-то ошибочна. но где ? :-) Спасибо

РЕДАКТИРОВАТЬ: TypedURI на самом деле не является новым видом ресурса. URI в моем контексте все еще URI. я просто заявляю, что внутри моего оператора skos:note для c1 объект оператора представляет собой данные типа «relation:isPartOf», а диапазон данных представляет собой anyURI. ... TypedURI помогает реализовать тип данных с таким диапазоном.


person roky76    schedule 20.01.2014    source источник


Ответы (1)


Прежде всего: нет, URI не может быть набран таким образом в RDF. Что также отвечает на ваш второй вопрос: OpenRDF Sesame не предоставляет эту функциональность, потому что она не является частью модели RDF.

Типирование URI (или, точнее, ресурсов, которые идентифицируются с помощью URI) выполняется с использованием отношения rdf:type, связывающего URI ресурса с URI класса. Например, чтобы сделать ресурс ex:p1 типа foaf:Person, мы должны сказать (используя синтаксис Turtle для RDF):

ex:p1 rdf:type foaf:Person .

В RDF есть еще один вид типизации, а именно типизация данных. Это относится только к литеральным значениям, поэтому его нельзя использовать в URI. Он используется, чтобы сделать буквальное значение строкой, целым числом, датой и т. д.

Обновить может возникнуть путаница, поскольку xsd:anyURI является допустимым типом данных в RDF и (в XML-схеме) определен как тип для URI. Однако при использовании типа данных в RDF его лексическое пространство всегда является литералом (просто потому, что спецификация разрешает только литералам фактически иметь тип данных). Таким образом, вы действительно можете сделать что-то вроде этого (используя синтаксис черепахи для буквального обозначения):

"http://www.example.org/some/uri"^^xsd:anyURI  

Но с точки зрения модели RDF это не URI, а литеральная строка (с типом данных xsd:anyURI). Так что в некотором смысле да, вы можете добавлять типы к URI в RDF, но вы можете сделать это, только сначала «преобразовав» их в литералы.

person Jeen Broekstra    schedule 20.01.2014
comment
но где спецификация RDF, в которой говорится, что мы не можем создать такой тип данных с любым URI в качестве диапазона? что я могу прочитать, так это то, что типы данных полезно использовать с такими значениями, как логическое значение и т. д., но я не вижу спецификации, в которой говорится, что anyUri невозможен? - person roky76; 20.01.2014
comment
специально читая w3.org/TR/2004/REC-rdf-mt-20040210/#DTYPEINTERP , проверяя xsd , любой URI внутри... - person roky76; 20.01.2014
comment
ваш обновленный ответ хорош для меня. Спасибо за уделенное время. поэтому я лучше понимаю, почему кунжут не должен предоставлять для этого новый класс. - person roky76; 21.01.2014