odfmetadata4: #i110033#: API change: remove rdfs:label statements for RDFa.
css.rdf.XDocumentRepository: method getStatementRDFa() also returns a bool. librdf_repository: setStatementRDFa() no longer generates the rdfs:label statement. getStatementRDFa() no longer handles the rdfs:label statement. add a set to store elements with xhtml:content. RDFaExportHelper: adapt export to new getStatementRDFa() and lack of rdfs:label statement.
This commit is contained in:
parent
3ccd714eed
commit
9fed38e7d8
3 changed files with 87 additions and 101 deletions
|
@ -42,6 +42,7 @@ import com.sun.star.lang.WrappedTargetException;
|
|||
import com.sun.star.lang.WrappedTargetRuntimeException;
|
||||
import com.sun.star.beans.XPropertySet;
|
||||
import com.sun.star.beans.PropertyValue;
|
||||
import com.sun.star.beans.Pair;
|
||||
import com.sun.star.beans.StringPair;
|
||||
import com.sun.star.container.XEnumerationAccess;
|
||||
import com.sun.star.container.XEnumeration;
|
||||
|
@ -689,23 +690,25 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
|
|||
log.println("Checking RDFa in loaded test document...");
|
||||
|
||||
XMetadatable xPara;
|
||||
Statement[] stmts;
|
||||
Pair<Statement[], Boolean> result;
|
||||
|
||||
Statement x_FooBarLit1 = new Statement(foo, bar, mkLit("1"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 1",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit1
|
||||
}));
|
||||
|
||||
Statement x_FooBarLit2 = new Statement(foo, bar, mkLit("2"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 2",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit2
|
||||
}));
|
||||
|
||||
|
@ -713,37 +716,40 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
|
|||
new Statement(blank1, bar, mkLit("3"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 3",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_BlankBarLit3
|
||||
}));
|
||||
XBlankNode b3 = (XBlankNode) UnoRuntime.queryInterface(
|
||||
XBlankNode.class, stmts[0].Subject);
|
||||
XBlankNode.class, result.First[0].Subject);
|
||||
|
||||
Statement x_BlankBarLit4 =
|
||||
new Statement(blank2, bar, mkLit("4"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 4",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_BlankBarLit4
|
||||
}));
|
||||
XBlankNode b4 = (XBlankNode) UnoRuntime.queryInterface(
|
||||
XBlankNode.class, stmts[0].Subject);
|
||||
XBlankNode.class, result.First[0].Subject);
|
||||
|
||||
Statement x_BlankBarLit5 =
|
||||
new Statement(blank1, bar, mkLit("5"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 5",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_BlankBarLit5
|
||||
}));
|
||||
XBlankNode b5 = (XBlankNode) UnoRuntime.queryInterface(
|
||||
XBlankNode.class, stmts[0].Subject);
|
||||
XBlankNode.class, result.First[0].Subject);
|
||||
|
||||
assure("RDFa: 3 != 4",
|
||||
!b3.getStringValue().equals(b4.getStringValue()));
|
||||
|
@ -754,9 +760,10 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
|
|||
Statement x_FooBazLit6 = new Statement(foo, baz, mkLit("6"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 6",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit6, x_FooBazLit6
|
||||
}));
|
||||
|
||||
|
@ -765,9 +772,10 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
|
|||
Statement x_FooFooLit7 = new Statement(foo, foo, mkLit("7"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 7",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit7, x_FooBazLit7, x_FooFooLit7
|
||||
}));
|
||||
|
||||
|
@ -776,43 +784,41 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
|
|||
Statement x_FooBarLit = new Statement(foo, bar, lit, null);
|
||||
Statement x_FooBarLittype = new Statement(foo, bar, lit_type, null);
|
||||
|
||||
Statement x_FooLabelLit8 =
|
||||
new Statement(foo, rdfs_label, mkLit("8"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 8",
|
||||
eq(stmts, new Statement[] {
|
||||
x_FooBarLit, x_FooLabelLit8
|
||||
result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit
|
||||
}));
|
||||
|
||||
Statement x_FooLabelLit9 =
|
||||
new Statement(foo, rdfs_label, mkLit("9"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 9",
|
||||
eq(stmts, new Statement[] {
|
||||
x_FooBarLit, x_FooLabelLit9
|
||||
result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit
|
||||
}));
|
||||
|
||||
Statement x_FooLabelLit10 =
|
||||
new Statement(foo, rdfs_label, mkLit("10"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 10",
|
||||
eq(stmts, new Statement[] {
|
||||
x_FooBarLittype, x_FooLabelLit10
|
||||
result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLittype
|
||||
}));
|
||||
|
||||
Statement x_FooBarLit11
|
||||
= new Statement(foo, bar, mkLit("11", bar), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 11",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit11
|
||||
}));
|
||||
|
||||
|
@ -821,66 +827,67 @@ public class DocumentMetadataAccessTest extends ComplexTestCase
|
|||
new Statement(xFile, bar, mkLit("12"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 12",
|
||||
eq(stmts, new Statement[] {
|
||||
!result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FileBarLit12
|
||||
}));
|
||||
|
||||
Statement x_FooLabelLit13 =
|
||||
new Statement(foo, rdfs_label, mkLit("13"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 13",
|
||||
eq(stmts, new Statement[] {
|
||||
x_FooBarLit, x_FooLabelLit13
|
||||
result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit
|
||||
}));
|
||||
|
||||
Statement x_FooLabelLit14 =
|
||||
new Statement(foo, rdfs_label, mkLit("14"), null);
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 14",
|
||||
eq(stmts, new Statement[] {
|
||||
x_FooBarLit, x_FooLabelLit14
|
||||
result.Second &&
|
||||
eq(result.First, new Statement[] {
|
||||
x_FooBarLit
|
||||
}));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 15", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 15", eq(result.First, new Statement[] { } ));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 16", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 16", eq(result.First, new Statement[] { } ));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 17", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 17", eq(result.First, new Statement[] { } ));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 18", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 18", eq(result.First, new Statement[] { } ));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 19", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 19", eq(result.First, new Statement[] { } ));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 20", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 20", eq(result.First, new Statement[] { } ));
|
||||
|
||||
xPara = (XMetadatable) UnoRuntime.queryInterface(
|
||||
XMetadatable.class, xEnum.nextElement());
|
||||
stmts = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 21", eq(stmts, new Statement[] { } ));
|
||||
result = xRep.getStatementRDFa(xPara);
|
||||
assure("RDFa: 21", eq(result.First, new Statement[] { } ));
|
||||
|
||||
log.println("...done");
|
||||
|
||||
|
|
|
@ -53,8 +53,6 @@ private:
|
|||
::com::sun::star::uno::Reference<
|
||||
::com::sun::star::rdf::XDocumentRepository> m_xRepository;
|
||||
|
||||
::rtl::OUString m_RDFsLabel;
|
||||
|
||||
typedef ::std::map< ::rtl::OUString, ::rtl::OUString >
|
||||
BlankNodeMap_t;
|
||||
|
||||
|
|
|
@ -95,11 +95,6 @@ RDFaExportHelper::RDFaExportHelper(SvXMLExport & i_rExport)
|
|||
OSL_ENSURE(xRS.is(), "AddRDFa: model is no rdf::XRepositorySupplier");
|
||||
if (!xRS.is()) throw uno::RuntimeException();
|
||||
m_xRepository.set(xRS->getRDFRepository(), uno::UNO_QUERY_THROW);
|
||||
|
||||
const uno::Reference<rdf::XURI> xLabel(
|
||||
rdf::URI::createKnown(m_rExport.GetComponentContext(),
|
||||
rdf::URIs::RDFS_LABEL));
|
||||
m_RDFsLabel = xLabel->getStringValue();
|
||||
}
|
||||
|
||||
::rtl::OUString
|
||||
|
@ -128,19 +123,21 @@ RDFaExportHelper::AddRDFa(
|
|||
{
|
||||
try
|
||||
{
|
||||
uno::Sequence<rdf::Statement> stmts(
|
||||
m_xRepository->getStatementRDFa(i_xMetadatable) );
|
||||
beans::Pair< uno::Sequence<rdf::Statement>, sal_Bool > const
|
||||
RDFaResult( m_xRepository->getStatementRDFa(i_xMetadatable) );
|
||||
|
||||
if (0 == stmts.getLength())
|
||||
uno::Sequence<rdf::Statement> const & rStatements( RDFaResult.First );
|
||||
|
||||
if (0 == rStatements.getLength())
|
||||
{
|
||||
return; // no RDFa
|
||||
}
|
||||
|
||||
// all stmts have the same subject, so we only handle first one
|
||||
const uno::Reference<rdf::XURI> xSubjectURI(stmts[0].Subject,
|
||||
uno::UNO_QUERY);
|
||||
const uno::Reference<rdf::XBlankNode> xSubjectBNode(stmts[0].Subject,
|
||||
const uno::Reference<rdf::XURI> xSubjectURI(rStatements[0].Subject,
|
||||
uno::UNO_QUERY);
|
||||
const uno::Reference<rdf::XBlankNode> xSubjectBNode(
|
||||
rStatements[0].Subject, uno::UNO_QUERY);
|
||||
if (!xSubjectURI.is() && !xSubjectBNode.is())
|
||||
{
|
||||
throw uno::RuntimeException();
|
||||
|
@ -154,47 +151,31 @@ RDFaExportHelper::AddRDFa(
|
|||
.makeStringAndClear()
|
||||
);
|
||||
|
||||
rdf::Statement* const iter
|
||||
( ::std::partition( ::comphelper::stl_begin(stmts),
|
||||
::comphelper::stl_end(stmts),
|
||||
::boost::bind(&::rtl::OUString::equals, m_RDFsLabel,
|
||||
::boost::bind(&rdf::XNode::getStringValue,
|
||||
::boost::bind(&rdf::Statement::Predicate, _1))) ) );
|
||||
|
||||
if (iter != ::comphelper::stl_end(stmts))
|
||||
const uno::Reference<rdf::XLiteral> xContent(
|
||||
rStatements[0].Object, uno::UNO_QUERY_THROW );
|
||||
const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype());
|
||||
if (xDatatype.is())
|
||||
{
|
||||
// from iter to end, all stmts should have same object
|
||||
const uno::Reference<rdf::XLiteral> xContent(
|
||||
(*iter).Object, uno::UNO_QUERY_THROW );
|
||||
const uno::Reference<rdf::XURI> xDatatype(xContent->getDatatype());
|
||||
if (xDatatype.is())
|
||||
{
|
||||
const ::rtl::OUString datatype(
|
||||
makeCURIE(&m_rExport, xDatatype) );
|
||||
m_rExport.AddAttribute(XML_NAMESPACE_XHTML,
|
||||
token::XML_DATATYPE, datatype);
|
||||
}
|
||||
if (iter != ::comphelper::stl_begin(stmts)) // there is rdfs:label
|
||||
{
|
||||
m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT,
|
||||
xContent->getValue());
|
||||
}
|
||||
const ::rtl::OUString datatype(
|
||||
makeCURIE(&m_rExport, xDatatype) );
|
||||
m_rExport.AddAttribute(XML_NAMESPACE_XHTML,
|
||||
token::XML_DATATYPE, datatype);
|
||||
}
|
||||
else
|
||||
if (RDFaResult.Second) // there is xhtml:content
|
||||
{
|
||||
OSL_ENSURE(false,"invalid RDFa: every property is rdfs:label");
|
||||
return;
|
||||
m_rExport.AddAttribute(XML_NAMESPACE_XHTML, token::XML_CONTENT,
|
||||
xContent->getValue());
|
||||
}
|
||||
|
||||
::rtl::OUStringBuffer property;
|
||||
::comphelper::intersperse(
|
||||
::boost::make_transform_iterator(
|
||||
iter, // omit RDFsLabel predicates!
|
||||
::comphelper::stl_begin(rStatements),
|
||||
::boost::bind(&makeCURIE, &m_rExport,
|
||||
::boost::bind(&rdf::Statement::Predicate, _1))),
|
||||
// argh, this must be the same type :(
|
||||
::boost::make_transform_iterator(
|
||||
::comphelper::stl_end(stmts),
|
||||
::comphelper::stl_end(rStatements),
|
||||
::boost::bind(&makeCURIE, &m_rExport,
|
||||
::boost::bind(&rdf::Statement::Predicate, _1))),
|
||||
::comphelper::OUStringBufferAppender(property),
|
||||
|
|
Loading…
Reference in a new issue