我想弄清楚用JSON-LD建模屬性/類關係的最佳方法。我試圖支持能夠共享屬性的類。json-LD類屬性關係建模
第一個示例使用我認爲是實現此目的的常用方法(儘管schema.org使用名爲http://schema.org/domainIncludes而不是rdfs:domain的託管屬性)。
但是我覺得我的使用情況將被指向從類屬性來更好地描述爲示例2
例1)查看RDFS:在性能域。例如:
{
"@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" }
]
}
]
}
例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"
}
]
}
這是有道理的,還是我從根本上失去了一些東西?我不想在屬性上使用域的原因是因爲我正在嘗試構建一個框架,其中來自不同'項目'的類可以共享屬性,並且對於project1中的屬性具有域project2中的一個類。
但是,project1中的類使用project2中的屬性確實有意義。
好吧我會想更多關於這個,我不相信我有資格'建議用我目前的知識來描述詞彙的不同方式,所以我會在進行更多的研究之後添加一個更新。 – TheBigC