Я пытаюсь найти лучший способ моделирования отношения собственности/класса с JSON-LD. Я пытаюсь поддерживать классы, которые могут делиться свойствами.Моделирование отношения свойств класса json-LD
В первом примере используется то, что, по моему мнению, является распространенным способом достижения этого (хотя schema.org использует размещенное свойство http://schema.org/domainIncludes вместо домена rdfs:).
Однако я думаю, что мой случай использования будет лучше описать, указывая на свойства из класса, как в примере 2.
Ex 1) См ИСС: домен в свойствах.
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"project": "http://wwww.hello.com#"
},
"@graph": [
{
"@id": "project:ClassOne",
"@type": "rdfs:Class",
"rdfs:label": "ClassOne"
},
{
"@id": "project:ClassTwo",
"@type": "rdfs:Class",
"rdfs:label": "ClassOne"
},
{
"@id": "project:propertyOne",
"@type": "rdf:Property",
"rdfs:label": "propertyOne",
"rdfs:range": "xsd:string",
"rdfs:domain": [
{ "@id":"project:ClassOne" },
{ "@id":"project:ClassTwo" },
]
},
{
"@id": "project:PropertyTwo",
"@type": "rdf:Property",
"rdfs:label": "PropertyTwo",
"rdfs:range": "xsd:string",
"rdfs:domain": [
{ "@id":"project:ClassOne" }
]
}
]
}
Ex 2) Вместо использования доменов по свойствам укажите свойства из классов. Используйте ref: isDefinedBy или project: custom/propertyList как два возможных способа. Я бы использовал один или другой, а не оба.
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"rdfs": "http://www.w3.org/2000/01/rdf-schema#",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"project": "http://wwww.hello.com#"
},
"@graph": [
{
"@id": "project:ClassOne",
"@type": "rdfs:Class",
"rdfs:label": "ClassOne",
"rdfs:isDefinedBy": [
{ "@id":"project:propertyOne" },
{ "@id":"project:propertyTwo" }
]
},
{
"@id": "project:ClassTwo",
"@type": "rdfs:Class",
"rdfs:label": "ClassOne",
"project:custom/propertyList": [
{ "@id":"project:propertyTwo" }
]
},
{
"@id": "project:propertyOne",
"@type": "rdf:Property",
"rdfs:label": "propertyOne",
"rdfs:range": "xsd:string"
},
{
"@id": "project:propertyTwo",
"@type": "rdf:Property",
"rdfs:label": "propertyTwo",
"rdfs:range": "xsd:string"
}
]
}
Имеет ли это смысл, или я вообще чего-то не хватает? Причина, по которой я не хочу использовать домен в свойствах, заключается в том, что я пытаюсь создать фреймворк, в котором классы из разных «проектов» могут делиться свойствами, и не имеет смысла, чтобы свойство в проекте1 имело домен класс в проекте2.
Однако имеет смысл использовать класс в проекте1 для использования свойства в проекте2.
Хорошо, я подумаю об этом больше, я не верю, что я квалифицирован, чтобы «предложить другой способ описания словаря »с моими текущими знаниями, поэтому я добавлю обновление после нескольких исследований. – TheBigC