IRI - это просто непрозрачные идентификаторы. Хотя мы говорим о связанных данных и семантической сети, семантика rdfs:member
значение, присвоенное свойству, определяется за пределами семантической сети (надеюсь, по хорошей документации, которая должна, конечно, быть связана с этим свойством как rdfs:comment
или тому подобное), а также с использованием. Для rdfs:member
, описание исходит из ФРР рекомендации:
5.1.6 rdfs:member
RDFS: член является экземпляром РДФ: Имущество, которое является супер-свойством всех членских контейнера свойств, т.е. каждое свойство членства контейнер имеет отношение rdfs: subPropertyOf к свойству rdfs: member.
rdfs: домен rdfs: member is rdfs: Resource. Rdfs: диапазон rdfs: member - rdfs: Resource.
Членские контейнера свойства описаны в том же документе:
rdfs:ContainerMembershipProperty
RDFS: класс ContainerMembershipProperty имеет как экземпляры свойства RDF: _1, РДФ: _2, РДФ: _3. .. которые используются для указания, что ресурс является членом контейнера. rdfs: ContainerMembershipProperty - это подкласс rdf: Property. Каждый экземпляр rdfs: ContainerMembershipProperty - это rdfs: subPropertyOf свойство rdfs: member.
Учитывая контейнер С, тройных форм:
С РДФОМ: _nnn О
, где NNN представляет собой десятичное представление целого числа больше 0, без ведущих нулей, состояния что O является членом контейнера C.
Свойства членства в контейнере могут применяться к ресурсам, отличным от контейнеров.
Я был на самом деле немного удивился, прочитав эту последнюю строку, но так как членские свойства и rdfs:member
могут быть применены к другим, чем контейнеры ресурсов, кажется, это было бы приемлемо использовать их на своих собственных структур данных.
Несмотря на это, было бы более уместным определить ваше собственное более конкретное свойство и просто утверждать, что это подкласс от rdfs:member
. Например, вы можете указать, что свойство politics:memberStateOf
, относящее национальное государство к некоторому многонациональному союзу, является rdfs:subPropertyOf rdfs:member
.
Консультации по документации словарей - хорошая идея и в других ситуациях. Например, the examples на странице RDFLib действительно включают некоторое использование FOAF:
from rdflib import RDF
...
# Create a namespace object for the Friend of a friend namespace.
FOAF = Namespace("http://xmlns.com/foaf/0.1/")
...
# Add triples using store's add method.
store.add((donna, RDF.type, FOAF["Person"]))
store.add((donna, FOAF["nick"], Literal("donna", lang="foo")))
То, как FOAF используется здесь (который немного отличается в вашем вопросе, возможно, есть библиотека для него сейчас) с передаваемые строки зависят от того, что известно, какие URI должны существовать, и эта информация доступна в FOAF specification. Хотя кажется, что RDF
пространства имен имеют некоторые символические константы определены (например, RDF.type
), the documentation говорит, что RDF.type
фактически эквивалентно RDF['type']
:
Полностью квалифицированные идентификаторы URI в пространстве имен могут быть построены либо атрибутом или словаря доступа на пространства имен экземпляров:
>>> owl.seeAlso
rdflib.term.URIRef(u'http://www.w3.org/2002/07/owl#seeAlso')
>>> owl['seeAlso']
rdflib.term.URIRef(u'http://www.w3.org/2002/07/owl#seeAlso')
Спасибо большое, Иисус! Указатели на документацию RDFS и FOAF очень полезны! и я действительно задавался вопросом, должен ли я определять свойства самостоятельно. Идея subproperty великолепна! – freesoil
Я бы хотел, чтобы rdflib предоставил функцию для перечисления всех свойств под пространством имен :) В отдельном примечании, учитывая столько пространств имен RDF, где нет простого способа исследовать и перемещаться, скоро нам понадобятся презентации RDF для всех пространств имен RDF :) – freesoil
@freesoil Я не знаю, включает ли RDFlib что-то подобное, но Йена определяет ряд [классов лексики] (http://jena.apache.org/documentation/javadoc/jena/com/hp/hpl/ jena/vocabulary/package-summary.html), которые имеют константы для различных свойств и классов в пространстве имен, например ['RDFS.member'] (http://jena.apache.org/documentation/javadoc/jena/com /hp/hpl/jena/vocabulary/RDFS.html#member). Jena включает инструмент [schemagen] (http://jena.apache.org/documentation/tools/schemagen.html) для автоматического создания этих классов. Возможно, вы могли бы сделать что-то подобное с rdflib. –